Sign in to follow this  
Followers 0
EasyButton

Function Block Memory Compile Error

6 posts in this topic

When setting function block memory allocation to an EM bank, E3_ for example, and I have an E address in my ladder, I get a compile error "Address - E1 is reserved for Function Block use". This only happens to the E bank, E0_ for example, is fine. Since the E bank is not allowed for function block memory and I wish to use a whole bank, the E bank will become unusable. I am running CXP ver. 8.3, program check option 4.0. Attached is a test program demonstrating the issue. Test.cxp

Share this post


Link to post
Share on other sites
I have submitted this issue to Omron tech support.

Share this post


Link to post
Share on other sites
It may depend on the CPU that you are using? Not all CPU's have the extended memory bank....

Share this post


Link to post
Share on other sites
Duh! Funny this never got me in trouble before. E is the same as E0_! All this time I assumed it was not because when running the Cross Reference Report for E or E0_, it will not give the same result. Also the Address Reference Tool will not show E0_1 when E1 is selected. But, when I wrote a value of 1 to E1, quess what the value of E0_1 became. The compiler can't tell the difference between E and any other EM bank.

Share this post


Link to post
Share on other sites
Easy Button I would not say that this is a bug. The Omron PLCs have 1 or more EM (extended data memory) banks. They are typically denoted as E0_1, where the '0' indicates the EM bank number, and the '1' indicates the channel in the EM bank. E0_1 is an explicit reference to EM bank 0, channel 1. When you use the syntax E1, this is a different way of accessing EM. E1 is a reference to channel 1 within the 'currently selected' EM bank. This type of addressing is a carryover from the old days (C200HX), when this was the only way to address EM banks. So, there is no actual 'E1' memory area, just address 1 within the selected EM bank. Since the compiler has no way of knowing what bank number is selected, you are prevented from creating problems with overlapping memory. If you simply use E0, E1, etc, you can address all the EM banks. If you truely need to switch between EM banks, use IR /DR indirect addressing to accomplish the same thing.

Share this post


Link to post
Share on other sites
I understand my error. I simply thought that E was the first bank, E0 was the second bank, etc. When I asked around, I seems I am not the only one. Now I just hope that this topic can help someone else before they call tech support. Thanks for the help.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0