T3-Nano: Low cost Modbus / Bacnet router

Originally published at: https://temcocontrols.com/t3-nano-low-cost-modbus-bacnet-router/

We have a new product called the T3-Nano, it is a low cost version of the T3-BB series controllers which has all the programmable features of the larger controllers in the family but with no I/O. It can be used with the expansion i/o modules and thermostats but its also finding a niche in the marketplace as a general purpose building automation router. The T3-Nano allows you to communicate to hundreds of RS485 devices at a single IP address by transparently routing Ethernet packets to and from the RS485 sub networks using Modbus and Bacnet communications. There is no programming required for operation as a basic router, the packets will route transparently from the IP network to the RS485 network and back.
image

In order to get started, power up the T3-nano and connect the Ethernet and RS485 cabling as shown. There are two RS485 subnetworks which are functionally the same, we just call one the ‘main’ and the other the ‘sub’ for reference, you can connect to either one. Install the free T3000 software from here:

https://temcocontrols.com/ftp/software/09T3000Software.zip 1

On startup you will see the menu system as shown, click on the magnifying glass icon to scan for the T3-Nano and it will be discovered at Tab1. Just for reference, Tab2 and Tab3 show the scanning over the COM1 port of your PC if it has one. Tab4 shows the scanning of the MSTP Subnets for all the IP devices discovered at Tab1. The MSTP subnet scan can take a long time so feel free to cancel the subnet scanning at anytime. Finally a list of the devices discovered is shown at Tab5. If your unit didn’t show up at Tab5 its best to consult the forum for troubleshooting, the usual culprits need to be ruled out such as the cable, network configuration, conflicting software & drivers, etc.

Once you have connected to your T3-Nano you only have to configure the RS485 subnet protocol and baud rate as shown at Tab6 and 7. For Modbus routing, pick the ‘Modbus master’ option and for Bacnet select ‘Bacnet MSTP’. Next set the baud rate of your subnet devices. For most applications you will leave the parity & stop bit settings at their defaults.

ToBeDone: As of this writing, Jan 2020, two Bacnet ports at the same time are not supported. One Bacnet and one Modbus, or two modbus are supported but not the two Bacnet ports scenario. An update will be released soon which allows two Bacnet ports.

Bacnet routing from IP to 485 and back:

Bacnet routing is simpler so we will discuss it first. To test the Bacnet routing features you will need a subnet device wired to the T3-Nano subnet, in this example we’ll use a Honeywell Spyder VAV controller.

image

Use T3000 to set the Nano subnet protocol to Bacnet. The Honeywell Spyder uses autodetect on power up to detect the baud rate, you can cycle power to initiate that and it should match up to whatever you set the Nano baud rate automatically.

image

Next you can use the Bacnet explorer tool called Yabe which is found under the T3000 menu system -> Tools -> Bacnet tool to discover the Bacnet devices in your setup. Click on the green ‘+’ symbol near Tab1 to begin the discovery process, select the IP address of your IP address on the PC, 192.168.0.104 in this example. The devices which are discovered show in the tree at Tab3 now

The Bacnet tool successfully found all the devices on the lan as well as the RS485 subnetwork thanks to the routing capabilities of the T3-Nano, the devices show up in the tree at Tab1. The Honeywell Spyder is connected to a T3-Nano over RS485 / MSTP and shows up at Tab2. All the Bacnet objects on the Spyder show up at Tab3 and can be read from and written to using the Yabe tool. The T3-Nano supports block reads & writes but since the Honeywell Spyder only supports single object read/write operations the tree is populated slowly.

No programming was required to implement this, just set the T3-Nano subnet to Bacnet MSTP protocol as described above and the routing happens automatically. The RX and TX LEDs will be blinking on the T3-controller which is normal for Bacnet MSTP networks as devices pass the token around and discover devices in the background. If there is no RX led activity then check the communications settings and cabling.

Routing from Modbus IP to 485 and back:

Now we can show the transparent IP routing features for Modbus.

