Automation Direct Tag Setup Ideas


I’ve been working with automation direct PLCs (Productivity 3000) along with Ignition HMI now for some time and am quite happy with what I’ve been able to do. I’m working on a new project with relatively simple process control but lots of tag values: a recipe based tank farm temperature control system where ‘template’ program is repeated many times over since we have lots of tanks.

I thought I had figured out a way to do this with the AD software and Ignition relatively painlessly- I created a python script to generate PLC tags for 50 tanks, imported tag list to Automation direct, created UDT in Ignition with tag structure, but then hit a wall when I realized I cannot paramterize the OPC address very easily. It seems like you cannot make very complicated UDT parameter offset adjustments (they seem to only be able to work with a single operation (+ or -) and cant add parameters together, etc. I was hoping to just write a simple equation to calculate modbus address (tagX modbus = vesselNo * valveNo + 8 etc) but I don’t think this is going to work.

I also have access to KEPServerEX with automation direct plugin, but I’m not sure that really solves my problem. I haven’t dove very deep into KEP yet though- I just got it linked to Ignition and working but I have the same issue with address parameterizing.

So my question is for those of you with AD/Ignition experience: if I was starting from scratch with AD PLC, KEP server available, and a blank UDT, what would the most efficient way to build this tag system assuming manual tag mapping is basically not an option? I don’t want to manually type thousands of tag addresses…

Scripting is your friend. Define the UDTs with a “base address” parameter, and everything within the UDT a base+offset in the OPC item address. Then script the creation of the instances with a fancy python calculation of those base addresses.

1 Like

Thank you. I was already heading down this road but wasn’t sure if there was a simpler way I was glossing over. I had started scripting each address in the UDT manually by looping system.tag.addTag and making a giant dictionary for all the address overrides but if I understand what you mean I think this will be much faster :slight_smile: