监控系统中S7-200系列PLC的通信协议设计

2014-03-29 21:36郭福田刘心红曾丽丽
大庆师范学院学报 2014年3期
关键词:PC机通信协议寄存器

郭福田,刘心红,曾丽丽,赵 忖,张 昕

监控系统中S7-200系列PLC的通信协议设计

郭福田,刘心红,曾丽丽,赵 忖,张 昕

(东北石油大学秦皇岛分校应用技术学院,河北秦皇岛066004)

S7-200系列PLC自由口通信方式可用于PC机对PLC的监控,现有的S7-200系列PLC通信协议要么针对某一具体控制系统,要么比较复杂,理解困难,使用不便,通用性不强。本文利用S7-200系列PLC自由口通信方式中灵活的接收控制功能,设计了简单、可靠的通信协议,实现了简易、高效、通用性强,便于移植的通信程序。协议采用十六进制,发送和接收协议格式类似,字节数固定,通过变量寄存器可读写PLC中任何存储器中的数据,便于实现PC机对PLC的远程监控。

通信协议;PLC;自由口;异或校验;中断

0 引言

Siemens S7-200系列PLC是广泛适用于中小型设备控制的工业可编程控制器,以其可靠性高、丰富的指令和内置功能、通信能力强、性价比较高等特点,在工业控制领域中得到越来越广泛的应用。在工业场合通常利用PLC和PC机通信构成PC机监控系统,其中PLC作为下位机完成现场各种信号和数据的采集、运算和控制。PC机作为上位机可提供人机交互界面,实现数据的处理以及现场数据的实时显示等监视和远程控制等功能。监控系统能够充分发挥PC机与PLC在工业控制中的优势,实现PC机和PLC的结合的监控系统的关键问题之一就是两者之间的通信问题。将PC机的串行口RS-232转换为RS-485后就可以和现场PLC等RS-485接口设备相连,实现对现场RS-485串行总线上各种设备的远程监控。由于S7-200系列PLC基于RS-485串行总线的通信协议较多[1],最经济的就是采用PPI(Point to point interface点到点接口)协议和自由口(free-port)通信方式。PPI协议是西门子内部协议,不公开,适合西门子产品之间的通信。而自由口通信方式对用户完全开放,可以由用户灵活设计通信协议以适应不同的应用需求。

在PC机对S7-200系列PLC的监控监控系统中,现有的通信协议要么针对某一具体控制系统,要么比较复杂,理解困难,使用不便,通用性不强。本文针对S7-200系列PLC的通信端口0,利用其自由口通信方式中灵活的通信控制功能,设计了简易、可靠、高效的PC机监控通信协议。通过变量寄存器作中介可读写PLC中任何存储器中的数据,可实现PC机对PLC的远程监控。

1 通信协议设计

通信协议是监控系统的重要组成部分,它关系到整个系统的工作效率和稳定性。为保证PC机与多台PLC之间能够正确识别传输信息,通信协议中充分利用了s7-200的PLC自由口通信控制功能[2],考虑以下因素:

(1)协议采用十六进制,发送和接收帧格式类似,由于PLC中数据类型最多4个字节,因此信息帧中数据域采用4个字节。

(2)信息帧中包含PLC地址,可实现PC机与多台PLC的通信。

(3)PLC中采用帧间时间控制信息帧的开始,采用最大字符数控制信息帧的结束,保证PLC信息接收的完整。

(4)采用异或校验方式检测通信过程中的传输错误,保证监控数据的正确。

(5)PC对PLC读取和写入的请求帧和PLC应答帧采用同样帧格式,以简化PLC控制程序对信息帧的处理和PC机程序的编写。

PC机向PLC发送的命令请求帧格式:

其中PLC地址域为目标PLC地址,值为01(信息帧中数值均采用十六进制)到FF之间;读写域为读PLC中数据用00,写入数据到PLC中用01;寄存器类型域分3种类型,输入映像寄存器为00,输出映像寄存器为01,变量寄存器为02;寄存器号域为读写的PLC寄存器编号;读取PLC数据时,数据域中的4个字节为无效数据。写数据到PLC时,数据域中是写入到指定寄存器的4个字节数据;校验码域是对信息帧前面所有字节异或运算形成的异或校验码。

PLC机向PC发送的应答请求帧格式与PC机向PLC发送的命令请求帧格式基本相同,区别只在数据域的含义有差别。读命令的应答帧中数据域为PLC中寄存器号开始的4个字节数据。写命令的应答帧中数据域为写入PLC寄存器后又读出的数据,由此可判断写入PLC的数据是否正确。

2 通信程序设计

通信程序的设计思想是通常PLC处于接收状态,当收到信息帧后,使用接收完成中断处理接收到的数据,然后使用定时中断延迟后发送数据,在发送完成中断中重新返回接收状态[3]。PLC只有处于RUN模式时,才能设置为自由口通信方式。当PLC回到STOP模式时,自动停止自由口通信方式而转为PPI通信方式,这时PC机上编程软件可对PLC编程。PLC通信功能的初始化包括以下内容:

首先设置自由口控制寄存器SMB30,在PLC运行时使端口0进入自由口通信方式,以及设置通信端口0上常用的串行口通信参数,如波特率、数据位和奇偶校验等参数。为了通用性,这里设置为波特率9600、8位数据和无奇偶校验,即SMB30的值设置为9[4]。

其次控制接收信息方式。信息控制寄存器SMB87中包含了对接收信息控制的各种方法。这里结合前述信息帧的格式,设置接收信息控制功能包括:使能接收信息功能;使用SMW90设置信息帧开始空闲时间5ms;使用SMW92设置信息帧间超时时间为100ms。这样接收信息控制寄存器SMB87的值为9C。同时由前述帧结构可以看出,每帧有10个字节,因此使用SMB94设置信息帧最多接收10个字符。

通信程序中采用了常用的XOR校验方法,发送方将校验码附在帧后,接收方收到数据后都要进行校验以确保数据正确时,一致则继续,错误则丢弃。例如,当PLC接收到针对该PLC的信息后,则对收到的数据进行异或校验,若校验正确,则对指定的寄存器进行读写,读写完成后延时5ms后返回应答信息。PLC发送完信息后,再进入接收状态[5]。

2.1 初始化程序

LD SM0.0 //该位始终为1

MOVB 9,SMB30//9600 bit/s,8位数据,无校验,1位停止位

MOVB 16#9C,SMB87//允许接收,起始时间和信息帧超时检测

MOVW 5,SMW90//开始接收的空闲时间为5ms

MOVW+100,SMW92//接收超时时间为100 ms

MOVB 10,SMB94//接收的最大字符数为11

ATCH RCV_INT:INT0,23//接收完成事件连接到中断程序0

ATCH SEND_INT:INT1,9//发送完成事件连接到中断程序1

ENI//允许用户中断

RCV BUFFER:VB60,0//通信端口0的接收缓冲区指针指向BUFFER

2.2 接收完成中断程序

LD SM0.0//该位始终为1

AB<>BUFADD:VB61,16#02//收到PLC地址不是2

JMP 1//退出

NOT

CALL FCS:SBR1,&BUFADD:&VB61,9,#XORCODE:LB0 //求异或校验码

LDB=#XORCODE:LB0,BUFXOR:VB70//如果校验正确

LPS

AB= BUFREG:VB63,2 //读写V寄存器

MOVD&VB0,#RWADD:LD7

LRD

AB=BUFREG:VB63,1//读写Q寄存器

MOVD&QB0,#RWADD:LD7

LRD

AB=BUFREG:VB63,0//读写I寄存器

MOVD&IB0,#RWADD:LD7

LRD

MOVW BUFOFF:VW64,#OFFADD_W:LW1//读写偏移

LRD

ITD#OFFADD_W:LW1,#OFFADD_D:LD3//字转换为双字

LRD

+D#OFFADD_D:LD3,#RWADD:LD7//读写偏移+基地址

LRD

AB=BUFRW:VB62,0//PC读PLC

BMB*#RWADD:*LD7,BUFVAL:VB66,4

LRD

AB=BUFRW:VB62,1//PC写PLC

BMB BUFVAL:VB66,*#RWADD:*LD7,4//先写

BMB*#RWADD:*LD7,BUFVAL:VB66,4//后读

LPP

MOVB 5,SMB34//定时中断0延时时间为5ms

ATCH TIMER_INT_0:INT2,10//启用定时中断0

CRETI

LBL 1

LD SM0.0

RCV BUFFER:VB60,0//启动下一次接收

2.3 延迟发送中断程序

LD SM0.0

DTCH 10//断开定时器中断

CALL FCS:SBR1,&BUFADD:&VB62,9,BUFXOR:VB71 //求校验码

XMT BUFFER:VB60,0//开始发送

2.4 发送完成中断程序

LD SM0.0

RCV BUFFER:VB60,0//准备接收

2.5 异或校验程序

LD SM0.0

MOVB 0,#XORCODE:LB6//异或校验初值为0

FOR#TEMPINDX:LW7,+1,#BYTENUM:LW4

LD SM0.0

XORB*#STARTADD:*LD0,#XORCODE:LB6//异或运算

INCD#STARTADD:LD0//指针增1,以便取下一个字节

NEXT

2.6 主程序

LD SM0.1//进入运行状态时

CALL SBR0//调用通信初始化程序

…//PLC控制程序部分

3 通信程序的使用

为了方便本通信程序的应用,采用符号表定义涉及到的变量寄存器,见表2。应用时根据PLC控制程序中变量使用情况,修改表2中的变量寄存器号,就可在满足通信程序要求的同时防止与控制程序中已使用的变量寄存器冲突。该通信程序的子程序使用了局部存储器以及接收和发送缓冲区共用来减少变量存储器的使用量,由表2可以看出通信程序中仅使用了11个字节变量存储器。变量存储器用量越少,越方便修改和应用。

