I did some tests with the Ignition siemens driver for s7-1500 PLC’s to check how communication works exactly between Ignition and Siemens PLC. My main goal was trying to toggle a bit in a word, a self written script fired on a button in vision client.
I figured out that, for some reason, the siemens driver did a byteswap. So this means if I want to toggle the first bit in word in PLC, in Ignition I have to toggle the 8th bit.
word in PLC : [0…7] [8…15]
byteswap in Ignition : [8…15] [0…7]
The scripting is more or less as following
def InvertBitInWord(word, bit): tagpath = system.tag.read(word) if tagpath.quality.isGood(): value = tp.value ^ (1<<bit) #where bit is '8' (the 8th bit) system.tag.write(word,value)
Has anyone else experienced this?
Is there a way to define in the driver settings to disable/enable the byteswap? I know from other SCADA packages you can set this up.
Btw, the reason I tested with the Siemens driver, is because via OPC UA connection Siemens has limited the number of tags send over OPC to max 10000 tags.