Setpoint Adjustment in RTU's

Jim Knee

Member
Join Date
Jan 2006
Location
St. John's, Newfoundland
Posts
17
Hi;

We do a lot of work using PLC's as RTU's. In a typical system we have a master PLC connected to an HMI compter. The master also communicates to a number of remote PLC's. Each of the remotes controls a sub system.

Each of the remotes will have a number of operating setpoints which are adjustable thru a touch screen connected directly to the remote PLC.

We also allow the operator to adjust these setpoints thru the master HMI.

When we use an ethernet backbone to link the whole system together it is easy to allow any HMI device in the system to adjust any system setpoint. Usually however we use one or more serial connections between the master and the remotes. This involves mapping the data to be exchanged with the remotes in send and recieve sets. It is in this case when it gets more difficult to adjust setpoints from more than one location.

We have been using a method of using increment and deincrement buttons as outputs from the master HMI and treating the setpoint as an analog input into the HMI.

Does anyone have a better (cleaner) approach??

Jim
 
Most systems I am familiar with send a new setpoint one time (and could be changed potentially from multiple locations). The new setpoint is retained in the final destination and is constantly read (or reported by exception) by all the potential masters (feedback). Reading the destination location confirms the change to the master making the modification and updates all the other masters with the new setpoint.

Also, it would seem that increment and decrement pushbuttons would require more complicated logic and might cause problems depending on which intermediate device that logic was implemented in.
 
HLeap;

What you are describing is exactly what happens when all PLCs are on the same communications network. But when the remote PLCs are all on a separate serial network, it is not as easy to apply this approach.

For it to work you need to send a changed setpoint from the master PLC to the remote PLC without sending all setpoints. This is not the hard part, the hard part is knowing when it was changed by the Master HMI and not the Remote Touch Screen. You can not simply compare the setpoints recieved from the remote to some copy of them that you intend to send back. They may be different, which indicates that they have been changed, but you do not know who changed them and thus you do not know which set is current.

I used a version of this approach some years ago and set a bit in a control word at the top of the setpoint list. The bit set would indicate to the rest of the system which remote changed the setpoint and enable the others to copy this file into their active setpoint file.

I am considering tring a version of this approach which would use an extra button on the Master HMI screen located next to each setpoint entry box called "Save". When pushed it would enable the sending of the new setpoint directly to the remote PLC address. This approach closely follows the normal procedure as you have described.

At first glance I realize that this seems like a stupid question, but there is more to it than meets the eye at first glance.

Jim
 
Jim,

I understand your problem better now. I run into this situation all the time. Yes, you could put a pushbutton on each HMI to initiate the setpoint transfer. I am always being asked questions like "What if the operator doesn't push the pushbutton after entering his new setpoint? The display will show the new setpoint and he (the operator) will think it's now in effect." So I try to make it as simple as possible and make it transparent to the operator.

I usually employ a simple piece of logic in the PLC that detects when the setpoint has been changed and triggers the transfer of the setpoint to the destination.

If X Y then set Z = 1 and then set Y = X
When Z = 1 then trigger transfer (a one shot move to the destination Setpoint address)

Where:
X = Newly entered Setpoint
Y = Internal storage register
Z = Bit that detects a new Setpoint has been entered and triggers Setpoint transfer

Note: Z will only be on for 1 PLC scan.
 
HLeap;

I went down that road before. I got snagged when the setpoint change came from the remote PLC. X does not equal Y and the old setpoint was sent to the remote PLC, overwriting the real one.

The problem with this concept (as I see it) is that you need to know who changed the value. (will the real setpoint please stand up):ROFLMAO:

