How does one write specific BACnet priority in BASIC programming for TSTAT10?
We are using a external platform to do supervisory control, but want to release those controls points in the event that the communication fails. Currently, our external platform writes at priority 8. Essentially, the basic program will watch a heartbeat for a state change and then release the control points at priority 8 if it does not see the change in the configured time (e.g., 300 seconds).
Good question Robert, one I was hoping to avoid for as long as possible. I knew it would rear its head one of these days though. If you could show us how you are used to seeing this done with your usual system that would be appreciated. We can add it to the todo list.
And since you are working with communications health we have a new command which will be helpful, its an internal variable which increments each minute when communications are down. As long as communications are present the variable will be at zero. When communications goes down the variable will start increasing till it hits some upper maximum.
I will update this post with better detail shortly but the new statement goes something like this:
10 VAR1 = PVAR( 100 )
20 IF VAR1 > 10 THEN …close a relay, send an alarm, etc.
Where VAR1 is the usual variable you use in your everyday programs. PVAR is the proprietary bacnet variable, 100 is the index point, I need to update this post with the details, but basically you have access to many internal data points such as the hardware model number, the serial number, com port settings, com port data counters and many other bits of interest through these ‘proprietary’ bacnet variables.
The objects show up in regular bacnet tool scans like Yabe as well. So any bacnet environment will have access to them.
1 Like
Hi,
Sorry for letting this fall off the…
Typically we have a point as a heart beat. We keep sane defaults in priority 16 and we have our supervisory control write to priority 14. If the heartbeat is lost for more than 300 seconds then then the value at priority 14 is released to null and the default at 16 put into effect. We have also done something similar and used priority 16 for our supervisory control and written our default value to the relinquish default.
Just wondering about the syntax of all these commands. or is it something that just happens when the dead master times out. on that note we do have some new commands for monitoring and acting upon dead masters.
Is there a reason you couldn’t accomplish the logic by writing to a var from the remote master. then let the local controller manage it’s own outputs without getting involved with priority arrays. it’s easier to see the logic, put vars and modes on graohic displays and trend logs.
Just sayin…
I’m really trying to avoid priority arrays for programs as you can tell. I’m will end up being the person that has to support this feature and it’s something I am not looking forward to.
Maurice
1 Like
Do you have any documentation or examples for handling these dead master timeouts?
Also, I have noticed that the stat does not appear to have a relinquishDefault BACnet object for the set points?
Hi Maurice,
Just wanted to give this a bump to see if you had any further input on these last questions…
Thanks
Apologies for the slow reply, the forum/email system is acting up.
Chelsea will report back on this right away. We did add some priority array features recently which sound relevant.
Hi, thanks Maurice. Any additional information would be very helpful. I look forward to hearing from Chelsea!
Yes, AV does not have relinquish value, only output have priority array and relinquish in our product now.
BASIC programming writes at priority level 10, it is fixed in code.