西门子PLC与上位机自由口通讯的设计

2011-11-07 08:04张新军崔艳艳
重庆电子工程职业学院学报 2011年1期
关键词:子程序字符字节

张新军,崔艳艳

(河南省济源职业技术学院电气工程系,河南济源454650)

西门子PLC与上位机自由口通讯的设计

张新军,崔艳艳

(河南省济源职业技术学院电气工程系,河南济源454650)

介绍了西门子S7-200系列PLC在串行通讯技术中使用自由口数据传输的指令格式以及PLC与上位机通讯的软硬件实现方法。

PLC;PC;自由口通讯

1 引言

可编程控制器PLC(Programmable Logic Controller)具有可靠性高、I/O接口模块丰富、模块化结构等特点,被广泛应用于各种工业环境中。西门子S7-200系列PLC在国内广泛采用,在其内部有一个特殊功能寄存器SMB30(端口0)和SMB130(端口1),PLC可以根据其中的内容,按照一定的协议实现与计算机间的通讯。

在现代的工业控制现场,工控机作为上位机对现场进行实时监控,完成可视化人机操作界面、图形显示、数据库、通讯及联网等。而下位机PLC则循环地读入设备信号,并进行逻辑判断操作、输出控制信号、控制设备运行。本研究中用PLC读取现场的数据值,并将数据用自由口通讯方式送给上位机。

2 系统的硬件构成及通信原理

西门子S7-200型PLC具有较高的性能价格比,它带有两个RS485通讯口,而上位机的串行口是RS232,所以可采用西门子公司专用的PC/PPI编程电缆作为上下位机的连接电缆,负责RS485和RS232的转换,并具有隔离抗干扰的功能。硬件构成如图1所示[1]。

自由口通讯是建立在RS-485硬件基础上的一种通讯方式,用户可以自己定义一些简单、基本的通讯协议,如数据长度,奇偶校验等,实现比较复杂的通讯功能,以适应各种通讯协议。自由口通信方式是S7-200 PLC的一个很有特色的功能,它使S7-200 PLC可以与任何通信协议公开的设备、控制器进行通信。

自由口模式下,PLC主机处于RUN方式时,用户可以用接收中断、发送中断和相关的通信指令来编写程序控制通信口的运行;当主机处于STOP方式时,自由口通信被终止,通信口自动切换到正常的PPI协议运行[2]。

3 PLC自由口通信数据传送的格式设置

3.1 自由端口的初始化

PLC的自由口模式通信编程首先对串口初始化,通过对特殊存储字节SMB30(端口0)写入通信控制字,来设置通信的波特率、奇偶校验、停止位和数据位数,这些设定必须与上位机设定值相一致。

3.2 自由口模式下收发数据

3.2.1 发送数据

PLC在接到上位机指令后,可以用XMT指令发送数据,发送一个21字节长反馈信息(在本例中为21字节,也可改变),数据格式见表1。状态信息字节包含指令执行的状态信息,其中,起始字符标志着反馈信息的开始状态信息,如定义为ASCII码的“g”;状态信息字节包含指令执行的状态信息,如用01H代表读取正确、02H代表写入正确、03H代表BCC码校验错误、04H代表指令不合法;数据区为读指令所要读取的数据,以十六进制ASCII码表示;BCC校验码是反馈信息数据的异或和;结束字符标志着反馈信息的结束,如定义为ASCII码的“G”。

图1 硬件构成

表1 反馈信息格式

3.2.2 接受数据

PLC在第一次扫描时执行初始化子程序,对端口及RCV指令进行初始化。初始化完成后,运行RCV指令使端口处于接收状态。接收的数据放到接收缓冲区,本例的RCV缓冲区的格式如表2。其中,指令类型表示上位机让PLC执行什么操作,如读或写;目标站号是分配给PLC的一个代号;目标寄存器地址是PLC要进行读写的存储区的地址;读写字节数是PLC接到命令后,对存储区进行读写的字节数;写入数据是上位机要写入PLC的数据。从目标站号到BCC校验码这几项内容,都是把16进制数编码为ASIIC码来表示的;在接收到结束字符时,会产生一个中断(对端口0为中断事件23)[2-3]。

