APP下载

基于RS485总线的BACnet MS/TP状态机实现

2016-07-02吴洪坤付小娟吴振远郭艳影

关键词:主从状态机

吴洪坤,付小娟,吴振远,郭艳影

(广州民航职业技术学院飞机电子与部件系,广东广州510403)



基于RS485总线的BACnet MS/TP状态机实现

吴洪坤,付小娟,吴振远,郭艳影

(广州民航职业技术学院飞机电子与部件系,广东广州510403)

摘要:对主从/令牌传递协议(BACnet MS/TP)的工作流程和工作状态转换过程由浅入深地进行了描述。该协议属于BACnet数据链路层协议,运行于RS485总线之上。通过对协议工作状态转换的深入分析,给出了MS/TP状态机的实现方法。经验证表明,基于该状态机采用C语言设计的软件在总线设备数量为60个,RS485波特率为38.4 kbps的条件下,工作稳定。

关键词:BACnet;RS485;状态机;主从/令牌传递

BACnet(A Data Communication Protocol for Building Automation and Control Network)是一种楼宇自动化控制网络的通信协议,最初是由美国冷暖空调工程师协会标准项目委员会为楼宇控制中的暖通控制项目制定的一个行业标准,颁布于1995年6月份。其目的就是使不同厂家生产的暖通空调设备之间能够实现设备的互操作,这样在一个项目中就可以采购不同厂商的设备来组成一个完整的系统。BACnet标准在数据链路层上支持以太网、ARCnet、MS/TP、PTP、LonTalk和BACnet/IP。

本文将对基于RS485总线的数据链路层协议MS/TP(Master Slave/Token Passing),即主从/令牌传递协议的工作流程进行描述,并对其状态机进行设计。

1 BACnet MS/TP的工作流程

BACnet MS/TP建立在主从通讯的基础上,任意时刻,在总线上只有一个节点拥有令牌,拥有令牌的节点才可以发起通信,这就是主设备,其他节点就为从设备。主节点的任务完成后,要主动将令牌传递给下一个站点。这种通信协议有一个非常好的机制,即插即用性。在令牌传递过程中,拥有令牌的站点会对本网段的空余站点进行轮询,如果得到正确应答,说明有新的控制器申请加入令牌环,就把令牌传递给新的控制器,使其自动加入到令牌环中,也就是即插即用。

为了便于理解BACnet MS/TP的工作流程及工作状态转换,本文将采用从简单到复杂,逐级深入的方式进行描述。

(1)设备上无令牌

单设备上电工作流程如图1所示。

当在总线上只有一个设备时,设备从上电开始将会作什么是最简单的流程,设备上电后会先进行各种初始化动作。设备完成初始化后进入空闲状态,即等待接收数据状态,由于此时总线上没有其他设备,该设备不可能接收到任何数据,超时(时间可设定)后,该设备认为总线上令牌已经丢失,此时它会自动产生令牌。

(2)设备上有令牌

设备拥有令牌后,会执行轮询任务,从本设备MAC地址的下一个编号进行轮询,一直轮询到本设备MAC地址的前一个地址,比如本设备MAC地址为10,那么它会从11轮询到127(地址最大值),然后从0轮询到9,但它不可能接收到应答信息,于是它认为在总线上只有一个主节点。因为它拥有令牌,所以如果此时它有数据包要发送,可以立即进行发送。如果没有数据,那么它会继续履行主节点的职责,即轮询其他设备,单设备上电后可更直观地处理。

图1 单设备上电工作流程

1.2双设备工作流程

把那些小丫头拖走去祸害!你们藏着是要留给谁呀?留着有人疼有人爱吗?”她现在像个泼淋的村妇,一句话出口,好几头挨骂,但又不能确定她究竟骂谁,“藏着吧,藏到转世投胎,投个好胎,也做女学生,让命贱的来给你们狗日的垫背!”

