应用MSComm控件实现计算机与PLC间的串行通讯
2012-08-15赵晴
赵 晴
葫芦岛市教育局,辽宁葫芦岛 125000
0 引言
可编程序控制器(PLC)专门用于工业控制,它的核心是以微处理器的结构为基础,在硬件结构上和普通的计算机基本一致。它在基本的计算机结构当中,加入了传统的继电器控制系统,使其具有了高度的可靠性,更好的适应工业现场的环境,而且具备了强大的联网处理功能,广泛地应用在工业控制生产过程中。
微软的Visual Basic提供了MSComm控件,通过硬件的串行端口传送和接收数据,实现了PC机与PLC之间的通信,为可视化程序对PLC的控制提供了可能。
本文基于西门子公司生产的S7-200型PLC,应用MSComm控件,编写了计算机与PLC通讯程序,包括了上位机和下位机相应的程序代码。提出了应用编程语言实现PC/PLC网络之间数据通信的软件解决方案,实现了用PC机对PLC的监控及控制。
1 PLC与计算机间的通讯
S7-200型PLC可以连接编程器、人机接口设备,甚至连接其他的PLC或PC机,组成PLC网络,可以实现PC与PLC、PLC与PLC的各种通信功能。同时可以应用PC的管理功能实现对PLC的编程、监控和联网的功能。S7-200系列PLC具有9针的RS-485接口,可以通过PC/PPI电缆与计算机连接,PLC之间可以通过SINEC-L2接口连接成PLC网络。
S7-200系列PLC主要有两种通信模式:一种为点对点(PPI)通信协议模式,用在PLC与编程器或人机接口产品之间通讯;另一种是自由口通讯模式,此模式对用户完全开放,用户可以自行设定通讯协议,使用程序控制串行通讯接口。
其中PPI通信模式需要在PLC的停止方式(STOP)下通信;自由口通讯模式要在PLC运行方式(RUN)下通讯。本文选用灵活性更高的自由口模式。在此模式下,可以通过发送中断、接收中断、发送指令和接收指令等命令控制串行通讯口的工作,用户可以自行设置通讯控制协议。把SMB30(端口0)和SMB130(端口1)的协议选择区置1,允许自由端口模式,通过SMB30和SMB130设置波特率与奇偶校验位。
2 PLC的通讯程序
通过S7-200系列PLC的可编程通讯端口模式可以实现很多复杂的通信功能。即可以组建成PLC网络进行PLC的多机通信,也可以组建成PC和多PLC的PLC监控通信网络,以及利用电信网络建立PC和多PLC的远程通信网络。
PLC存储器中的数据通过中断方式发送到上位PC机,下面是相应的程序:
LD SM0.1
MOVB 16# 09,SMB30 ;首次扫描时为PLC初始化自由端口,数据格式为9600波特率,8位数据位,无校验
MOVB 100,SMB34;采用定时器中断0
MOVB 1,VB100 ;发送字节数为1
ENI;允许进行中断
ATCH INT 0, 10;
以下为部分中断程序:
LD SM0.0
MOVB 120,VB101;PC机发送的数据
XMT VB100,0;向PC机发送数据,用0号端口,采用定时中断。
3 计算机通讯程序
在PC机上,编写程序实现PC与PLC的通讯。本文采用Visual Basic语言编写PLC与计算机间通讯程序的程序界面,控制程序部分应用MSComm控件,程序中通过设置控件的属性值和检查控件的事件来完成数据的发送和接收工作。
MSComm控件采用检测方法和事件驱动方法处理事件:程序检测方法可以在需要时通过检查CommEvent属性的值来检测事件和通讯错误,这种方法常用作非实时环境中,用来检测设备的某些响应情况。如果处于实时性要求高的场合,这种方法会占用CPU的运行时间,达不到实时控制的要求;事件驱动方法通过对OnComm控件事件的捕获处理通信事件,当接收到新的数据或者检测到通讯端口的状态发生了改变就会引发OnComm事件,应用程序捕获到这个事件并对其进行相应的处理,OnComm事件也可以用来捕获和处理通信中的错误。
PLC与计算机的通讯程序分为三个部分:初始化程序、发送程序和接收程序。
初始化程序设置通讯端口,可以选择串口1或串口2等等;设置发送和接收的波特率、有无校验位、设置数据位和停止位,一般情况下波特率选择9.6k或19.2k,无校验,8位数据位和1位停止位;将MSComm的InputMode置1,使得接收类型为二进制数据;将RThreshold属性置1,控件接收到一个字节数据就会触发OnComm()事件;清空发送缓冲区和接收缓冲区。
发送程序的数据格式:起始字符为0,结束字符为十六进制数&HFF,无校验。
接收程序通过MSComm控件的OnComm事件触发运行。由于PLC只有接收到PC机发送的信息后才开始发送数据,PC机在发送完成后如果OnComm事件被触发,就把接收到的第一个字节数据作为接收报文的开始,一直到串口再没有接收事件作为报文的结束。
运行PLC和PC机的程序,计算机和PLC能够互相发送和接收数据,实现了PC和PLC之间的串行通讯功能。
4 结论
本文应用VB语言的MSComm控件,通过可视化编程语言在PC机与PLC网络中实现了PC与PLC之间的数据通信,达到了应用PC机对工业自动化现场中PLC设备的监控和管理,在对PLC控制系统的调试过程中,缩短了调试周期,提高了工作效率。
此通信技术对西门子S7-200系列PLC及其他西门子工业控制产品的应用有着普遍的意义。
[1]范逸之.Visual Basic与分布式监控系统-RS232/485串行通信[M].北京:清华大学出版社,2002.
[2]Gofton P W.精通串行通信[M].北京:电子工业出版社,1995.
[3]蒋学润.基于VB的数据采集智能模块与上位机串行通信的实现[J].自动化与仪表,2003(6):61.