Issue
Problems encountered when changing Data Types(Elec Type) with Bacnet Points and using programs to perform COV's on those points
Environment
- bCX Controller
- CyberStation
Cause
Data type (elec type) is changed without sending to the bacnet side will create issue.
Resolution
Changing the Data Type (Elec Type) of a point on the fly can cause issues. Once a point is created on the infinity side and sent to the data base on the bacnet side and a point is referenced from one or the other and a data type (elec type) is changed without sending to the bacnet side can cause issues. One of the issues is that data could quit updating.
Another issue and one that is more noticeable is that if a COV subscription is created from one of the points through a program, the program could disable for one and or the data would not be correct or updated. To get an understanding of what goes on under the hood. Lets create a scenario that is a typical setup to see what is really going on.
-------------------------------
I have a BCX with a B3 controller and have a point in the bcx named bcxPoint (binary data type).
I have a point in the B3 named localPoint(binary data type) and a program named MirrorPrg.
localPoint = myNet\MyBCX\bcxPoint
Save this program and send to database on the bacnet side.
Open the bcxPoint on the infinity side... change the value from 1 to 0 and back and forth while watching the value update
on the bacnet side's localPoint. All is well and works as expected.
Now change the data type on the bcxPoint to Analog and apply. Change the point form 1 to 0 and back and forth, notice that the point on the B3 localPoint on the bacnet side is not updating. But check the program and it is still running.(But not working) Depending if you have other points in a program that sent a COV notification your program can disable. But for our test, we'll force a COV subscription by adding a blank line to the program and saving, notice the program disables. NOTE: the program will appear to still to be running until a COV notification is sent.
This caveat if you think about it makes sense. We subscribe to a COV list, but one of the data types changes without being sent to the bacnet side. On a larger scale lets say you have multiple points in the mirrorPrg and the program disables, not good. In order to correct the issue we described above, we can set the BCX's bcxPoint back to a binary type and perform a send to database on the bacnet side. Open up the program and add a line and then save which recompiles and puts out a new COV subscription.
Don't forget to enable the program.
The above is a workaround in case you get into trouble. But if you have many points you have changed, I would suggest deleting the controller from the bacnet side and then reloading the controller and the performing a find new bacnet devices. This will ensure that you have all data types straightened out. But to be on the safe side, if you are going to be changing data types of points, I would suggest deleting the point on the infinity side and perform a send to database on the bacnet side. This will get rid of all instances of the point. Then create the point with the correct data type and perform a send to database on the bacnet side and make sure you check all programs referencing the point.