Using SCADAPack/Telepace to control filter plant

defcon.klaxon

Lifetime Supporting Member
Join Date
Feb 2015
Location
Far NorCal
Posts
616
Hey guys,

I'm working on a small water treatment plant that has SCADAPacks spec'ed for the project (using Telepace).

One of the challenges I'm trying to gracefully code is controlling the various "modes" of the filters, whether they're filtering water or backwashing.

When I've used AB (Logix5K) I had a really great "state" machine approach, where each filter train had a "state" DINT, and each "state" was a single bit. I'd simply latch one bit at a time, and unlatch it/latch the next when it was time to move to a new step. It was really easy to follow in the logic, and because you can address individual bits in a DINT with coils/contacts it was really straightforward. I used each "state" bit in the logic that would control valves, motors, etc.

But when Telepace, I'm not sure the best way to take care of this. There are three filter trains at the plant I'm working on, and each will have about 15-20 "states"; offline, filtering, three backwash steps for each filter section (with four filter sections per train)...and using CMP blocks/checking individual bits is really clunky in Telepace and it's looking like my preferred approach is going to be a nightmare.

Wondering how you guys would approach this, any suggestions would be greatly appreciated. Thanks!
 
I'd just use integers and have one integer represent all the states of one sequence.

So 0,1,2,3,4,5,6 etc.

As you go from one state to the next, you just increase the integer by one. If you want to reset it, you set it to zero.

If there are situations where you rather have logic (booleans/flags/bits) to check for a particular state you can make a function block that takes one integer and then set a bunch of bools where the one that represents the proper state is set. So you have bools called state1,state2,state3 etc up to 30 or whatever.If you can use an array of bools that would also be nice, then you'd get state[1], state[2], state[3] etc. I'd make just one set of these so you can reuse them for every sequence. So basically if you want to use bools somewhere you first call your function block turn_int_to_bools to set the bools. Then you can test if state3 is on instead of checking that state=3.

Using integers for states is also preferable when it comes to texts. Many HMIs and DCS sysems have text lists or similar constructions. It's basically made to convert an integer into a text. So instead of putting an integer on the screen showing the actual state is 3, you can have it show up as 3 - Filtering. This can also be done with arrays of texts.

Above is meant as a comment of how to solves this generally in PLCs and on DCS/SCADA systems. I have no experience with SCADApack/Telepace so you have to check what is convenient to implement. The solution with bits you have used before is really only convenient on small systems. When you have tens or hundreds of states it's not a good solution.

My recommendation when you get up to say 20 states or more is to divide them into a state and a sub-state using two integers. So if a filtration takes 5 different steps to complete I have "filtration" as a state and the five steps that is required to do filtration in sub-states. In the process industry you can come into situations that have very complex and long sequences of operations to complete something.
 
Last edited:
I would ask the client if they'd be open to using one of the new SCADAPack 575 RTUs instead. Programmed using what looks a lot like Unity Pro. This task will be significantly easier.
 
The 300 series scadapacks can run either telepace or isagraf. Yoy jist have to change the firmwaŕe.
My guess is they already have Scadapacks running replace. And maybe they have staff trained with them as well.

Back to the question is go with Pete on this one.
 
Hey guys,

Thanks for all the responses. For some reason I'm not getting emails when responses come in, so I had no idea anyone had even posted. I'll tackle all of them in chronological order:

I'd just use integers and have one integer represent all the states of one sequence.

So 0,1,2,3,4,5,6 etc.

As you go from one state to the next, you just increase the integer by one. If you want to reset it, you set it to zero.

That's kind of what I've come up with and actually not far from what I used in my Logix5K program. I'd use the bits to move between states, but I'd load integers to track what state I was in for the HMI. The major annoyance here is that Telepace Studio doesn't have latch/unlatch coils so the way I did it before doesn't convert, I have to seal in coils and use NC contacts. The other problem is that Telepace only allows eight rungs of logic per "page" of code with ten places on each rung, so setting up compare blocks and coils for three filters with twenty steps each..well, you can see how clunky that could be.

I would ask the client if they'd be open to using one of the new SCADAPack 575 RTUs instead. Programmed using what looks a lot like Unity Pro. This task will be significantly easier.

I'm really interested in the 575 RTUs as well, but I'm pretty much locked down to what is existing and in place (long story short, I've been asked to clean up a mess from another programmer). Thus, I'm pretty much tied to what is existing hardware wise. Believe you me, I would never use Telepace for something like a water plant...heck, I wouldn't use Telepace for much more than a simple well or tank, there are just too many better options at this point if starting from scratch.

The 300 series scadapacks can run either telepace or isagraf. Yoy jist have to change the firmwaŕe.
My guess is they already have Scadapacks running replace. And maybe they have staff trained with them as well.

Have you looked at using isagraf software vs the crappy telepace studio? Has the customer Spec'd the equipment with telepace or are they ok with using the isagraf?

So I've heard a lot about ISaGRAF for SCADAPacks and most of it has been quite negative, so I haven't really even considered it an option. I don't have a dev license for it so we'd have to get one on top of that. And, I have no experience with it so I'd have to get trained up and comfortable, and this project is pretty lean when it comes to funding.

If you guys have anything positive to say about ISaGRAF I'd love to hear it; what I've heard is that it's very buggy and I've been warned by no less than my rep himself to stay away.
 
I prefer isagraf v3.55 to telepace. It's iec61131 compliant. And I can build custom function blocks. For example a low select or first out or math calculation etc. And then call it as I need it.

I don't think it's glitchy. And the firmware is easy to change with firmware loader and isagraf firmware

I hear more negative about telepace being harder to understand

If however you mean isagraf work bench. 5 or 6.0 however I have heard isn't as good

I can help you if needed. .

If
 

Similar Topics

Hi there, I am working on building some standard function blocks for analogs and digitals etc. I have some bypass logic within my analog input...
Replies
0
Views
4,185
Hi I'm very new to PLC programming and I'm trying to find out if this library (Tc2_NcFifoAxes) is necessary for our task In our case we need to...
Replies
0
Views
31
I have a project to automate four generator sets. The system will monitor and store the load demand of the factory. Once there's Power outage, the...
Replies
0
Views
64
Adding ethernet equipment to an existing panel that has none. We have some solid ethernet cables coming from other remote cabinets that I plan to...
Replies
3
Views
125
I'm trying to control a device via MODBUS RTU and the ModbusRtuMasterV2_PcCOM in Twincat 3. I've configured a device with the right com port and...
Replies
7
Views
225
Back
Top Bottom