表2 接收缓冲区

4 系统程序设计

4.1 上位机程序设计

本系统中用上位机PC作主机,向PLC发送读/写指令,PLC接收到信息后判断传输正确与否,若错误则反馈BCC码错误信息给上位机。上位机通过RS232口与PLC进行通信,在上位机中利用VB编程软件的Mscomm控件,对控件进行简单的设置就可以实现PLC与PC机之间的串行通信。上位机的通讯程序流程图如图2所示。

图2 上位机通讯流程图

4.2 PLC程序设计

S7-200 CPU通讯端口是RS485半双工通讯口,因此发送和接收指令不能同时进行。CPU使用XMT/RCV指令向指定通讯口以字节为单位发送/接收一串数据字符,要发送的字符以数据缓冲区指定,一次发送的字符最多为255个,指令执行完成后,会产生一个中断事件(发送指令Port0为中断事件9,接收指令Port0为中断事件23)。PLC在第一次扫描时执行初始化子程序,对端口及RCV指令进行初始化。初始化完成后,运行RCV指令使端口处于接收状态,接收完后启用中断,中断程序对指令进行译码,同时给校验子程序入口寄存器置位,发送接收标志位复位,并将写入接收数据地址指针。计算接收数据的BCC码,若正确且结束字符为设定值时则给BCC码正确标志位置位;若标志位为“写”,则调用“写”子程序,向PLC寄存器中写入控制值,进而控制现场的设备运行;若为“读”,则调用“读”子程序,则从PLC的数据缓冲器中读取数据值;如果BCC码不正确,则直接向上位机发送BCC校验码错误的信息;如BCC码正确而结束字符不等于设定值,则向上位机发送指令不合法的信息[4]。PLC的通讯程序流程图如图3所示。

图3 PLC通讯程序流程图

5 结语

本文采用自由口通讯协议实现了PLC和上位机的数据交换,同时可以方便地开发出PC机和PLC通信应用软件,这种方法节省投资,对小规模的系统具有现实意义。系统具有实时性好、速度快、可靠性高、操作方便等优点,达到了预期的效果。经应用于某企业的温度采集系统,完全符合企业要求。

[1]孙平.可编程序控制器原理及应用[M].北京:高等教育出版社,2003.

[2]韩宝彬.PC与PLC在自由口模式下的串行通信[J].2003.

[3]西门子公司.S7-200可编程控制器系统手册(第四版)[M]. 2005.

[4]http://www.gkong.com/中华工控网[EB/OL].2010-11-25.

责任编辑 王荣辉

An Approach to the Implementation of Freeport Communication between PC and SIMATIC PLC

ZHANG Xinjun,CUI Yanyan
(Electrical and Engineering Department,Jiyuan Vocational and Technical College,Jiyuan HeNan,454650 China)

This paper presents an approach to the implementation of freeport communication between PC and SIMATIC PLC.In this approach,Freeport communication is used and the SIEMENS S7-200 communication board is connected to the PC.This paper describes the format of these instructions in detail,in which the realization method about software and hardware are also introduced.

PLC;PC;freeport communication

TP39

A

1674-5787(2011)01-0162-03

2010-12-28

张新军(1976—),男,硕士,讲师,从事教学工作;崔艳艳(1975—),女,硕士,讲师,从事教学工作。

猜你喜欢
子程序字符字节
No.8 字节跳动将推出独立出口电商APP
字符代表几
一种USB接口字符液晶控制器设计
图片轻松变身ASCⅡ艺术画
No.10 “字节跳动手机”要来了?
HBM电子称与西门子S7-200系列PLC自由口通讯
简谈MC7字节码
浅谈子程序在数控车编程中的应用
子程序在数控车加工槽中的应用探索
西门子840D系统JOG模式下PLC调用并执行NC程序