No, however, I think it would be nice to use PLC, since it's more simplistically executed. Unfortunately I can't write PLC much less read it as well as other code.
My lead lag sequences typically run 24/7, and is controlled by an input point generally an ON/OFF command that enables a timer to run for one week. It goes through a series of AND/OR and TIMER gates before the timer is reset. I have simulated the program by reducing the counts to a reasonable time and through many sessions deemed it to be worthy. In the environment, it worked well for about 4 months before I got my first call saying the system is "chattering", meaning the contact is cycling from lead to lag every second.
I looked through my code, and this definitely shouldn't be happening. I'm not sure if its the BACnet connection to the front end that may be causing this, or whether it's the override bits that are causing this. The IRL situation is for the cooling tower building pumps which is running 24/7. Attached to this controller is the cooling tower dampers, spray pumps, and fans. The building operator would turn off the spray pumps to clean the system, and to turn it off, he would override the program to be OFF. Initially, I was led to believe that when he did this the first time, and put it back to AUTO (255) from OFF (bit 6), this began happening. I went in to re-set the bits to 0,1,255, and verified if the system worked without problems, since typically 0 = OFF and 1 = ON, in logic or otherwise. Unfortunately I got a call a month after that saying the same thing is happening.
I have done lead lag a couple of different ways, using PLC and in one case using some logic blocks. Sometimes the timers act strange in the FX. Try this: First, you need a System Resources Block enabling a Clock and Date Set block. This will enable the RTC in the controller. Then, use an On-Off Time Scheduler Block to create your Switch Event. Make sure you set the Time Schedule details in the Application Point table to activate, say at 9 am every Monday. Set the duration as 1 minute. What's nice about this block is that you can connect Event overrides to the On Forcing and Off Forcing inputs. The on Forcing is used as a Manual Switch point. You turn it on, then off to force your switch. The Off Forcing is used to Hold the Switching function, maybe if a pump is out of service. Bring the Output of the Time Schedule Block to an Event Counter. Set its attributes to Full Scale 2 and AutoReset. Bring the Counter output to two Compare Blocks. Set one compare condition equal to zero, the other compare condition equal to one. Send those outputs to two separate AND blocks, together with a System Enable point and you will have your Lead Lag. One output will be Pump1 Lead. The other will be Pump2 Lead. The System Enable will allow your Operators to shut down the system when they need it off for service.
I know that is a lot of information, but if you play around with that, you can get it to work. I prefer PLC, but you have to understand the ins and outs of the code.
DST Tech, I will try this out tomorrow, thanks for the instructions. Let me try to dissect your directions first: Every Monday at 9am, the On-Off Time Scheduler will activate which will allow an Event Counter to switch, enabling the Lead-Lag operation. But using this direction, there is no way that the operator can change the Lead Lag duration on the fly, am I correct?
That is, unless I change the event counter to another value that equates to, say a two-week lead lag schedule.
In that case, you could make a Schedule in the FX60 and they can change the schedule if they want. You would then have the schedule trigger your switch point going into your logic. There are many ways to achieve what you want to do, but best to think about everything up-front.
I agree. I was also thinking about what you said about the timer block having issues, and I would like your opinion: Do you think it may be a timer block issue, if the timer is still counting down? Because I exposed the point so that I can see what the timer block is doing an ON_Delay for Total_Minutes, with the Value point exposed and converted to Days using the conversion block.
Total_Minutes is an input numerical value changeable by the operator for lead lag operation. Say the operator overrides the point to 7, then the variable goes through a conversion block (7*1440) total minutes for the week.
It's hard to say definitively, but I would think that if the timer is in its cycle and someone changes the setpoint, this could possibly affect the timer. I know that these timers have issues with certain things. I have seen On-Delay timers expire and if their input does not go through an Off-On transition, it will not re-issue an output. It is like a one shot timer. I do not recall the specific application, but I remember having issues with them and adding additional logic to get around the problem. On the older DX-9100 controllers, the timers acted differently and I was used to setting them up. When applying the same logic to the FX timers, I had problems.
Yes, the timers are one-shot timers, and I was able to get around that by utilizing the "reset" input through an AND gate connected to the (Timer) Input point. This worked well in re-setting the timer to continue it's lead lag.
I will try to work with your recommendation, utilizing the RTC, but when I tried to do that in the past, I remember that you technically can't set it to lead lag, unless it's scheduled to be alternating weeks.
I have many systems running using the RTC doing Lead Lag in the FX. I have not utilized an outside schedule. We rotate Leads every Monday. We have a lot of two and three pump setups like this. The operators that we deal with usually don't care too much about editing the weekly switch, but they can force the switch using our built-in forcing point. Also, through the logic, if the Lead fails or is shut down by them, the lag automatically comes on until the Lead is restored. But, the rotation continues. I always use PLC for this, only one time did I have issues with the PLC, still unknown to me and I had to use the method I mentioned above. To this day, I cannot figure out why the PLC doesn't work. It is 1 controller, exact code used 100 times previously, and it just doesn't work. Always keeps you thinking.
It's funny, this happened to me as well, and no matter what, there was absolutely no reason for it to have behaved the way it did. But I rewrote the program using the same identical method, saved it under a different name and tried it. And it worked. :S I would blame it on ghost programming.
Ok, I wrote the program, but I'm unsure about the following:
1. The System Resources connection to enable Clock and date set, is this to be separate, and not connected to my lead lag? This line is just used to initialize the RTC, and nothing else.
2. Once I set the On-Off Time Scheduler in the application points section, it would run off of that. However, when I create an Input to connect to the Event point in the On-Off Time Scheduler, I can connect the weekly schedule from the FX60 to this Event point. When I do that, I must have something to "pulse" the event so that it can increment the Event Counter, initializing the lead lag switch.
3. I have never really utilized the RTC on the controllers as everything is typically done through timers or from the FX60. So if I were to create the schedule in the Application Points list, and also create an Input to the Event variable on the On-Off Time Scheduler, would the FX60 command have superiority?
Also, how would I be able to utilize the FX60 to sync the TimeSet on the Clock and date set? Going into my Application Points, it seems like I have to manually set this once the program is downloaded to ensure the time is correct with Realtime.
I tried to use the TimeSet function, but was not able to fully use it. However, I figured that my weekly schedule does not truly need a schedule within the FX16. Therefore, I used an Event Counter (with a limit of 3, autoreset) connecting to a AND_GATE. The output from the AND_GATE is connected to an OR, with the second pump alarm. This will then enable the first pump to turn on.
My program is very sound, and no amount of simulating will allow the controller to shift the Event Counter from 0 to 1 (False to True). I deleted the controller, rediscovered, re-added the points, and then monitored the controller.
I exposed a point called Lead Pump, which will display a value from the Event Counter (Either it is 0 signifying Pump 1, or 1, signifying Pump 2). There can only be two values for this output, yet, after about 20 minutes, the event counter value outputs the number 2 (out of the range it was set at).
I've made several modifications, each one doing the same thing, just with less logic blocks, yet this problem persists when I try to disable an ON/OFF Output (the output with a star).
This is baffling me, and I am in a pinch. Would restarting the station correct this?
Sorry for the late response. Been busy. I sent you an email with an Assembly. It is simple and has the functionality that I mentioned. From your questions above, I believe the System Resources Pulse will enable the RTC. You don't need to connect it to your PLC. It just enables the RTC to work and keep track of time. I have never used the FX20/60/70 to issue my Lead-Lag switches. I always setup the controller like a stand-alone to perform this on its own. The only exception is that I have used one FX16 sort of as a Master on the network to switch pumps through links in the FX60 to other controllers, so the Lead Lag switches happen at the same time. In a large Plant setup, I have one FX16 controlling the Chillers, CHW pumps, valves, etc., then another FX16 controlling the CW side, an another controlling the towers. Usually, I have these three almost acting as one large controller passing information back and forth using a few links. Only problem is if you lose one or you lose comm, you are screwed. But overall, haven't had any major problems with this.
Also, I have not tried using a Time Sync from the FX60 down to the FX16. The Time Set in the FX16 is a manual type of point. We usually set its value when downloading from the laptop. Overall, it sounds like you have enough experience playing with these controllers. Try the Macro and let me know if it helps.