Citect + S7NT Tags

Narog

Member
Join Date
Jan 2009
Location
Silkeborg
Posts
3
Hey guys, i need HELP :p. Im new to this Citect HMI system but so far i manage to configure and make a IO connection between Citect and my S300 PLC by ethernet using S7NT IO Driver. I have tested the communication using one tag (UINT) connect to a DB on position 0 and everything is perfect.

The problem is when i create a new tag (in this case a REAL) and try to point it to a new position in the same DB.

If i write on the Address field "DB21,2" and on the Data Type "REAL" the Citect compilation comes with the following Error "Address on bad boundary".

So my question is, what im doing wrong? Maybe this S7NT have some specific offset for each different type of data?

Thanks.
 
Last edited:
Hey guys, i need HELP :p. Im new to this Citect HMI system but so far i manage to configure and make a IO connection between Citect and my S300 PLC by ethernet using S7NT IO Driver. I have tested the communication using one tag (UINT) connect to a DB on position 0 and everything is perfect.

The problem is when i create a new tag (in this case a REAL) and try to point it to a new position in the same DB.

If i write on the Address field "DB21,2" and on the Data Type "REAL" the Citect compilation comes with the following Error "Address on bad boundary".

So my question is, what im doing wrong? Maybe this S7NT have some specific offset for each different type of data?

Thanks.

Did you even try to look in the Citect help ?

It means you have not aligned your address correctly, you can turn this error checking off but you must still have everything correctly aligned to wrok reliably, explanation from Citect help below:

[General]CheckAddressBoundary

Determines whether the compiler checks for correctly-aligned I/O device variables. Each analog variable in an I/O device usually occupies a word location (16 bits wide). If the first word is V1, the next is V2, V3, V4, and so on. With some I/O devices, you can access two words as a long or real value (32 bits wide). The first long will be V1 and the next V3, V5, V7, and so on.
For CitectSCADA to read these variables correctly, all double-register variables must be aligned on the same boundary, either an even or odd boundary. When CitectSCADA compiles your project and finds a double-register variable, it remembers which boundary it is on and checks that all other double register variables are on the same boundary. So, if CitectSCADA finds a double register variable on address V5, CitectSCADA checks that all other double register variables are also on odd boundaries.
The CitectSCADA compiler displays the "Address on bad boundary" message if the address of a long or real variable is not aligned correctly.
Allowable Values:
  • 0 - (Disable checking)
  • 1 - (Enable checking)
Default Value: 1
 
Hey and thx for the fast reply. I have read the help, but imo it doesnt help much.

Atm i have a UINT on DB21,0 a REAL on DB21,2 a UINT on DB21,6 and REAL at DB21,8. From what i see all are even. When i compile the same error as before appears. But if i move the REAL on DB21,8 to DB21,10 it doesnt give any errors anymore. Is this not strange?

DB21
INT 2bytes - Address (byte) on PLC -> 0
REAL 4bytes - Address (byte) on PLC -> 2
INT 2bytes - Address (byte) on PLC -> 6
REAL 4bytes - Address (byte) on PLC -> 8
 
Hello,

What version of citect are you using?

in the later versions there is al large article about mixing datatypes in combination with siemens PLC's. this can lead to unexpected results.

the best practice is, never mix datatypes and don't disable [General]CheckAddressBoundary. The best thing to do is make a DB with reals, another with int's and so on.

make shure the addres of longs and reals are a multiple of 4 (4 bytes)
and the address of int's are a multiple of 2.
 
Hey and thx for the fast reply. I have read the help, but imo it doesnt help much.

Atm i have a UINT on DB21,0 a REAL on DB21,2 a UINT on DB21,6 and REAL at DB21,8. From what i see all are even. When i compile the same error as before appears. But if i move the REAL on DB21,8 to DB21,10 it doesnt give any errors anymore. Is this not strange?

DB21
INT 2bytes - Address (byte) on PLC -> 0
REAL 4bytes - Address (byte) on PLC -> 2
INT 2bytes - Address (byte) on PLC -> 6
REAL 4bytes - Address (byte) on PLC -> 8

Change the citect.ini parameter as above and it will compile, then test it, it should be fine

Note: I dont know your PLC as i dont use them so i may be wrong !!

Edit: And according to Marsupilami it appears i am !!
 
Last edited:
Well guys thanks for replying. The problem is, you can’t really mix different types of data special if they are organized in a random way. Like Byte -> Real -> Uint -> Real. Also it is not possible to have a Real starting on address 0 in one DB and in other DB have a Real starting on address 2. So I think im going to use Marsupilami suggestion to keep the same data type in same DB.

Thanks a lot for the help.
 

Similar Topics

So i've been at this for a long while, i have Citect Scada 2018, i have full access to everything but i can't seem to find any option or...
Replies
0
Views
63
Hello, i've been at this for months now, i tried creating accounts on the aveva website but it seems to never approve my accounts or at least when...
Replies
3
Views
94
Hello, I have a running project on Citect v5.42 and simatic net v6.4 I have created a new spare PC and loaded all software like Citect, station...
Replies
0
Views
74
Hello everyone, In a factory where we installed Citect 7.20 the computer began to show the first signs of end of life. They never considered...
Replies
0
Views
78
I have a running backup of Citect and plc and I want to make a spare PC station so I have installed the win XP and somatic net v6.0 and import the...
Replies
3
Views
130
Back
Top Bottom