It could work if we used two temp registers in the master PLC. One to write into by the HMI (X) and another to be used as the compare (Y). On every 100 or so scans we could do the compare, when they are not equal we trigger the sending and copy X to Y. This is probably what you were saying. (I'm a bit slow sometimes).

I can see a small problem with this idea, but its not likely to happen. If the master HMI set the value to 1 then the remote PLC set it to 2 if the master HMI tried to set it back to 1 the change would not take effect.

We have three new projects on the books now which will all have this issue. I decided to take a good look at the issue and attempt to come up with a better standard. I have been doing PLC programming for 21 years (almost all water and sewer type work). I believe that developing programming standards are what delivers good solid systems. What I am trying to do here is to rebuild one of our standards.

Please voice any other thoughts you may have on the topic. I appreciate your interest and help.

Jim
 
Jim,

Just another thought.... use an identical but separate piece of logic for every HMI. When a new setpoint is detected from any HMI update the destination setpoint and at the same time update the X and Y memory locations for all the other HMIs. This way they will read the new setpoint and in both locations (and will not trigger Z). This could be a tedious and repetitive piece of logic if you have a lot of setpoints. That said, it could probably be easily done in a subroutine.
 
In the systems I have programmed, I have hundreds of setpoints that get sent to remote sites. Since the setpoints at the remote sites don’t get changed often (maybe once a year), I elected to have the master continuously write the setpoints to the remotes, but allowed the remotes not to accept the setpoints from the master. If the operator wants to make a setpoint change while they are at the remote, they use a switch in the HMI to turn off the writes from the master, then they can make setpoint changes. Generally setpoint changes at remotes are temporary, so once the operator is done they turn the writes from the master back on. If a setpoint change has to be permanent, then it needs to be made in the master. It is also possible for an operator to reset the stop write switch in a remote site from the master, in case they forget to turn it back on when they leave.

You could also do something like when an operator logs on to a remote HMI, have a bit tell the master to start reading the setpoints from the remote. When the operator logs off, the master would go back to transmitting setpoints to the remote.

If I wanted to completely automate it, I would create (3) memory blocks in the remote PLC. They would be master PLC setpoints, remote HMI setpoints, and working setpoints. Then I would continuously compare the master PLC and remote HMI setpoints. At the moment they were different, I could compare one of them with the working setpoints, whichever is different has the new setpoints and gets written to the working setpoints and the other memory block. So if I’m comparing the master PLC and remote HMI memory blocks and determine they are not equal, I would then compare the master PLC and the working memory block, if they are not equal then the master PLC memory block contains the new setpoints and I would write the master PLC memory block to the working and remote HMI memory blocks. If on the other hand the remote HMI contains the new setpoints, then the remote HMI memory block gets written to the working memory block and signals the master PLC to get the remote HMI memory block and start using it’s setpoints. You would also have to have a time delay to disable the compares when the remote HMI has the new setpoints, since you need to give the master PLC time to obtain the new setpoints and retransmit these to the remote PLC.

If Master != Remote Then
{ If Master != Working Then write Master to Working and Remote }
{ Else write Remote to Working, signal Master to obtain Remote, delay compare for X seconds. }
 
All;

Last night I drafted the following sequence and stratigy, here it is. It involves adding code in the master only.

Memory Allocations

- All setpoints in the remote (s) are organized in one sequencial block of registers. (B1)

- The Master reads this block (B1) of setpoints on a regular interval, and stores them in the master at block B2.

- The master HMI reads the remote setpoints from B2.

- Also located in the master is a block B3 where the HMI will write out changed setpoint values to, Block B4 where B3 or B2 is copied to after a comparison with B3, and block B5, which is the block to be writen back to the remote.

Here is how it would work.

- On power up of the master, a delay will allow the master to update block B2 from remote B1, than block B2 will be copied to B3, B4 and B5. This will only happen on initial power up.

- Every 1 sec I would compare the setpoints in B3 with B4 if a change is detected, the new setpoint would be copied from B3 to B5 and from B3 to B4. The sending of B5 to the remote B1 would be enabled.

- If no changes are detected between B3 and B4 then copy B2 into B3, B4 and B5. The sending of B5 to the Remote B1 will not be enabled.

This is annother variation of what is being suggested and is also a variation of what we have done before. What I am getting from this discussion is that we were not a mile off base with our initial ideas.

Thanks to All

Jim
 

Similar Topics

Dear We are working in AB Studio 5000 and the drive is a PowerFlex 755T. For this project I need to control a conveyor to a certain set point...
Replies
2
Views
116
I've asked this before but I still couldn't make it work. I just can't envision a solution. Local RTU has a screen to set a handful of...
Replies
18
Views
1,506
Hello, I use a Siemens Sinamics G120C inverter in combination with a S7-1200 cpu. I use the Main Setpoint with the Providrive option and send...
Replies
8
Views
638
Hi All, I'm using Studio 5000 ver 30 to modify existing logic that has PID, and I want to be able to use an external/remote source as a setpoint...
Replies
3
Views
607
Im using the built-in PIDE faceplate in Studio View ME connected to a PIDE in Logix Designer and having trouble getting the faceplate to allow the...
Replies
0
Views
1,478
Back
Top Bottom