BACnet - poll data from slave MS/TP devices

We have one Master controller with BACnet IP, (ID 20000) comm and polling data is ok.
But how I can poll data from slave devices connected to the master in ms/tp?
ID 20000 - Matser with IP

  • ID 20001 - MS/TP
  • ID 20002 - MS/TP
  • ID 20003 - MS/TP

For example In a BAC0 python3 library is very easy with ID.
‘’‘bac0.device(“50200:20003 analog input 1 presentValue”)’’’

You would add 3 more device connections for IDs 20001, 20002, and 20003, all pointing at the master controller’s IP, assuming this “master controller” is a BACnet/IP to MSTP gateway.

I tried, but they remain uninitialized
bacNet

Maybe in the Local Device configuration you need to enable “Foreign Device Registration” and configure the gateway as BBMD as well.

I tried everything and did not initialize.
In the BAC0 Python3 library is this addres:
I dont need even un IP master

import BAC0
bacnet = BAC0.connect(ip=‘192.168.0.249’) - //local device
bacnet.whois()
bacnet.devices

bacnet.read(“50200:3 binaryInput 101 presentValue”)

address is Network:50200, MAC:3

Sorry, I am not familiar with that library and have no idea what that means.

Maybe you can get a Wireshark capture and we can compare the traffic.

Yeh, but I have no time to do that.
Just asking you.
is there anyone who knows how ‘Ignition BACnet driver’ works to told me is it possible or not?

‘BAC0’ the most popular python 3 lib can connect slave MS/TP decices with address like net:mac
In may case its 54200:2, no IP requires.
Is the ‘Ignition BACnet’ can do that?

MS/TP addressing

Ignition’s driver is BACnet/IP only. Any communication with MS/TP has to happen through a BACnet gateway that does conversion.

1 Like

Ok, give me example how, pls.

You need a BACnet gateway configured with those slave devices, to start…

Usually you would configure it as the BBMD in the “Local Device” configuration of Ignition, and then add a “Remote Device” using that IP and the known device id/number. The BBMD/gateway should answer who-Is requests with i-Am responses for the MS/TP devices on the other side.

It originally sounded like you already had a configuration like this. If you don’t have a physical MS/TP connection from your computer to these devices then that’s probably the case, which is why seeing the contents of a Wireshark capture taken while you run that Python code would be useful.

‘You need a BACnet gateway configured with those slave devices, to start…’

Is this a hardware?

If Yes, thats whay I give you example with BAC0, there no needs hardware.

If I have to buy something else or I have to make scripting to make win services in python3 to make bridge and use pylogix lib to put data in PLC, and use django for web, I don’t need Ignition.
I already did, but that’s not industria standard…its not SCADA.

BBMD relays BACnet/IP broadcast messages within a BACnet/IP network that spans multiple IP subnets.

Thi is not my case. I need access to ms/tp through BacnetIP device master.

By the docs I've reviewed, BBMDs also manage traffic between all physical layer options in BACnet, not just BACnet/IP to BACnet/IP.

Yes, ok I will agree and I will be happy if you tell me how exactly to configure Ignition driver

because I have no problem with BAC0 lib. its simple like that:


import BAC0
bacnet = BAC0.connect(ip=‘192.168.0.249’) # local device, no need more conf.

bacnet.read(‘50200:3 analogInput 1 presentValue’) # address is mstp_network:mac no IP


Define a controller (this one is on MSTP #50200, MAC addr 3, device ID 20003)

mySlaveController = BAC0.device(‘50200:3’, 20003, bacnet)

my master is 192.168.0.20, ID 20000, but I don’t need it in BAC0 to connect slaves

after that I have: ms/tp
ID 20001, but addressing is MSTP network (50200) and MAC (1) —> 50200:1
ID 20002 address 50200:2
ID 20003 address : 50200:3

I tried everything and it remains uninitialized!
No problem with master.

The problem is in my head. I’ve always thought that a paid driver should be more powerful than a free one. BAC0 is free and works just fine.

Thanks

I am glad you have a workable solution, but i think your conclusion is off base. The ignition BACnet driver is relatively new, and actually is free with the core module. I think it unjust to condemn ignition because the driver does not work the way you think it should.
Best of luck with your project.

yes maybe you are right.
thanks.
I will have to write some bidirectional py3 script to do that job.