基于VB的PLC与计算机间串行通信
2013-09-04曹春泉
钱 华,曹春泉
(1.苏州工业园区培训管理中心,江苏 苏州 215123;2.苏州工业园区职业技术学院,江苏 苏州 215123)
0 引言
随着工业控制要求的不断发展,上位机监控已经成为工厂数据采集的一个重要环节。大多数控制系统都趋向于用通用工程软件(如 Visual Basic、Visual C++、DELPHI等)编制上位机监控界面。Visual Basic易学易用,还提供了一套可视化设计工具,大大简化了程序界面的设计工作,同时其编程系统采用了面向对象、事件驱动机制,使用Visual Basic可以方便地完成从小的应用程序到大型的数据库管理系统的编程任务。
本文以三菱FX系列PLC通信为例,利用VB6.0提供的通信控件MSComm,实现PLC与计算机简单可靠的通信。
1 系统组成
本案例采用PC计算机作为上位机,三菱FX系列PLC作为下位机,通过SC-09电缆使PC计算机与PLC连接,采用自由端口模式通信,电缆的一端连在计算机串口上,另一端连接在PLC的RS-422编程口。通过使用自由端口模式的通信方式来实现对PLC寄存器的读/写操作。项目选用三菱FX2N-64MR型PLC。系统图如图1所示。
图1 系统结构图
2 PLC与PC间的通信协议
PC与PLC间的通信方式分为同步通信和异步通信两类。目前主流的通信方式有RS-232、RS-422和RS-485,他们都是串行数据接口标准,是由美国电子工业协会EIA制定的一种串行物理接口标准,其中最常用的是RS-232通信方式。
本案例采用RS-232的通信格式,在这种情况下需要设置波特率、奇偶校验位和停止位等参数,只要上位机和下位机这些参数设置一致就可以通信了。一般设置波特率为9 600b/s、偶校验、7位数据位、1位停止位。但是此种通信方式只能由上位机发出命令,PLC响应上位机发出来的命令,当PLC不能正确响应时,PLC返回响应错误标志。上位机发出的数据是以帧为单位发送和接收的,其格式如表1所示。
表1 数据帧格式
通常,一个数据由5部分组成。累加和是从STX后面一个字节开始累加到ETX的和,取它们ASCII码所得和的最低二位数。其中STX对应的16进制数位0x02,是判知传输资料的开始。命令字是对下位机所做动作的指示,比如要求读取或写入等。命令字见表2。
表2 命令字
3 三菱PLC的设置
三菱FX PLC在进行计算机链接(专用协议)和无协议通讯(RS指令)时均须对通讯格式(D8120)进行设定包括波特率、数据长度、奇偶校验、停止位和协议格式等。
首先对D8120采用下述设置,设置值为688E。即数据长度为7位,偶校验,2位停止位,波特率为9 600b/s,无标题符和终结符,采用计算机链接(RS-232C),自动添加和校验码,采用专用协议格式1,同时设定站号为0。具体设定如图2所示。
此外,对于采用RS485形式1∶N计算机链接的还必须对站点号(D8121)进行设定。设定的范围从00H到0FH(即0到15)。
FX PLC进行计算机链接时可用的专用协议有格式1和格式4。两者的差别在于是否在每一个块上添加了CR+LF,其中添加了CR+LF的为格式4。本文采用格式1。
图2 D8120的设置
4 上位机程序的编制
本文采用 Microsoft公司的 Visual Basic 6.0中文企业版编制上位机程序。Visual Basic中提供了一个名为MSComm的通信控件便于设计串行通信的程序。MSComm控件的主要属性有:
(1)CommPort属性:用于指定所要使用的串行端口号。
(2)Settings属性:用于设置初始化参数。以字符串的形式设置波特率、奇偶校验、数据位、停止位等4个参数。该属性的设置必须和三菱PLC中D8120的相关设置保持一致。在这里,统一采用“9600,e,7,2”的设定。
(3)PortOpen属性:用于设置通信连接端口的状态。在使用串行端口之前必须先将要使用的串行端口打开。在上位机程序中应进行如下设定:
Private Sub Form_Load()
MSComm1.CommPort=1'选择COM1
MSComm1.Settings="9600,e,7,1"'设置端口属性
MSComm1.PortOpen= True'打开端口
End Sub
(4)Output属性:MSComm控件的Output属性提供了发送的功能,当从计算机向可编程控制器写入数据或从可编程控制器读取数据时,上位机应当先发出如格式1的指令字符串。
(5)Input属性:与Output属性相反,Input属性提供了接收数据的功能。它将对方传到输入缓冲区中的数据读进程序中,并清除缓冲区中已被读取的数据。
对于MSComm控件的其他一些属性使用VB的默认值即可。上位机程序流程图如图3所示。
以上位机控制电机为例,其界面如图4所示。
使用VB6.0编写上位机软件的最大优势是直接在VB中引入了控件,简化了编程,使上位机界面更加简单。而且Windows系统也使用了大量的控件,如按钮、文本框等。只要熟练掌握了这项技术,对工控会有很大的帮助,特别在编写上位机程序方面。
5 结束语
经过本案发现,使用VB通信可以解决大部分分散控制系统的通信问题,该方法简单、稳定、可靠,大大缩短了工程师的开发周期,并且该方案功能强大,不仅可以对现场工况监控,而且还可以配合数据库实现数据整理、上传等功能。
图3 上位机程序流程图
图4 上位机界面
[1] 张辉.Visual Basic串口通信及编程实例[M].北京:化学工业出版社,2011.
[2] 徐天伟.Visual Basic实用编程技术[M].北京:清华大学出版社,2010.
[3] 龚仲华.三菱FX系列PLC应用技术[M].北京:人民邮电出版社,2010.
[4] 范逸之,陈立元.Visual Basic与RS-232串口通信控制[M].北京:中国青年出版社,2002.