下面来描述总线上有两个设备时的工作流程。该流程相对复杂,但对于描述MS/TP工作状态的转换也会更完整。本文以MAC地址分别为1和10的两个设备为例对协议工作流程进行详细描述,如图2所示。

图2 双设备上电工作流程

假定设备1先上电,启动过程同前述的单设备工作流程,此处不再赘述。双设备工作过程如下。

(1)设备1在轮询期间,设备10开始上电初始化,并进入空闲状态,因为此时总线上有数据在传输,所以设备10不用再产生新的令牌,它只需要等待设备1轮询到自己。当设备1轮询到设备10时,设备10立即进行应答。设备1收到应答后,会存储设备10的地址,并将令牌传递给设备10。

(2)设备10得到令牌后,先使用令牌发起通信任务,比如向总线上发送一个上线通告。对于更复杂的情况,比如设备10向设备1发送一个读取属性值的请求,然后等待设备1回复请求的数据。当收到设备1回应的属性数据后,设备10发起的这一次的通信任务就完成了。

(3)设备10发起的全部通信任务完成后,开始履行主节点的职责,即轮询其他设备。此时总线上只有两个设备,当轮询到设备1时,才能收到应答,然后将令牌传给设备1,如此循环往复。

如果一切正常,令牌会一圈又一圈轮流传递。如果得到令牌的设备1发生故障了,这时总线上一片寂静,设备10会计算着寂静时间,一旦寂静时间超过了BACnet的规定时间,便会产生令牌,又开始轮询过程。

2 状态机设计与实现

2.1状态定义及状态间转移流程

从双设备的工作流程可以看出,MS/TP协议在工作中有以下9种工作状态:1)初始化状态;2)空闲状态;3)丢失令牌状态;4)轮询状态;5)令牌就绪状态;6)使用令牌状态;7)传递令牌状态;8)等待回复数据状态;9)回复数据状态。

为了更直观的描述各种状态之间相互转换的关系,下面开始状态机的设计,工作状态确定以后,最重要的就是确定各状态之间转换的条件。

(1)初始化状态。初始化工作完成后,只能进入空闲状态。

(2)空闲状态。设备在空闲状态时,主要是监听总线上有无数据,并根据接收数据的情况进行相应的处理或者进行状态转换。

状态转换主要包括以下7方面的内容:1)收到不完整帧直接丢弃,保持在空闲状态;2)收到不是发给自己帧,丢弃,保持空闲状态;3)收到主节点的轮询帧,应答,保持在空闲状态;4)收到不需要应答的数据帧,保存数据,保持在空闲状态;5)收到需要应答的数据帧,转移到回复数据状态;6)超过500 ms,总线上无数据,进入丢失令牌状态;7)收到令牌,进入使用令牌状态。

(3)丢失令牌状态。在该状态下,设备产生令牌,此时,本设备就变为主节点,进入主节点轮询状态。

(4)轮询状态。在该状态下,有5种状态转换可能:1)收到意外帧,进入空闲状态;2)收到轮询应答帧,进入传递令牌状态;3)没有收到轮询回应,轮询一遍,认为总线上只有自己一个主节点,设单独主节点标志位,进入使用令牌状态;4)没有收到轮询回应,已知自己为单独主节点,进入使用令牌状态;5)没有收到轮询回应,已知有其他主节点存在,进入传递令牌状态。

(5)令牌就绪状态。在该状态下,有4种状态转换可能:1)如果本节点发送的最大帧数还没到,进入使用令牌状态,继续发送数据帧;2)如果自己不是单独主节点,并且自己也不知道下一个节点的地址,发送轮询命令,进入轮询状态;3)如果下一个轮询节点就是自己保存的下一个主节点,进入传递令牌状态;4)除了上述3种情况外,还发送轮询命令,进入轮询状态。

(6)使用令牌状态。主节点使用令牌来发送数据帧,主要分成下面3种情况:1)没有待发送的数据帧,进入令牌就绪状态;2)发送不需要回复的数据帧,进入令牌就绪状态;3)发送需要回复的数据帧,进入等待回复数据状态。

