Automation Direct Tag Setup Ideas

Hello-

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: