可编程控制器与计算机通讯的应用
发布时间:2007-03-24
1 引言
可编程控制器(PLC)由于其结构紧凑、可靠性高、编程简单、指令强大、灵活性强、能适用于比较恶劣环境等诸多优点,现已在工业控制领域得到广泛应用。现普遍采用触摸屏加PLC的方法来监控设备,但触摸屏视角窄,不适应恶劣环境,且数据存储容量有限,不易实现大规模网络互联。因此我们采用PLC与计算机通讯的方式实现实时监控,克服了触摸屏的缺点。
2 S7-200 CPU自由口通讯方式的应用
世界知名品牌的PLC很多,如西门子、欧姆龙、松下、三菱等等,本人仅以西门子S7-200小型可编程控制器的CPU22×系列为例,介绍PLC在计算机网络中与计算机通讯的功能。
S7-200 CPU支持多样的通讯功能,根据所使用的S7-200 CPU,其网络可以支持一个或多个以下协议:
l 点到点(Point-to-Point)接口(PPI)
l 多点接口(Multi-Point)(MPI)
l PROFIBUS
l 用户定义协议(自由口)
自由口通讯是通过用户程序可以控制S7-200 CPU通讯口的操作模式。利用自由口模式,可以实现用户定义的通讯协议连接多种智能设备。通过使用接收中断、发送中断、发送指令和接收指令,用户程序控制通讯口操作。在自由口通讯模式下,通讯协议完全由用户程序控制。通过SMB30(口0)允许自由口模式,而且只有在CPU处于RUN模式时才能允许。当CPU出于STOP模式时,自由口通讯停止,通讯口转换成正常的PPI协议操作。
近年来,随着我国铁路运输环境的改善,列车速度越来越高,势必对铁道车辆提出较高的要求,其表现在对列车的舒适性和运行可靠性、安全性的要求提高,因此车辆上设备的自动化程度越来越高。自动化程度的提高,带动了网络技术在列车控制和监控上的应用。车辆网络控制、监控简图如图1所示。
整列车设有车辆级计算机,每个车厢设有本车计算机,车辆级计算机与各个本车计算机组成车辆的主网,本车计算机与本车厢内的各个设备间组成子网。PLC由于其自身的优点,作为控制核心在车辆上的多种设备中得以应用,例如列车自动门的控制、列车空调机的控制等,使其可以作为整个列车网络系统中的一个节点。