(7)传递令牌状态。在该状态下,主要完成令牌传出确认工作:1)如果看到有其他节点在使用令牌传递数据,确认令牌已经传递出去,进入空闲状态;2)如果总线上在限定时间内没有看到有数据帧发送,认为令牌没有传递出去,则重新传递令牌,重发次数有限定;3)如果重发次数超过限定值,依然没有传递出去,则轮询新的主节点,进入轮询状态。

(8)等待回复数据状态。在该状态下,本节点主要是等待应答,如果等待应答超时、收到应答错误帧、收到正确应答,则进入令牌就绪状态;如果收到意外帧,认为有其他节点在使用令牌,则进入空闲状态。

(9)回复数据状态。本状态处理相对简单,只需回复收到的数据请求,回复完毕,进入空闲状态。

通过对上述各种状态下工作流程以及状态间转换的描述,可以设计出MS/TP的状态转换图,如图3所示。

图3 MS/TP状态转换

2.2软件实现方法

上述状态机采用C语言来实现,首先定义主节点的9种工作状态,如表1所示。然后定义主节点工作状态变量char Master_State,函数主体采用switch结构实现,便于各种状态任务的处理及状态间转移。

表1 工作状态常量定义

3 小结

通过C语言实现上述状态机,并添加部分Bacnet标准协议,如I-AM,WHO-IS及部分读写属性等数据帧,程序编译完成后,下载到控制器MCU内部自带FLASH中,MCU为ATMEL公司的AT91SAM7S256芯片,并将60个控制器连接在总线上,波特率设为38.4 kbps,通过监控软件在总线上对数据帧进行监测,发现通信过程流畅,稳定,说明本文设计的状态机能够稳定工作,可靠运行,具有实用价值。

参考文献:

[1]傅海军.楼宇自动化[M].北京∶机械工业出版社,2011.

[2]张少军. BACnet标准与楼宇自控系统技术[M].北京∶机械工业出版社,2012.

[3]谭浩强. C语言程序设计[M].北京∶清华大学出版社,2008.

[4]石东海.单片机数据通信技术入门到精通[M].西安∶西安电子科技大学出版社,2002.

[5]杨明福.计算机网络原理[M].北京∶经济科学出版社,2007.

【责任编辑:任小平renxp90@163.com】

Design of BACnet MS/TP state machine based on RS485 bus

WU Hong-kun,FU Xiao-juan,WU Zhen-yuan,GUO Yan-ying
(Department of Aircraft Electronics and Components,Guangzhou Civil Aviation College,Guangzhou 510403,China)

Abstract∶The work process and work state transition of the master-slave / token passing protocol(BACnet MS/TP)were described developmentally in this paper. This protocol belongs to the BACnet data link layer protocol,and runs on the RS485 bus. The realization method of MS/TP state machine was worked out through analyzing the work state transition of the protocol. After verification,a conclusion was obtained∶the state machine designed using C language had a stable work performance under the condition of 60 bus devices and 38.4 kbps.

Key words∶BACnet;RS485;State machine;MS/TP

中图分类号:TU855

文献标志码:A

文章编号:1008-0171(2016)03-0065-05

收稿日期:2015-05-21

基金项目:广东省高等职业教育教学改革资助项目(20130301051)

作者简介:吴洪坤(1980-),男,河南泌阳人,广州民航职业技术学院讲师。

猜你喜欢

主从状态机
基于有限状态机的交会对接飞行任务规划方法
FANUC系统PROFIBUS主从功能应用
微创血管介入手术机器人的主从交互控制方法与实现
基于主从控制的微电网平滑切换控制策略研究
基于飞行试验数据的仿真模型主从一体化检验
基于状态机比对的状态机推断方案
呼叫中心提示时间与顾客耐心的主从博弈模型
双口RAM读写正确性自动测试的有限状态机控制器设计方法
基于FPGA的机床数控系统主从控制器通信研究
FPGA设计中状态机安全性研究