PLC 与上位机的通信实现
摘 要:本文先介绍了 S7-200 系列 PLC 的三种通信方式,及其在网络中通信的
RS-232C 和 RS-485 标准。在实例中,采用西门子公司的 S7-200 系列 PLC 为下位
机,按照 RS2485 标准与上位机通信;通信协议为以自由口模式创建用户自定义的
协议,数据传输格式为 16 进制 ASCII 编码,求和校验;上位机采用 VC 编程的可视
化界面。
关键词:PLC;串行通信;VC 编程;自由口模式
1、引言
工业控制领域中 PLC 作为一种高效、灵活、可靠的控制器,有着广泛
的应用。以 PLC 控制器为核心,上位 PC 机为实时监控体的控制系统已成为工业
自动化 PLC 控制系统的一个发展方向。实现 PLC 与 PC 的通信可以实现向上级
提供诸如工艺流程图、动态数据画面、报表显示等多种窗口技术,使 PLC 控制
系统具有良好的人机界面,通过上位机对 PLC 数据的读写监控实现现场数据的
采集、传送以及生产过程调度的自动化和信息化,其应用前景十分广阔。常用的
各种 PLC 网络有差异,但表现在 PLC 通信程序、系统联结和系统配置等方面,
通信机理有统一性。目前市场上通信组态系统结构复杂,价格昂贵,应用繁琐,
不适应用户使用。针对上述问题笔者以西门子公司的 S7-200 系列的 PLC 为研究
对象,提出了一种用 VC 实现上位机与 PLC 通信的方法。
2、S7-200 系列 PLC 通信方式
西门子 S7-200 系列性能优良,性价比较高,适用范围很广,因此本文
主要讨论西门子 7-200 系列与计算机之间的通信。
S7-200 系列通信方式有三种:
(1) 点对点 PPI 方式,用于与西门子公司的 PLC 编程器或其他该公司人
机接口产品的通信。该种通信方式采用的是 MSComm ActivcX 控件。PPI 是主/
从协议,网络上的 S7-200 均为从站,其他 CPU、SIMATIC 编程器或 TD200 为
主站。如果在用户程序中允许 PPI 主站模式,一些 S7-200CPU 在 RUN 模式下可
以作主站,它们可以用网络读和网络写指令读写其他 CPU 中的数据。PPI 没有
限制可以有多少个主站与一个从站通信,但是在网络中最多只能有 32 个从站。P
PI 通信协议是不公开的。
( 2) Profibus。Profibus 协议用于几分布式 I/O 设备的高速通信。S7-20
0CPU 需通过 EM277。Profibus-DP 模块接入 Profibus 网络,网络通常有一个主站
和几个 I/O 从站。这种方式使得 PLC 可以通过 Profibus 的 DP 通信接口接入 Prof
ibus 现场总线网络.从而扩大 PLC 的使用范围。PPI 协议和 Profibus 协议的结构模
型都是基于开放系统互连参考模型的 7 层通信结构。
(3) 自由通信方式。通过使用接收中断、发送中断、字符中断、发送指
令和接收指令,自由端口通信可以控制 S7-200CPU 通信口的操作模式。利用自
由口模式,可以实现用户定义的通信协议连接多种智能设备。
3、PLC 网络通信标准简介
(1) RS-232C 标准
通信的连接接口与连接电缆的相互兼容是通信得以保证的前提。它的实
现方法发展迅速,型式较多。其中 RS-232C 就是实际应用较多的标准之一,它是
计算机或终端与调制解调器之间的标准接口 RS - 232C 规范包括以下几个方而
内容:RS-232C 的机械规范定义内容是 25 针插头,螺钉中心距为 47.04mm±0.13
mm 宽,对其他尺寸也都作了规定。RS-232C 的电气规范是用比-3V 低的负电压
表示逻辑 0,用比+3V 高的正电压表示逻辑 1,数据传输率最高允许 20kbit/s 电
缆最长 15m,RS-232C 功能规范定义了电路之间的连接,以及它的含义。RS-23
2C 的规程规范定义的是协议,即事件出现的正确顺序。RS-232C 的缺点是数据
传输率低传输距离短。
(2) RS-485 标准
在许多工业环境中,要求用最少的信号连线来完成通信任务。日前广泛
应用的是 RS-485 串行接口总线,RS-485 支持半双工通信,分时使用一对双绞信
号线进行发送或接收。在点对点的远程通信时,它们的电路连接如图 2 所示。R
S-485 用于多站互联时实现简单,节省材料,可以满足高速远距离传送,构成分
布式网络控制系统十分方便。
4、通信网络接口的设计
在本工程中,我们采用的 PLC 为 CPU224 型,该可编程控制器的通信
端口为 RS-485 接口,由于 PC 机的串行端口为 RS-232 接口,且远离控制现场(P
LC 位置),因此 PC 机的 RS-232 接口必须通过 RS-232/RS-485 转换器转换后才能
与 PLC 通信端口连接,这种通信方式可以实现最远 1.2Krn 的远程通信。
PC 机的标准串口为 RS232。西门子公司提供的 PC/PPI 电缆带有 RS23
2/RS485 电平转换器,因此在不增加任何硬件的情况下,可以很方便地将 PLC
和 PC 机互联。具体硬件连接图如图 1:
图 l:硬件连接图
5、通信程序设计
(1) 上位机部分程序
单命令把 MSComm 控件加入到工程中。MSComm 控件通信功能的实现
实际上是调用了 API 函数。MSComm 控件有关属性如下:
CommPort:设置并返回通信端口号。Window 系统将会利用该端口与外
界通信;
Setings:设置并返回初始化参数。其组成格式为“BBBB。P。D。S”。B
BBB 为数据速率。P 为奇偶校验。D 为数据比特。S 为停止位;
PortOpen:设置并返回通信端口的状态。也可以打开和关闭端口;
Ouptut:向传输缓冲区写 1B 的数据;
Input:将传送到输入缓冲区的字符读到程序里;
RThreshold:设置在产生 OnComm 之前要接受的字符数;
InputLen:设置并返回 Input 属性从接收缓冲区读取的字符数;
InBbuffersize:设置或返回输入缓冲区的大小;
InBufferCount:返回输入缓冲区内等待读区的字节个数。可通过设置该
属性值为 0 来清除接收缓冲区;
InputMode:设置或返回传输数据的类型;
CommEvent:传回 OnComm 事件发生时的数值码;
部分代码如下:
//装载窗体时初始化并打开串口
m_Com.SetCommPort(1);
m_Com.SetInBufferSize(1024);
m_Com.SetOutBufferSize(512);
if(!m_Com.GetPortOpen())
m_Com.SetPortOpen(TRUE);
m_Com.Settings(/9600,n,8,10);
m_Com.SetRThreshold();
m_Com.SetInputLen(1);
m_Com.SetInputMode(0);
//发送主程序
Void CmainFrame::OnCommSend()
{
..//准备要发送的数据存放在数组 SxData[ ]中
CbyteArray Send;
Send.RemoveAll();
Send.SetSize(m);
For(i=0;i
pp 为校验选择;d 为每个字符的数据位数;bbb 为自由口比特率(kbit/s);
mm 为协议选择(从站或自由口模式)。
PLC 程序分为主程序和中断程序。主程序完成初始化通信口、开中断、
判断、发送数据等功能,中断程序完成接收和发送数据的功能。作为参考,中断
程序如下:
Receive
NETWORK1
LDSM010
ATHVB103,VB118,2
ATHVB115,VB119,2
SM011,1
MOVB0,VB120
MOVB&VB102,VD123
Switch
NETWORK1
LDSM010
RM011,1
NETWORK2
LDSM010
FORVW121,+1,+13
NETWORK3
LDSM010
XORB*VD123,VB120
NETWORK4
LDSM010
INCDVD123
NETWORK5
NEXT
NETWORK6
LDB=VB120,VB119
AB=VB117,81
SM010,1
Write
NETWORK1
LDSM010
RSM8717,1
RM010,1
RCVVB100,0
NETWORK2
LDSM010
MOVD&VB107,VD127
NETWORK3
LDSM010
ATHVD127,*VD135,8
7、结束语
试验结果表明,当数据传输速率为 916kbit/s 时误码率<,能够实现现场
网络的在线监控、调试及数据修改。由于程序中采用了以 16 进制 ASCII 码描述
数据传输格式,因此一条指令中的数据字节和控制字节不可能发生混淆,通信更
加可靠。本系统的成功研制将对工业控制系统的自动化、智能化、网络化的发展
提供有益的借鉴。
参考文献
[1] 西门子公司;SMATIC S7-200 可变程序控制器系统手册,2002
[2] 李现勇;Visual C++串口通信技术与工程实践[M],北京:人民邮电
出版社,2002
[3] 胡柯;VC 环境下 PLC 与上位机的实时通讯[J],PLC&FA,2003
[4] 陈在平;可编程控制器技术与应用系统设计[M],北京:机械下业出
版社,2002
[5] 郑晟,建平,张学;现代可编程序控制其原理与应用[M],北京;科
学出版社,2003