3 通讯协议
SIEMENS S7-200系列PLC可以采用用户定义通讯协议(自由口)模式实现计算机与PLC、PLC与PLC的通讯。笔者所描述的例子中,虽然车辆计算机系统和车辆上的其它设备分别是多个设备供应商的产品,但是只要制定好通讯协议,就能满足相互通讯的要求。S7-200系列的PLC正是由于其自由口通讯是通过用户程序控制CPU串行通讯口的操作模式,所以可以方便地与车辆计算机通讯。
计算机(主站)每隔100ms查询PLC(从站)一次,主站发出从站动作控制命令给从站,从站收到命令后发给主站应答帧,从站接收到主站发送来的一帧数据,计算出其校验码FCS,与接收到的一帧数据中的FCS比较,检查是否有数据错误。如果有数据有误,从站发送信息给主站,请求重发。
l 字符结构:每个字符由11位构成,奇偶校验位采用奇校验方式。
起始位 数据 奇偶校验位 停止位
1位 8位 D7…D0 1位 1位
l 传输数据帧格式
BYTE(0)…BYTE(n) FCS
BYTE(0)…BYTE(n)为字符串;
FCS为异或校验码,是发送的所有数据字节和地址字节之异或值。
l 主站命令帧结构
从站地址 从站地址补码 控制字节 命令字节 FCS
l 从站应答帧结构
从站地址 从站地址补码 控制字节 应答字节 FCS
4 通讯口初始化
PLC内部特殊存储器位SMB30和SMB130分别配置通讯端口0和1,为自由端口通讯选择波特率、奇偶校验和数据位数。自由端口的控制字节描述如表1所示。
例如:在通讯协议中规定奇偶校验为奇校验、每个字符的数据为8位、波特率为19200、自由口协议,采用通讯端口0,则在PLC初始化程序中将SMB30赋值为0C5H。
例://串口初始化
┋
NETWORK 7
LD SM0.0
MOVB 16#C5, SMB30 //波特率为19200奇校验 //1起始位1停止位8数据位
ENI //允许中断
MOVB 2, SMB34
MOVB 20, SMB35
ATCH INT_0, 8
┋
5 PLC实时数据处理
由于S7-200系列PLC在自由口模式下,通讯协议完全由梯形图程序或STL编辑器控制,程序可以使用接收中断、发送中断、发送指令和接收指令来控制通讯操作。CPU连续扫描用户程序,执行用户任务。PLC在程序执行过程中,基于稳定、快速灵活等方面考虑,CPU每个扫描周期都通过输入输出映像寄存器来执行实际输入输出操作,即读实际输入点值到映像寄存器、写映像寄存器值到实际输出点。由于在中断中不能顺利进行数据读写操作,因此,可通过编程,利用PLC循环扫描执行程序的特点,使得在程序扫描期间实现数据存储区与输入输出映像寄存器区交换数据。
在本实例中,PLC上电初始化后转入接收字符中断,当上位机发出查询命令后,PLC判断所发命令的地址和地址补码是否正确;如果正确判断上位机是向PLC发送命令还是查询PLC状态;如果执行命令则PLC转入主程序执行相关命令,如果查询PLC状态则将协议定义的信息发送给上位机,上位机收到信息后发送应答帧给PLC。
例:INTERRUPT0 //接收开始
NETWORK 1
LDN SM3.0
AB= SMB2, VB0
MOVW +0, AC0
MOVD &VB600, VD638
MOVB SMB2, *VD638
XORW SMW1, AC0
MOVB AC0, VB300
ATCH INT_1, 8
ATCH INT_6, 11
CRETI
NETWORK 2
LD SM0.0
DTCH 8
ATCH INT_6, 10
INTERRUPT1 //接收地址补码
NETWORK 1
LDN SM3.0
AN SM1.0
MOVB SMB2, *VD638
XORW SMW1, AC0
NETWORK 2
LD SM0.0
ATCH INT_6, 10
INTERRUPT2 //接收命令后判断
┋
NETWORK 3 //发送信息
LDW= AC2, +0
AB= VB301, VB604
AB= VB603, 16#00
ATCH INT_4, 10
DTCH 11
CRETI
NETWORK 4
LD SM0.0
WDR
┋
NETWORK 7
LD SM0.0
S M31.0, 1
DTCH 11
ATCH INT_5, 10
INTERRUPT3 //接收应答字节
NETWORK 1
LDN SM3.0
AN SM1.0
MOVB SMB2, *VD638
INCD VD638
XORW SMW1, AC0
DECW AC2
NETWORK 2
LDW= AC2, 16#0000
MOVW AC0, VW300
NETWORK 3
LD SM0.0
DTCH 8
ATCH INT_6, 10
INTERRUPT4 //发送信息码
┋
NETWORK 6
LD SM0.0
MOVW AC0, VW105
XMT VB100, 0
ATCH INT_6, 9
┋
INTERRUPT5 //发送应答帜
┋
NETWORK 9
LD SM0.0
MOVW AC0, VW105
XMT VB100, 0
R M31.0, 1
ATCH INT_6, 9
┋
INTERRUPT6 //转入接受中断
NETWORK 1
LD SM0.0
DTCH 9
DTCH 10
DTCH 11
ATCH INT_0, 8
6 计算机实时数据处理
计算机程序由车辆级网络供应商提供,根据双方制定的通讯协议,通常采用VB或VC编写,在此不做详细描述。
7 结束语
从以上叙述可以看到,由车辆计算机与PLC(或其它智能可编程设备)组建的车辆级实时监控系统关键在于解决计算机与PLC的实时通讯、PLC对车上设备状态实时监控的问题。通过这种方式组建的车辆实时监控系统,只是在原有的设备控制器软件内增加了通讯程序,所以并没有增加设备供应商的成本,因此这种监控系统的开发成本低,而且实时性好、操作简单、通用性强。再利用计算机易组网的功能,实现了整列车的实时监控,大大提供了列车行驶中的可靠性和安全性,因此这种网络系统在旅客列车、特别是高速列车上已普遍使用。