在具体PLC控制程序使用本通信程序时,必须在主程序开始运行处,调用通信初始化程序。然后,PC机与PLC中指定的变量寄存器通信,获取现场设备数据,实现远程监控。

4 测试

在PC机与PLC构成的监控系统中,PC机上的监控程序根据PLC的通信协议发送命令请求帧来读写PLC中指定的寄存器,PLC控制程序再根据这些指定寄存器进行现场控制或返回现场运行状态。测试时在PC机使用串行通信调试软件模拟PC机上的监控程序。修改PLC中通信程序以模拟现场控制程序,如在PLC主程序中增加下述语句来测试PLC的功能:输入寄存器测试;输出寄存器测试;读取PLC当前时钟信息;读取模拟电位器值。

LD SM0.0 //调用通信程序举例

TODR VB100//将当前时间和日期8个字节放在VB100处,供PC机读取

MOVW SMW28,VW108//将模拟电位器0和1的值放在VB108处,供PC机读取

当PC机发送写输出寄存器命令02 01 01 00 00 04 05 04 05 02时,PLC上Q0.2、Q1.0、Q1.2灯亮,与04 05值相符,且PC机收到相同信息帧,都说明了写功能正确。当PC机发送读输入映像寄存器命令02 00 00 00 00 01 02 03 04 06时,PC收到02 00 00 00 00 08 00 00 00 0A,其中08对应PLC上I0.3为高,与实际相符。当PC机发送读取VB100内容的命令02 00 02 00 64 01 02 03 04 60时,收到02 00 02 00 64 13 10 11 21 57,说明当前日期为13年10月11日21时。将PLC的2个电位器的值分别调为100和200后,PC机发送读取VB108内容的命令02 00 02 00 64 01 02 03 04 68时,收到02 00 02 00 6C 64 C8 00 00 C0,其中64(即十进制100)和C8(即十进制200)即是2个电位器的当前值。说明读功能正确。

5 结语

利用S7-200系列PLC的自由口通信功能为监控系统设计了通用的PLC通信程序,占用PLC存储器资源少,并且利用了符号表对其进行了定义,易于修改。通信协议简单、可靠,便于理解。这些优点使其方便地用于具体的PC机和PLC构成的监控系统。该通信协议已经用于一个太阳能热水监控系统中,通信可靠,效果良好。通信协议的设计思想和通信程序的编程方法也可用于设计其他PLC产品的通信。

[1]西门子(中国)有限公司.深入浅出西门子S7-200PLC[M].北京:北京航空航天大学出版社,2003:18-25.

[2]赵景波.零基础学西门子S7-200 PLC[M].北京:机械工业出版社,2010:181-207.

[3]杨志刚,钱俊磊.西门子S7-200系列PLC与单片机之间的自由口通信[J].河北理工学院学报,2005,27(4):77-80.

[4]刘涛.S7-200系列PLC与PC间自由口通讯的实现[J].现代电子技术,2004,14(4):5-6.

[5]马启青,刘志强,韩建武,等.基于自由口模式实现S7-200系列PLC与PC机串行通信[J].微计算机信息,2003,19(11):32-33.

Designed of Communication ProtocolWith S7-200 PLC for Supervisory Control System

GUO Fu-tian,LIU Xin-hong,ZENG Li-li,ZHAO Cun,ZHANG Xin

(School of Applied Technology,College of QingHuangDao of Northeast Petroleum University,Qinghuangdao 066004,China)

The free-port communicationmode of S7-200 PLC can be used formonitoring PLCwith PC in the supervisory control system,all existing communication protocols using for special application or it is too complex to understand and application.This paper uses flexible function of receivemessage control of S7-200 PLC’s freeportmode,designs a simple,reliable communication protocol,programs a high-performance,universal communication routine simply and easily,and easily using to special application.This protocol is hexadecimal,sending format as like as receive,fixed bytes,can read and write any register of PLC,so that it easy use formonitoring PLC with PC.

communication protocol;PLC;free-port;interrupt

TP2

B

2095-0063(2014)03-0005-05

2013-09-21

郭福田(1965-),男,陕西蒲城人,东北石油大学秦皇岛分校应用技术学院副教授,从事计算机控制、数据通信等研究。

黑龙江省教育科学“十二五”规划课题(GZC1213020)。

DOI10.13356/j.cnki.jdnu.2095-0063.2014.03.002

猜你喜欢
PC机通信协议寄存器
STM32和51单片机寄存器映射原理异同分析
Lite寄存器模型的设计与实现
基于Z-Stack通信协议栈的红外地温采集电路设计
基于三菱FXPLC的感应淬火机床与PC机的串行通信实现
VC.NET下实现dsPIC单片机与PC机的通信
排除OLT设备登录故障
基于DMX512通信协议的多路转发器设计与研究
基于NS-3的PLC多频通信协议仿真平台设计与实现
VIVID3彩色超声仪结构原理及维修
RSSP-I、RSSP-Ⅱ及SAHARA三种安全通信协议实现技术简介