6ES7341-1BH01-0AE0参数详细近年来,嵌入式系统以其体积小、成本低和功能专一等特点在工控领域得到越来越广泛的应用。本文实现了嵌入式远程测控终端与西门子S7-200 PLC的通信,并基于此完成了对PLC数据的采集。通过嵌入式系统的扩展网口将PLC与Internet相联,突破了串行通信速率的限制,节省了采用高端PLC 实现网络测控的经费投入。在从PLC采集数据功能的实现过程中,避开了以往使用PLC 自由端口通信需要改写PLC梯形图的问题,而直接利用PLC厂家制定的通信协议来实现数据交换,无需对PLC编程,方法简单可靠,为今后实现更多品牌PLC与上位机通信开辟了新的途径。同时,基于嵌入式操作系统μClinux及其多线程机制实现了一套中央空调远程测控终端系统。
1、系统总体设计
1.1 硬件构成
系统采用1片三星公司推出的基于ARM7TDMI精简指令系统的32位高速处理器S3C44B0X作为嵌入式微处理器,扩展了一个RS485串口、两个RS232串口和一个以太网口。如图1所示,嵌入式微处理器通过扩展的RS485串口与西门子S7-200 PLC进行通信,一个RS232口通过调制解调器连接到公众网,实现串行通信,扩展的以太网口则将整个嵌入式系统接入Internet,拓展了PLC的通信方式。考虑到与现存本地监控系统的兼容,在S7-200的串口上可同时并接西门子的文本显示器TD200,三者组成一个PPI令牌环网络。
图1 系统结构和连接示意图
1.2 软件总体设计
本系统采用μClinux嵌入式操作系统作为应用软件的运行平台。μClinux系统是近年迅速发展起来的一种专门用于微控制领域的嵌入式操作系统,内核要比原Linux 2.0内核小得多(内核小于512KB,内核加上工具小于900KB),但保留了Linux操作系统的主要优点:稳定性,优异的网络能力以及的文件系统支持,同时提供通用的Linux AP1支持完整的TCP/IP协议栈和大量其它的网络协议。
中央空调远程测控终端的功能主要是动态地采集中央空调的现场运行参数并将这些参数实时地发送给位于远程的监控中心,并且具备提供历史数据、故障报警和某些控制功能。为了提高系统的运行效率, 利用μClinux对多线程机制的支持,将远程终端的软件系统分为四个并发的线程实现。分别为:数据采集线程、数据存储线程、数据发送线程和故障报警线程。软件系统结构如图2所示。
图2 软件系统总体框架
为了实现各个线程之间的通信,设置一个数组作为共享区域。其中,数据采集线程主要是嵌入式测控终端与PLC的通信过程,所有的数据都从PLC的寄存器中读取,并存储在测控终端的内存共享区域中。在本系统中,根据所监控的中央空调的不同型号,由数据字典文件读入所需采集的参数地址,采用循环方式将各个参数的实时数值从PLC中采集,再一并存人数据共享区。数据存储线程在本地创建文件,并将数据共享区中的参数值每隔一定时间保存在FLASH中,使之作为分析一段时间内中央空调运行状况的历史数据,为实现专家诊断系统提供数据源。基于μClinux对TCP/IP协议栈的完整封装,实时数据发送和故障报警线程从共享存储区中读取数据后,利用socket通信机制,将实时数据和故障报警信息从本地发送到远程的主控中心,实现在不同地点对中央空调运行状况的实时监测。
由于西门子S7—200系列PLC通常配合西门子TD200文本显示器一同使用以构成本地监控,与本系统共用一条总线时冲突不可避免。本系统在数据采集的基础上根据PPI协议和PROFIBUS规定的令牌环协议,实现了主站之间的令牌传递功能,保证了令牌环网络的正常运转,使TD200与本系统组成的双主站网络通过对令牌的占有来实现各自的通信功能,互不干扰。
2、软件实现
2.1 通信方式和通信协议的选择
S7—200 CPU支持多种通信协议,为用户实现多种不同的网络配置提供了便利,包括:点对点(Point-to-Point)接口协议(PPI)、多点(Multi~Point)接El协议(MP1)和Profibus协议。这些协议是非同步的字符协议,有1位起始位、8位数据位、1位偶校验位和1位停止位。通信结构依赖于特定的起始字符和停止字符、源和目的站地址、报文长度和数据校验和。
目前通常采用自由口通信模式控制S7—200 CPU的通讯端El实现上下位机通信。用户可以在自由El模式下使用自定义的通信协议来实现PLC与多种类型智能设备的通信。但由于需要对PLC现有程序进行修改,对于不熟悉PLC编程语言并要在短时间内实现对西门子PLC 的监控功能的软件开发者来说,这种修改存在一定的风险。
本系统采用PPI协议作为嵌入式系统与S7—200 CPU之间的通信协议,由于C语言的高效性,采用C语言进行编程实现通信,无需对PLC本身的程序进行修改,保证了工业控制系统的安全和稳定。
2.2 PPI协议数据格式
PPI协议是一种主一从通信协议:通信的设备分为主站和从站。PLC默认为从站,嵌入式系统和TD200文本显示器作为主站。主站设备发送请求到从站设备,从站设备响应,从站不主动发起通信,只是等待主站的数据请求命令和对该命令作出响应。PPI协议并不限制与任意一个从站通信的主站数量,但是在一个网络中,主站的个数不能超过32。协议的数据格式如图3所示,图3(a)是PPI主站发送的命令帧和从站发送的数据帧格式,图3(b)是PPI主站发送给从站的确认帧格式。
图3 协议数据帧格式
以字节为单位,每个字节的含义如下:
SD2,SD1:(Start Delimiter)开始定界符(SD2=68H,SDI=10H)
LE.LER:(frame Length)报文数据长度
DA:(Destination Address)目的地址
SA:(Source Address)源地址
FC:(Function Code)方式字(5C、6C、7C)
Data Unit:数据单元
FCS:(frame Check Sequence)校验码
ED:(End Delimiter)结束分界符(16H)
在PPI网络中,S7—200 PLC的默认站地址是02H,而作为主站的嵌入式系统的站地址规定为00H。加上TD200后构成的多主站系统中,TD200做主站,站地址是01H。三个站之间的通信遵循令牌环网络规则,令牌在主站之间轮流传递,持有令牌的主站有总线的控制权,可以收发数据,从站不具有令牌持有权。
2.3 数据采集程序分析
数据采集线程的主要流程如图4所示。其中,测控终端与PLC的通信可以看作是主站与从站之间的两次发送请求和应答过程。
图4 通信程序流程图
以作为主站的嵌入式系统向作为从站的PLC发起一个读取数据值的通信过程为例,该数据是存储在v寄存器、起始地址为136的一个字。
首先,主站以目的地址02H、源地址00H生成一个数据请求帧,对于读取请求,方式字FC为7CH。生成的数据请求帧为(以十六进制表示): 68H 1BH 1BH 68H 2H 0H 6CH 32H 1H 0H 0H 6H 6H 0H EH 0H 0H 4H 1H 12H AH 10H 4H 0H 1H 0H 1H 84H 0H 4H 40H BAH 16H。主站发出这一请求并等待1秒钟之后读取串口,如果PLC正确响应,会发送一个确认字节E5H,主站读取到这个字节后,就在规定时间间隔内发送数据请求确认帧到串口。确认帧内容为:10H 02H 00H 5CH 5EH 16H。PLC收到这个确认帧后,就读取数据请求帧中所指定得寄存器值,并按照PPI协议规定得发送数据帧格式(图3(a))打包,将数据发送出去。嵌入式主站接收到这个含有所需请求参数值的数据帧,就根据协议的规定将数据解析出来,并存储在本地内存共享区域中,从而完成一次数据采集和存储过程。
数据采集线程的主要代码如下:
Int data_collect (struct acinfo temp)
{
delay.tv_sec=0;
delay.tv_nsec=sleep;
int ret;
unsigned char ack; //打开串口1,设置波特率9600波特
open_comport (19600) ; //向PLC发送数据读取指令帧
white_com (temp);
nanosleep (&delay, NULL); //读取PLC响应帧
ack=read_act();… //对PLC发送确认帧
poll_data();
nanosleep(&delay,NULL); //从串口读取来自PLC的数据
ret=read_com(); //恢复串口设置,关闭串口
com_reset();
com_close();
return();
}
PLC 的响应有一定延迟, 所以需要在程序中调用nanosleep(&delay,NULL)函数让线程暂停一段时间再读取串El。为了保证令牌环网络的正常运转,受令牌占有时间的限制,在波特率为9600时,PLC 与主站的一次数据通信时间不应该超过3s,根据所采集的参数规模计算得出小响应和传输时间间隔在0.1s左右。
3、结束语
本测控终端系统经过实际运行,验证了其有效性和实用性。采用嵌入式系统与西门子PLC利用PPI协议进行通信的方法,简化了原本复杂的通信功能实现过程,为对PLC的实时监控提供了一种性价比很高的实现方式。通过嵌入式系统扩展以太网1:3,为原本只有通过串口才能与外界通信的PLC提供了以太网的通信方式,提高了通信效率。基于此技术实现的嵌入式系统与PLC相结合的远程测控终端为分布式实时监控系统的实现提供了一种低价又便捷有效的方式。
随着科技的进步,人们已经不满足在现场对采集的数据进行分析处理。在很多场合,我们需要对距离很远的控制器进行监测。当距离在几千米的情况下,我们可以使用有线连接,比如采用Profibus-DP总线连接。但当距离有几百千米,甚至更远的情况下,采用上述连接方式的花费将会是惊人的,所以多采用廉价的通信进行数据传输。
2 方案比较
通常情况下,每台控制器通过一台Modem和一条线连接到远程PC。远程PC与每台控制器之间占用一条通信线路,所以每次只能与一台控制器进行数据通信。该方案监控系统如图1。
图1 控制器与远程PC通信方案一
在该方案下,每个控制器占用一个号码资源、一条线路和一台Modem。远程PC通过线与每个控制器分别连接,当需要与某个控制器进行数据通信时,通过拨号连接该控制器,进行数据通信。在这种情况下,如果有多个控制器需要与远程PC通信,将会占用多条线路。远程PC不可能同时与多台控制器进行数据通信,只能依次轮询拨号每个控制器,不仅Modem每次建立连接会耗费大量的时间,而且浪费大量的通信费用。
针对以上方案存在的弊端,本文提出一种新的方案,只采用1条线路和一台Modem,即可实现远程PC与所有的控制器进行数据通信,该方案监控系统如图2:
图2 控制器与远程PC通信方案二
现场的控制器作为Modbus从站(可能是RS232接口的,也可能是RS485接口的,若是RS232接口,可以通过一个很便宜的转换设备将RS232转换成RS485),将所有的控制器挂接到485总线上,Modbus主站采用和利时公司小型一体化PLC—HOLLiAS-LEC G3的40点CPU模块LM3108。LM3108的RS485口挂接到485总线上,LM3108通过RS485口采用Modbus协议将各个控制器内需要读取的数据分别读取上来,存储在PLC对应的地址中。
LM3108的RS232接口与Modem连接,Modem通过线与远程PC连接。当拨号建立连接后,远程PC与LM3108之间拨号连通以后同样采用Modbus协议,此时远程PC作为Modbus主站,LM3108的RS232口作为Modbus从站,远程PC只需要取得PLC中相对应的地址中的数据即可。
PLC与远程PC建立连接可以采用两种方式:
1) PLC主动呼叫远程PC,可以在PLC中设定时间,或者设定某个触发条件,当条件满足时主动呼叫远程PC建立连接,进行通信。
2) 远程PC主动呼叫PLC,远程监控人员根据需要拨号,以采集各控制器的数据。
3 具体案例
3.1 设备选型
1) PLC——LM3108
LM3108是和利时公司生产的具有很高性能价格比的小型可编程序控制器,结构小巧、运行可靠、价格低廉。该PLC具备1个RS232端口和1个RS485端口,两者均可实现自由口通讯,可实现Modbus从站和Modbus主站功能。LM3108本体带有24点DI和16点DO,具有8k的自由存储空间,完全可以满足该方案的要求。
2) 调制解调器
具备RS232接口的普通56K调制解调器。
3) 远程PC
具备上位拨号并支持Modbus主协议软件的PC机,比如装有和利时公司SmartPro软件的PC机。
3.2 LM3108与Modem硬件连接
需要2个9针的公头,连接线缆定义如图3:
图3 LM3108与Modem连接线
LM3108连接针头1, Modem与PC之间的连接线的PC端接针头2,将两个9针头的2、3、5直连,针头2的1、7、8短接,4、6短接。
3.3 LM3108与Modem软件设置
LM3108提供RS232口Modbus从站功能块(SET_LOCAL_ADDRESS)、RS232口通讯参数设置功能块(Reset_COMM_PRMT)、RS232口通讯自由口参数设置功能块(Set_COMM_PRMT)、RS232口通讯自由口数据发送功能块(COMM_SEND)、RS232口通讯自由口数据接收功能块(COMM_RECEIVE)。
物理连接PLC与Modem后,若采用远程PC主动呼叫PLC,只需编程调用SET_LOCAL_ADDRESS和Reset_COMM_PRMT这两个功能块即可,PLC侧无需再作其它 设置。
若采用PLC主动呼叫远程PC,则需要RS232口在自由通讯方式下使用COMM_SEND与COMM_RECEIVE同Modem进行会话。
PLC主动呼叫远程PC的程序流程图如图4:
图4 PLC主动呼叫远程PC程序流程图
3.4 应用效果
本文介绍的方案已经成功应用于国内外中央空调远程监控系统,从几套系统近一年的运行情况来看,系统质量可靠、运行稳定、运行效果良好。相对传统方案,本文介绍的方案节省了大量电缆和硬件设备,具有较好的性价比,得到客户的好评。