I’m hoping someone from the community can point me in the right direction with my programming issue.
Setup: Currently using TB-LB as controller for manage some process chillers. I am using its internal code for the control of the valves as its purpose is to allow for redundancy and auto failover in the event of fault. I have three chillers serving two pieces of process equipment on a common manifold. The TB-LB is interfaced with our BMS (Honeywell JACE) via Bacnet and I am using it as the HMI interface generator as well as for logging/alarms and integration into the rest of the plant.
System works as planned for auto mode, swapping chillers per my instructions. The problem is when I try to incorporate a “Manual” button to disable auto control so I can manually manipulate the valves via the JACE HMI. I have attached the code modules below as well as a screen shot of the HMI.
All runs fine in Auto, valves swap based on how I select the chillers. When I go into Man mode, I programmatically “skip” all of the valve control logic but my valves turn off on my JACE. They do not change on the TB-LB and I can see that all is working correctly on the T3000 screen but it seems like the JACE loses sync. If I manually switch the valves, the JACE and TB-LB do sync once the “catch up with each other” and they go back into sync when I turn off man mode.
Thanks to anyone who can help in advance.
My question is why my using the code below would cause the JACE to lose sync?
Valve Control Loop.txt
I am replying off the cuff without studying closely but the general idea would be to create some flag variables in the T3 controller. When the manual mode button on the Jace HMI is pressed the Jace will send a bacnet message to flip a variable on the T3 controller. When this flag is in normal mode the T3 controller will operate per the ‘auto sequence’ and when the flag is false it will operate in the ‘Manual Override” sequence.
Thanks for the reply but I think I stumbled upon it by happenstance and by browsing the forum. The issue lies with the Bacnet interface and some undocumented behavior in the system. Another user requested bacnet “levels” and by chance I right clicked on the output value in the software and the list of bacnet levels popped up. I realized that the default behavior of the Bacnet interface caused my manual override value to have lower priority than the internal T3 program values. By changing the level of my override in the JACE I am able to take priority over the program in T3. In below example the program has the valve open but I have it bypassed in the JACE.
Great troubleshooting there Jeff. If you don’t mind, show us a screen shot of what you were looking at in the Jace interface.
Here are the screen shots from my Niagra supervisor. These are from the bacnet instance for the TB-LB on my Jace Station. This is for a 3 way valve. Note the “Fallback” will not override the program in the TB-LB as its at the bottom of the bacnet priority on TB-LB. I tried a few of the other ones just above the program priority but ended up using the emergency lines (I know its probably not kosher from a purist point of view but you do what you have to) as they are at the top priority and overrides the TB-LB program setting. I renamed the slots for the point to be Auto è Null, Manual Bypass (Closed) è 0, Manual Open è 1. In my system operators have no access to emergency level so only engineers and maint can manually override system.
Please update the latest firmware rev64.5, in which different priority arrays are supported to modify the output value.