郭庆+秦明达+许金
摘 要: 为了使PLC控制器能够与BACnet国际楼宇自动控制标准契合,设计并开发了基于STM32控制芯片和MS/TP协议的PLC控制器。控制器可通过梯形图进行现场编程,具有完整的控制逻辑,满足BACnet的一致性要求。实验测试表明,PLC控制器可以使用RS 485总线与PC上的BACnet虚拟机进行通信,达到0.596 ms的响应时间,并满足PLC的稳定性,具有编程简单、高效、实时性好、运行稳定的特点。
关键词: PLC控制器; BACnet; MS/TP; STM32; 楼宇自动控制; 梯形图编程
中图分类号: TN876?34; TN710.1; TP368.2 文献标识码: A 文章編号: 1004?373X(2018)02?0038?06
Abstract: To make PLC controller fit with the international building automation control standard of BACnet, the programmable logic controller (PLC) based on STM32 control chip and MS/TP protocol was designed and developed. The controller can be programmed in spot by using the ladder diagram, and has complete control logic to meet the conformance requirements of BACnet. The experiment result shows that the PLC can communicate with BACnet virtual machine on PC via RS 485 bus, whose response time can reach to 0.596 ms, and meet the stability of the PLC. The PLC has the characteristics of simple and efficient programming, high real?time performance, and stable operation.
Keywords: PLC controller; BACnet; MS/TP; STM32; building automation control; ladder diagram programming
0 引 言
PLC(Programmable Logic Controller)作为灵活方便、通用性强、可靠性高、接口简单、编程容易、稳定实用的现场控制器,是目前应用最广泛的现场控制器之一。在空调控制系统、电梯控制系统以及其他楼宇控制系统中,PLC控制器的应用也十分广泛,而随着楼宇自动控制系统的发展和研究,BACnet(Building Automation and Control Networks)国际标准也更多地应用到楼宇控制系统中。由于不能便捷地与BACnet网络通信,PLC控制器的发展和使用受到了极大的限制。
基于BACnet协议的PLC控制器,可以在不改变PLC编程方式的前提下,使操作人员可以从BACnet网络中监控到PLC控制器以及其控制设备的状态。这种新型的PLC控制器可以减少编程人员的培训成本,对我国智能建筑的发展和BACnet的研究和应用是十分必要的。
1 基于BACnet协议的PLC控制器的设计实现
BACnet协议在OSI/RM(Open System Interconnection/Reference Model)模型的基础上进行了最大程度上的精简。精简后的结构只留下应用层、网络层、数据链路层和物理层[1]。根据协议结构,所设计的整体自动控制系统如图1所示。系统采用MS/TP(Master?Slave/Token?Passing data link protocol)作为整个系统的数据链路层,其是BACnet标准自己定义的数据链路层协议,协议以技术成熟的EIA?485标准作为物理层,在楼宇自动控制中具有较好的稳定性和操作性,是目前BACnet标准中使用最多的数据链路层协议[1]。
PLC控制器选用STM32F103VET6作为主控芯片,其功能主要分为两部分:一部分实现PLC控制器的基本功能,将梯形图进行下载编译实现控制功能;另一部分与MS/TP网络中的上下层设备进行通信,实现获取控制信息以及传输数据等功能。控制器的整体的结构框图如图2所示。
PLC功能实现部分:PLC部分程序的结构设计,根据PLCopen所规定使用的IEC 61131?3标准,通过RS 232总线,实现控制器与上位机梯形图编程软件通信以及现场控制功能。
BACnet通信部分:通信程序的设计基于MS/TP协议,通过RS 485总线与上位机BACnet虚拟软件进行通信,获取控制信息和数据。PLC根据控制信息调用FLASH内的PLC程序,进行相应的控制以及数据获取。
在保证与BACnet网络正常稳定通信的前提下,整体程序需要更新并调用PLC控制程序。整体程序的结构框图如图3所示。
由图3可知,整体程序完成了PLC控制功能和BACnet通信功能两部分程序的统一调用和整体功能的实现。与网络中的设备通信后,依据获取数据,控制器改变内部控制参数,调用控制程序;依照控制结果,被控变量更新,控制器对下层设备进行控制;如果需要更新PLC控制程序,控制器与上位机PLC编程软件通信,更新程序,开始控制程序的下一个循环;如果不需要更新程序,控制器直接开始下一个循环。endprint
2 PLC基本功能的实现
PLC功能的实现主要由两部分构成:一部分将依据梯形图解析得到的程序通过RS 232总线下载到控制器中并将其解析存储到FLASH中;另一部分程序负责循环调用FLASH内的程序,按照顺序执行步骤,对被控变量做出相应改变,根据得到数据控制下层设备。
2.1 梯形图的解析和下载
梯形图是IEC 61131?3 PLC标准定义的5种PLC编程语言中应用最广泛的一种,具有简单、直观、实用[2]等特点,是最简单易学的PLC语言。
梯形图的解析就是要将简单直观的图形语言转换成机器可识别的机器语言,转换的过程如图4所示。具体的转换方法如下:
1) 将根据IEC 61131?3的图形化编程语言所编写的梯形图程序按从左到右、从上到下的顺序转换成指令表。
2) 编译指令表,形成机器语言。
3) STM32控制芯片通过RS 232总线将机器语言从PC端下载到芯片自带的FLASH中,存储的起始地址为0x8070000H。
解析得到的PLC程序由于存放在FLASH中,和总程序存放的区域不同。因此,PLC控制程序不会因为控制器掉电或者总程序的改变而改变。
2.2 PLC控制程序的调用
控制器在与BACnet通信之后,从上层获得数据,更新控制参数数组。进入调用PLC控制程序中。调用具体过程如图5所示。
控制器从PLC程序存储的FLASH首地址0x8070000H开始读取控制程序。根据PLC的特性,程序是顺序执行,并没有跳转和循环,因此,调用程序按顺序从起始地址开始,逐条读取。控制变量会根据读取得到的控制逻辑而改变,直到读取到“END”指令,PLC控制程序整体结束时,控制变量的参数更新。下层设备依据控制变量的变化,做出开关状态的改变,控制程序调用完成一个周期。传统的PLC控制器会一直不停地调用控制程序,进行一个又一个周期的循环,直至设备工作结束,或者需要更新程序。加入MS/TP的PLC控制器,在每个周期会与BACnet网络上下层设备进行相应的数据交换,实时更新控制逻辑和控制变量的变化,操作人员可以实时监控被控设备的状态变化,如图6所示。
3 BACnet通信的实现
BACnet所规定的数据链路层协议中,MS/TP协议是使用最广泛、最稳定的协议。MS/TP协议的工作过程通过接收状态机、主站点发送状态机和从站点发送状态机三种状态机之间的状态转换来实现[3]。由于主站点接收状态机涵盖了从站点接收状态机的所有功能。因此,协议栈设计过程中将两者合二为一,定义为发送状态机。
3.1 接收状态机的实现
接收状态机从RS 485总线上接收得到数据和控制信息,过滤掉错误和目的地址不是本站点的信息。需要注意的是:接收状态机只会从数据帧中获取数据段内容和数据帧的类型,即BACnet报文的内容,并存储起来,但不会读取、解析报文的内容。所设计的接收状态机中,共有4种状态,分别是:
MSTP_RECEIVE_STATE_IDLE(空闲状态)
MSTP_RECEIVE_STATE_PREAMBLE(前导同步状态)
MSTP_RECEIVE_STATE_HEADER (帧头状态)
MSTP_RECEIVE_STATE_DATA (数据状态)
以HEADER状态为例:当状态机处于PREAMBLE状态时,读取到同步前码为“55 FF”,即每一帧数据的头两个字节,表示同步前导正确,状态机转换为HEADER状态。HEADER状态主要功能是解析接收得到MS/TP数据帧中的目的地址和源地址,并对整个数据帧进行CRC校验。接收状态机处于HEADER状态时,状态机会做出以下不同动作:接收超时或错误时,数据帧会被状态机丢弃,接收状态机转入IDLE状态;经过解析得到的源地址不为令牌持有站点或者目的地址不为本站点时,数据传输错误或状态机接收到了其他站点的信息,数据帧会被抛弃。接收到的数据帧将会被抛弃,接收状态机转入IDLE状态;数据帧的CRC校验错误时,数据帧被认为是错误的,状态机将会抛弃该数据,并转入IDLE状态;接收到的数据帧的目的地址、源地址以及CRC校验正确时,数据帧将会被保存,接收状态机转入DATA状态,进行数据段的解析。
3.2 发送状态机的实现
当控制器为主站点中的一个时,发送状态机的功能除了发送数据帧和需要响应的内容外,还会发送令牌轮询帧,并产生、收发令牌帧,以管理和维护令牌。当该站点为主站点并持有令牌时,会根据控制需求发送数据帧,并分析接收状态机接收得到的数据判断其他站点的响应状态。当该站点为主站点但不持有令牌或者为从站点时,发送状态机会分析接收状态机接收得到的内容,发送对应的响应帧。所设计发送状态机中,共有9种状态,分别是:
MSTP_MASTER_STATE_INITIALIZE(初始化状态)
MSTP_MASTER_STATE_IDLE(空闲状态)
MSTP_MASTER_STATE_USE_TOKEN(使用令牌状态)
MSTP_MASTER_STATE_WAIT_FOR_REPLY(等待应答
状态)
MSTP_MASTER_STATE_DONE_WITH_TOKEN(令牌使用完毕状态)
MSTP_MASTER_STATE_PASS_TOKEN(传递令牌状态)
MSTP_MASTER_STATE_NO_TOKEN(无令牌状态)
MSTP_MASTER_STATE_POLL_FOR_MASTER(主節点轮询状态)
MSTP_MASTER_STATE_ANSWER_DATA_REQUEST(应答数据请求状态)endprint
當控制器作为从站点时,发送状态机只有初始化状态、空闲状态和应答数据请求状态三种。
发送状态机的具体工作流程如图7所示。
以POLL_FOR_MASTER状态为例:发送状态机处于NO_TOKEN状态时,在500 ms内没有监听到总线上的数据时,发送状态机判断令牌丢失,需要产生令牌,状态机宣布成为令牌持有主站点,并转入POLL_FOR_MASTER状态;当发送状态机处于DONE_WITH_TOKEN状态,并且站点作为主站点已经使用令牌50次或令牌在主站点传递次数达到50次,发送状态机转入POLL_FOR_MASTER状态。POLL_FOR_MASTER状态主要功能是发送主节点轮询帧,询问MS/TP网络中是否有新的主站点加入。发送状态机向MS/TP的主站点地址发送主节点轮询帧。
发送状态机处于POLL_FOR_MASTER状态时:接收到其他主节点的响应帧,需要向该站点传递令牌,发送状态机转入PASS_TOKEN状态;状态机没有接收到主站点的响应帧时,并且没有轮询到所有127个主站点时,发送状态机继续处于POLL_FOR_MASTER状态,准备向下一个主站点发送主节点轮询帧;状态机没有接收到主站点的响应帧时,并且轮询到所有127个主站点时,本站点宣布成为单一主站点,MS/TP变为主?从网络,发送状态机转入USE_TOKEN状态。
协议栈的状态机是控制器和BACnet网络交互的最核心的内容。状态机可以完成数据的接收和发送功能,并对上下层的请求做出正确的响应。在保证传输正确性和稳定性的前提下,协议栈将很多不必要的功能进行了删减,并将很多功能进行了合并,保证了协议栈的轻量化,并在一定程度上加快了程序的运行速度。
3.3 BACnet报文(数据段)内容解析与包装
从MS/TP数据帧中得到的数据段数据包含网络层数据(NPDU)和应用层数据(APDU)。目前,控制器只针对在一个局域网内使用的情况,因此,控制器的设计将网络层数据的解析进行了删减,控制器只针对APDU数据进行解析。
应用层数据采用的是BACnet标准的标记编码方式,这种编码方式基本上采用ASN.1的基本编码规则中的编码算法,但根据自身的特点定义对TLV编码方式进行修改,使之更好地适用于APDU[4]。BACnet的标记编码结构如图8所示。
解析过程为:数据段的前16位数据与BACnet标准中APDU的标准编码类型进行对比,得到服务类型。从第17位开始的数据内容,与BACnet的标记编码结构进行对照,解析APDU内容。
以解析“10 00 C4 02 00 00 01 22 01 E0 91 00 21 05”为例。根据图8所示数据结构和BACnet标准中相应的数据格式的规定,以上数据可以做出如下解析:
“10 00”:非证实服务“请求”产生的I?AM报文;
“C4 02 00 00 01”:设备的对象类型为8,即为设备类型;
“22 01”:最大长度为280 B;
“91 00”:不支持分段;
“21 05”:生产厂商的识别号为5。
4 实验结果及分析
实验对设计的8BI,8BO,2AI的基于MS/TP的PLC控制器进行测试。测试使用BACnet上位机对控制器的输出口进行控制,测试上位机控制到控制器动作经过的时间,即为控制器的响应时间,测试到的响应时间的数据如表1所示。
从表1可以看出,控制器的响应时间在0.596 ms左右,而一般的PLC响应时间在4.5 ms左右,相当于响应速度提升了将近9倍,并且可以灵活应用于BACnet网络中,相对于传统PLC有很大的优势。
PLC另一个很重要的参数是控制器的稳定性。分别对8BO口进行500次的开关测试,记录其正确动作的次数,具体数据如表2所示。
从表2可看到,每个BO在100次的开关中,均可正确的动作,控制器具有良好的稳定性,可在控制系统中稳定工作。
5 结 语
基于MS/TP的PLC控制器是针对国际标准BACnet设计的。在保证快速响应和稳定性的前提下,相对于传统的PLC,更加灵活、应用方式更加简便。而和其他的MS/TP现场控制器相比,有着编程简单、现场调试更加便捷,对操作人员的要求也相应的降低。熟练使用PLC编程的工程师,可以不经过培训直接对控制器编程,减少了人员培训的成本。因此,随着BACnet的不断发展和应用,基于BACnet协议的PLC控制器会很广泛地应用于楼宇自动控制系统中,对促进楼宇自动控制系统的发展而言,有着重大意义。
参考文献
[l] 董春桥.智能楼宇BACnet原理与应用[M].北京:电子工业出版社,2003.
DONG Chunqiao. Intelligent building BACnet principle and application [M]. Beijing: Electronic Industry Press, 2003.
[2] 李卫华.基于IEC 61131?3标准的PLC底层开发[D].北京:北京工业大学,2008.
LI Weihua. PLC system program design based on IEC61131?3 [D]. Beijing: Beijing University of Chemical Technology, 2008.
[3] 董春桥.智能建筑自控网络[M].北京:清华大学出版社,2008.
DONG Chunqiao. Intelligent building automation network [M]. Beijing: Tsinghua University Press, 2008.endprint
[4] 王再英,韩养社,高虎贤.楼宇自动化系统原理与应用[M].北京:电子工业出版社,2004.
WANG Zaiying, HAN Yangshe, GAO Huxian. Building automation system principle and application [M]. Beijing: Electronic Industry Press, 2004.
[5] 汪志锋.可编程控制器原理与应用[M].西安:西安电子科技大学出版社,2004.
WANG Zhifeng. Principles and applications of programmable logic controller [J]. Xian: Xidian University Press, 2004.
[6] 刘贤德,石岩,惠晓实.BACnet的体系构[J].工程设计CAD与智能建筑,1999,6(9):16?20.
LIU Xiande, SHI Yan, HUI Xiaoshi. Architecture of BACnet [J]. Engineering design CAD and intelligent building, 1999, 6(9): 16?20.
[7] 罗秀秀.IEEE 802.5令牌环协议的一种简化协议[J].计算机工程与应用,2002,38(11):168?170.
LUO Xiuxiu. A simplified protocol of IEEE802.5 token ring protocol [J]. Computer engineering and applications, 2002, 38(11): 168?170.
[8] 周亚军,许毅平,周曼丽.BACnet协议应用层编解码实现[J].舰船电子工程,2004(2):34?37.
ZHOU Yajun, XU Yiping, ZHOU Manli. BACnet protocol application layer codec implementation [J]. Ship electronic engineering, 2004(2): 34?37.
[9] 王莺.工业可编程序控制器的现状与发展趋势[J].航天技术与民品,1999(5):12?15.
WANG Ying. Status and development trend of industrial programmable logic controller [J]. Aerospace technology and civilian products, 1999(5): 12?15.
[10] LUCAS M R, TILBURY D M. A study of current logic design practices in the automotive manufacturing industry [J]. International journal of human?computer studies, 2003, 59(5): 725?753.
[11] FRIEDRICK J. Building automation′s lead in open systems presents options [J]. Security systems news, 2004(74): 59?66.endprint