T3-Nano: Contemporary BasControl22 connecting to T3-Nano

Disclaimer: I am not a professional and just started tinkering with BAS/BACnet type stuff about a month ago. I’m currently an EE student with a technician background in industrial control systems and instrumentation so I’m confident enough to really screw stuff up.

As part of a project for my internship I am constructing a benchtop BAS simulator that we want to interface with an optimization program in development. I am using a Contemporary Controls BAScontrol22 controller and I have a T3-Nano connected to a 3 device MSTP network (Temco/Bravo Setpoint Display, Contemporary Controls Thermostat, and a Functional Devices relay). The controller, router, and my PC are connected to a small Netgear unmanaged switch. I can establish communication with all BACnet devices via multiple BACnet explorers. In the T3000 software, I can get the router and all of the MSTP devices to show up, although the relay does not consistently show.

So my question now, how do I get the MSTP devices to communicate with the main controller?

Update: It dawned on me that the main controller should show up in T3000 but it never has. I’ve tried several methods to add it but nothing seems to work. After reading another post (again), is it because I’m using a switch instead of a router? Do I need a router to do port forwarding?

Sounds like your intention is to use the Bascontrol22 as the main controller and I imagine there’s a lot of info on the contemporary website on how to use it.

That said, the T3-Nano is a capable controller in its own right, you can search this forum for some examples on how to send bacnet commands to the setpoint display and contemporary thermostat. Search for keyword ‘Network Programming’ and you will see how to send commands from the Nano over Ethernet and MSTP to third party devices. You need to know the Bacnet device ID and from there you can do simple programs like IF SCHED1 THEN START 100BO1 ELSE STOP BO1 where SCHED1 is the on & off schedule for the equipment, 100 is the device ID of the thermostat and BO1 is output1 on the thermostat.

I didn’t realize the T3-Nano is a controller until after I had it mounted and wired then started looking into how to program it. Last night, I tried connecting everything to a router but I still couldn’t get the contemporary controller (on BACnet IP) to show up in T3000. Every device consistently shows up in InneaBACnet Explorer and the contemporary BACnet discovery tool but only Temco/Bravo devices consistently show up in Yabe. On the contemporary side, there is not much info on interfacing 3rd party devices–only how to setup virtual points to be used by by third party devices.

Does the T3-Nano use BACnet IP via the ethernet port?
Would, or should a 3rd party BACnet IP device on the LAN, or even directly connected to the T3-Nano, be recognized by the software?

I’ll look more into how to program the Nano. Thank you for the prompt response Maurice. I’m sure I’ll have more questions to post in the coming days.


T3000 can show just the Temco devices on the tree automatically. There is a way to manually add devices but it wont show much else in the tree. You CAN use the 3rd party devices in the programs and graphics, alarms and so on residing on the Nano however.

Missed a couple of your questions there:
Does the T3-Nano use BACnet IP via the ethernet port?

For sure.!!

Would, or should a 3rd party BACnet IP device on the LAN, or even directly connected to the T3-Nano, be recognized by the software?

The Nano does what it can to be a good citizen on the lan and will pass packets as best it can to the MSTP RS485 subnets. We’re always keen to debug new edge cases and are here to help.

I’m to the point that I think I need some hand holding. I have lack of knowledge about building automation controls, the T3 platform, BACnet IP, or BACnet MSTP plus I’m not exactly a whiz at ethernet communications either so I’m struggling. I’ve spent the better part of the last week trying to establish communications between the BAScontrol22 and T3-Nano. I have lost faith that the BAScontrol22 can do what I assumed it could do because it looks like I purchased the wrong model… but I gained faith that the T3-Nano can do all sorts of things I did not imagine it could do. The T3000 coding language looks simple to use if I understood it. I only need to read/write about 5-10 MSTP points.

Can you walk me through what to do?

The links below are for you to use and learn.

Programming for Bacnet and Modbus Subnet devices


Here is an example with all the steps to connect and read/write a Bacnet subnet device on the T3-Nano.

Set T3-Nano Main RS485 and RTS as BACnet protocol in T3000 .

Connect T3-Nano to PC by a router , run T3000 ->discover to get T3-Nano under local network tree , Set RS485 Main as Bacnet MSTP at 115200 .

Connect RTS to PC by USB-to-RS485 converter , run T3000 → discover to get RTS under serial port tree , Set RS485 as Bacnet MSTP at 115200 , and record instance number .

Please connect RTS to T3-Nano’s main RS485, T3-Nano can read RTS set point and temperature value by program .

Click T3-Nano, T3000->Control->Variables define two VARs for set point and temperature .


T3000->Control->Programs , build a program named RTS to read set point and

temperature , if program is ready , please click send button .


10 SETPOINT = 56707AV31

20 TEMP = 56707AI2

T3000->Network Points check AI temperature and AV set point .

T3000->Control->Variables check set point and temperature value .

1 Like

Thank you for this. I’m trying to setup 5 points but I can only seem to get two of them working. Here’s where I am:


