I am attempting to compile a converted Sucosoft S40 program iwth IL and have run into an error message 3101: Data area too large: 65535 Byte/s (63K). Maximum size: 1357101165 (30490664K). By itself the message isn't very intutitive as I cannot see which data area it is referring too. When I select the error it opens up the PLC_PRG POU so I assume that the error is in the code area, how can I prove this? I should also mention that the POU has 3791 lines (mainly calls to other FB's), does CoDeSys have a limit on the number of instructions per program or POU, if so where can I find the reference to it?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Unfortunately, the Eaton flavour of CoDeSys (XSoft-CoDeSys-2) does not seem to have this option available. I have attached a screen shot of the Target Settings from XSoft showing the target processor in case this helps.
What I have been able to determine so far is that the original author of the code used multiple instances (11) of a customised FB containing 23 Real input variables and 2 Real output variables and if I comment out 2 of the instances and their calls then the error message clears. I guess that I will need to optimise the code to make it fit into a smaller memory footprint unless there are other options to try.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
The error 3101 you get, according to the Codesys manual, means:
Zitat:
3101
"Total data too large. Maximum size: '<number>' Byte (<number>K)"
Memory is exceeded. Reduce data usage of the application.</number></number>
For XC201-EC256k, the memory layout is fixed, as you can see in the attached image.
I believe you have no other option than to optimise the code.
You can also check whether those instances are declared as retentive or global, and try to change them to local instances, if posible. You can't know for sure if the memory is exceeded only in one of these areas, but you can give it a try.
Lucian
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi,
I am attempting to compile a converted Sucosoft S40 program iwth IL and have run into an error message 3101: Data area too large: 65535 Byte/s (63K). Maximum size: 1357101165 (30490664K). By itself the message isn't very intutitive as I cannot see which data area it is referring too. When I select the error it opens up the PLC_PRG POU so I assume that the error is in the code area, how can I prove this? I should also mention that the POU has 3791 lines (mainly calls to other FB's), does CoDeSys have a limit on the number of instructions per program or POU, if so where can I find the reference to it?
change the datablocksize in the resource menu.
Thanks for the reply shooter.
Unfortunately, the Eaton flavour of CoDeSys (XSoft-CoDeSys-2) does not seem to have this option available. I have attached a screen shot of the Target Settings from XSoft showing the target processor in case this helps.
What I have been able to determine so far is that the original author of the code used multiple instances (11) of a customised FB containing 23 Real input variables and 2 Real output variables and if I comment out 2 of the instances and their calls then the error message clears. I guess that I will need to optimise the code to make it fit into a smaller memory footprint unless there are other options to try.
Hello, wpuser.
The error 3101 you get, according to the Codesys manual, means:
For XC201-EC256k, the memory layout is fixed, as you can see in the attached image.
I believe you have no other option than to optimise the code.
You can also check whether those instances are declared as retentive or global, and try to change them to local instances, if posible. You can't know for sure if the memory is exceeded only in one of these areas, but you can give it a try.
Lucian