First large job with Ignition and CLX. Having to integrate to an existing PLC Program which has everything mapped to an Array of DINTs for HMI Control/Status.
So for example, a Conveyor has
HMI[0].0 Start PB
HMI[0].1 Stop PB
HMI[0].2 Run Status
HMI[0].3 Permissive
etc.
Next conveyor follows same format except HMI[1].x
In ignition I can browse the UA OPC Server and drag the entire Array of HMI into the tag browser. Ignition then creates 100 tags of INT4 in the format of
HMI_0_
HMI_1_
HMI_2_
etc.
There are no bit level tags, and in the Indicators/Controls, accessing the bit level using a DOT field doesn't work. So, pointing an animation to HMI_0_.0 does not work. The ONLY way I have found to make this work is to manually create a Boolean Tag in the Ignition Tag Database, eg HMI_0_0 and change the path to point to HMI[0].0. That works, so the UA Driver is capable of accessing the bit level. But not only is that tedious, it turns an array of 100 DINTs into 3100 booleans to try and manage and put on the comm stack.
I cannot believe that once a DINT or INT tag is updated in Ignition, it doesn't allow a DOT field access like every other SCADA package.
At this point I either manually copy/paste boolean tags or export/import to JSON files and manually use an XML editor to create the tags. But again this creates huge overhead of tags on the comm stack and in the tag browser.
Certainly this has had to come up multiple times. All my google searches of the Ignition forums say to create manually boolean tags. But for a large program that's crazy. The other alternative is to rewrite the PLC and use UDTs instead of the DINT arrays, which ignition seems to handle just fine.
So for example, a Conveyor has
HMI[0].0 Start PB
HMI[0].1 Stop PB
HMI[0].2 Run Status
HMI[0].3 Permissive
etc.
Next conveyor follows same format except HMI[1].x
In ignition I can browse the UA OPC Server and drag the entire Array of HMI into the tag browser. Ignition then creates 100 tags of INT4 in the format of
HMI_0_
HMI_1_
HMI_2_
etc.
There are no bit level tags, and in the Indicators/Controls, accessing the bit level using a DOT field doesn't work. So, pointing an animation to HMI_0_.0 does not work. The ONLY way I have found to make this work is to manually create a Boolean Tag in the Ignition Tag Database, eg HMI_0_0 and change the path to point to HMI[0].0. That works, so the UA Driver is capable of accessing the bit level. But not only is that tedious, it turns an array of 100 DINTs into 3100 booleans to try and manage and put on the comm stack.
I cannot believe that once a DINT or INT tag is updated in Ignition, it doesn't allow a DOT field access like every other SCADA package.
At this point I either manually copy/paste boolean tags or export/import to JSON files and manually use an XML editor to create the tags. But again this creates huge overhead of tags on the comm stack and in the tag browser.
Certainly this has had to come up multiple times. All my google searches of the Ignition forums say to create manually boolean tags. But for a large program that's crazy. The other alternative is to rewrite the PLC and use UDTs instead of the DINT arrays, which ignition seems to handle just fine.