Lines 10-50 are tied to virtual points on the BAScontrol22 I configured. VP1-VP4 are analog values, VP5 is binary. These values just let me read what is getting to the controller while working in T3000.
Line 60 TSTEMP variable tied to Contemporary thermostat temp reading (MSTP)
Line 70 TSSETP variable tied to Contemporary thermostat setpoint reading (MSTP)
Line 80 DISPTEMP variable tied to Temco RTS temp reading (MSTP)
Line 90 DISPSETP variable tied to Temco RTS setpoint reading (MSTP)
Line 100 FAN variable tied to BAScontrol22 virtual point 5 (IP)
Line 110 sets BAScontrol22 virtual point 1 (IP) equal to TSTEMP variable
Line 120 sets BAScontrol22 virtual point 2 (IP) equal to TSSETP variable
Line 130 sets BAScontrol22 virtual point 3 (IP) equal to DISPTEMP variable
Line 140 sets BAScontrol22 virtual point 4 (IP) equal to DISPSETP variable
Line 150 sets relay binary output 1 (MSTP) equal to FAN variable

Everything works except lines 130, 140, and 150. I’ve tried a few other methods but those points aren’t making through the router. Any tips?

You’ve made some good progress there. You may get some clues from the network activity dialog, click on the image icon to bring that up.

Lines 130,140 and 150 are writing to AV’s on the Baccontrol22 from the Nano. These are the only lines which are not read commands so we may have some work to do in order to get the writes working. The team will check on this first thing Monday.

One suggestion not related to the networking question but you can set the range of the variables to the proper engineering units to make things a little more intuitive.

Please check whether the devices at Bacnet instance 2749 and 277008 support the write commands. You can test this by using the Yabe Bacnet tool from within T3000, navigate to → tools → bacnet tool and send a write commands to the output. If you can write to the device with this tool you will be able to write using control basic programs running on the Nano.

You can also read up on priority arrays on this forum, depending on how the 3rd party device handles the priority array you may have different results.

Lines 130,140 and 150 are writing to AV’s on the Baccontrol22 from the Nano. These are the only lines which are not read commands so we may have some work to do in order to get the writes working.

@maurice Can you clarify this? Are lines 110-150 are all write commands?

…and I set the proper units :slight_smile:

Please check whether the devices at Bacnet instance 2749 and 277008 support the write commands.

@chelsea Yabe initially worked fine early on for short time but for about the last 2 weeks it only recognizes the T3-Nano and the RTS. Contemporary’s BDT picks up the T3-Nano and the BAScontrol22 including all variables and virtual points and allows writing so I use that to test write functions. But to answer your question – yes, I can write to the virtual points on the controller and I can write to the BO on the relay and the fan turns on. When I manually write to VT3 and VT4 the values also show up in T3000 for VP3 and VP4. So all variables in T3000 and all ‘read’ functions in the program all seem to be working via both BACnet IP and MSTP.

It looks like only lines 130-150 are not functioning.

I just realized I reassigned variables sort of early on and got some errors about the variables already existing… like it didn’t fully erase some things. Is there a way to “reset” the variable table?

Is it possible to reset the T3-Nano back to factory settings? I’d like to start from scratch now that I’m a little more familiar with what I’m doing.

There is indeed. The communications settings won’t be cleared but the rest of the database is cleared out.

Fantastic! I got it reset. Thank you.

I got the T3-NB reset and reprogrammed. Same results as before.

The T3-NB is reading all 10 points correctly (5 BACnet IP, 5 BACnet MSTP). The correct data shows up in the ‘Network Point’ screen and the ‘VARIABLE’ screen. The Contemporary thermostat is passing data to the Contemporary controller through the T3-NB but the RTS display and the relay do not pass through. I need suggestions. Something I thought would take 3-4 hours is taking 3-4 weeks.

Any suggestions on what to do next?

Integration of Bacnet devices can be a process all right but it’s a surprise to hear that you have been working on it for three weeks.

Get yourself set up with wireshark it can help you debug both IP and MSTP packets. It does take a few steps to get the MSTP debugging going, I have written up a post on this forum on how to do that.

Also could you help me understand the big picture here, a quick sketch will really help us to help you. Show the network configuration and which packets are getting through, which are not.

Thanks for your efforts so far.

Here’s a picture of the simulator I constructed:

*Note: The controller and router are no longer directly connected but instead connect via a network switch as depicted below.

Here’s a communications diagram I drew up:

I’ll look into wireshark more.

You do good work, this is a nice test rig. I spoke with Chelsea here and we’re not sure what may be going on. The T3-Nano does a decent job of handling standard Bacnet objects and routing to subnets and so on in our limited ‘Temco’ world but this multi vendor setup is a bit complex. The wireshark capture on the Ethernet level will give us offer some clues. You can also capture traffic on the RS485 subnet using wireshark, you’ll need an RS485 converter though. I wrote up some detailed instructions on how to do this here:

Thank you for the compliment Maurice. I have a background in the maintenance side of industrial instrumentation but this is the biggest wiring project I’ve designed from scratch.

I’ve only used Wireshark one other time as part of a 2-day cybersecurity training last year so this will be more good exposure for me. That link you provided looks pretty thorough so hopefully I can dig up something tomorrow. I ordered a RS-485 USB converter off Amazon that should be here in two days. All the bumps I’ve hit have been a great learning experience towards understanding the nuts and bolts of BACnet which was really the goal of this little project. I have a little PLC experience so I anticipated the communications aspect would be the biggest challenge. I really appreciate the help you guys are providing.

I have Wireshark running over ethernet. The RS-485 converter should be here tomorrow evening. What filters and/or statistics should I capture and analyze/share?