image

Here we show the IP settings for the T3-Nano with an IP address of 192.168.0.33 and ‘Modbus RTU ID’ = 3 at Tab7.

image

The Modbus ID of 3 is a special address, it is used by the T3-Nano itself on the Lan as well as the subnet. For any polling to Modbus ID=3 the T3-Nano will reply with Modbus data from itself.

In order to see some modbus data we use a generic Modbus Polling tool embedded in the T3000 software, access this from T3000 -> tools -> modbus tool. At Tab3 you set the IP address of the T3-Nano and at Tab 2 set the slave ID to 3. The modbus data shows up at Tab1, modbus register 6 happens to contain the ‘Modbus ID’ of the Nano which is 3 in this example.

The T3-Nano leds are a useful debugging tool and provide quick visual indication of the communications activity. With the scan rate shown here of 1000 ms the RX and TX leds of the T3-Nano Ethernet port will blink every second. The subnet LEDs will not be blinking because the T3-Nano replies with data from itself.

In order to poll subnet devices you can poll any address other than ‘ID=3’ which the T3-Nano handles itself. In the example below we will poll a Wattnode Power meter on the RS485 subnet which has a Modbus ID of 19. The T3-Nano inspects any Modbus packets on the lan and replies to any addressed to its IP address. Each Modbus packet on the Lan contains a Modbus ID parameter which the Nano looks at and since its for ID=19 it sends the request on down to the RS485 subnet. The packet is received by the Wattnode at address 19 which then sends the reply back out to the RS485 network and is finally repeated onto the Lan by the Nano. Like the Bacnet example above there is no programming required on the T3-Nano, it simply routes the packets from the Lan to the subnet and back based on the polling definition.

The polling definition is nearly the same as the example above except the Slave ID setting is at 19 now as shown at Tab5. This is a standard Modbus command which includes the IP address and a Modbus ID.

A debugging tip again about the LEDS on the T3-Nano, the scan rate shown here is again 1000 ms which means the RX led of the T3-Nano Ethernet port will blink every one second and as the data is received from the Modbus polling tool. The data is then passed onto the RS485 subnet which causes the TX LED to blink. When the subnet devices reply the RX led will light up and finally the Ethernet TX LED will blink as the data is passed back on to the Lan.

**Routing from Modbus to Bacnet & vice versa **
In the next update we will show how to massage the data using the programming capabilities of the T3-Nano. This would let you convert a Bacnet device to Modbus protocol or vice versa, it does require some programming but its fairly simple work.

Does this work also with external modbus slave that are connected on the subnet?
I can imagine that the Nano need a list of ID that are on his subnet to be able to associate the request received on the Ethernet side?
So how can I add an external modbus/bacnet module to this list sothat another more flexible modbus TCP master can read/write data
It is said everywhere that t3000 is open, so it should be possible to add manually some records in the database of the subnet slave…
I don’t need a need a final automatic version of T300 integrating external slave with all function for now … just the information on which database table is used by the Nano to make his routing and how I can edit it.

Thanks for the support

the nano supports subnets. you write your program and it will automatically add the polling to its internal list of external device list. you can check the state of this polling in the network points screen I showed you earlier. this is how it’s done and its been tested and works.

Maurice Duteau

your original post says Nano is a transparent router for Modbus.
What you are describing though is not a transparent router if i have to code something in to read the data from the Modbus slaves.
Typical Modbus TCP to RTU “transparent” router, listens to slaveID header from the Modbus master’s message on the TCP port and automatically routes to the destination slave ID without any need to know if the slave is there originally or not.

Can you confirm that Nano does this please?

thx

You add programming if you want to do something with the data using the T3-Nano basic programming. You might do that for example if you want to massage the data as it passes by, divide a number by 10 or transpose bytes or expose some modbus registers to Bacnet.

If you just want to route the data without any massaging from RS485 to Ethernet and back you don’t need to do anything as I said, just follow the MBPoll example there and you can send data transparently without doing any programming.