PC与松下FP系列PLC的通信
PLC作为工业现场的控制器, 以其性能稳定, 编程简单, 结构紧凑, 通用性强等优点, 已得到了广泛的运用;而计算器在图象处理, 报表打印, 中文显示等方面具有很强的功能;在现代的控制系统中, 已经在很多地方将两者结合起来使用, 充分发挥两者的优势, 因此, PC和PLC之间的通信显的尤为重要, 大多数PLC的通信协议都采用的是M O D B U S, 而松下FP系列采用的是其专用的M E W T O C O L-C O M协议。本文通过实例详细讲解了利用该协议, 达到PC和PLC通信的目的。
1 松下PLC的通信协议
松下FP系列PLC的通信协议是采用松下公司专用的M E W T O C O L-C O M协议。在该协议中, 数据传送采用的是ASCII码形式, 首先由计算器发送指令, PLC接受到指令后, 自动进行相应的响应, 计算器根据PLC的响应, 可以得知PLC是否正确执行了刚刚发送的指令, 这样就构成了一个交互式的操作, 以确保PC与PLC之间的通信正常, M E W T O C O L-C O M的指令格式如 (表1、表2、表3) 。其中, “%”为起始符号, 标记每一帧报文的开始, “CR”为结束符号, 标记每一帧报文的结束, “AD”为每一站PLC的地址, 用两位十六进制数表示, 如01则代表第一台PLC, “#”, “$”, “!”标记该帧报文为何种类型, 其分别对应为:指令信息, 应答信息 (正常) , 应答信息 (错误) , “BCC”为校验码, 为两位十六进制数, 其初值为“0”, 然后从起始符开始与该帧报文中每一字节按位进行异或运算得到的。
2 PC端VB程序的编写
PC端的程序我们采用VB6.0和MSCom m控件来编写。V B的通信控件M S C O M M 3 2提供了简单的串行口通信功能, 使用它可以建立与串行口的连接, 通过串行口连接到其它设备, 发送命令, 接受数据, 以及监视和响应串行通信中发生的事件和错误等。我们只要通过上位机的程序, 向PLC按照M E W T O C O L-C O M协议规定的格式发送命令, PLC就可以作出相应的响应。
MSComm控件提供了两种处理通信的方式:一种为事件驱动方式, 该方式相当于一般程序设计中的中断方式, 当串口发生事件或错误时, M S C o m m控件会产生O n C o m m事件, 用户程序可以捕获该事件进行相应处理, 本文的两个例子均采用该方式;另一种为查询方式, 在用户程序中设计定时或不定时查询MSComm控件的某些属性是否发生变化, 从而确定相应处理, 在程序空闲时间较多时可以采用该方式。
利用MSComm控件实现计算机通信的关键是理解并正确设置MSComm控件众多属性和方法.以下是M S C o m m控件的常用属性和方法。
Commport:设置或返回串口号。
Settings:以字符串的形式设置或返回串口通信参数。
Portopen:设置或返回串口状态。
InputMode:设置或返回接收数据的类型。
Inputlen:设置或返回一次从接收缓冲区中读取字节数。
InBufferSize:设置或返回接收缓冲区的大小, 缺省值为1024字节。
InBufferCount:设置或返回接收缓冲区中等待计算机接收的字符数。
Input:从接收缓冲区中读取数据并清空该缓冲区, 该属性设计时无效, 运行时只读。
OutBufferSize:设置或返回发送缓冲区的大小, 缺省值为512字节。
OutBufferCount:设置或返回发送缓冲区中等待计算机发送的字符数。
Output:向发送缓冲区发送数据, 该属性设计时无效, 运行时只读。
Rthreshold:该属性为一阀值。当接收缓冲区中字符数达到该值时, MSComm控件设置Commevent属性为ComEvReceive, 并产生OnComm事件。用户可在OnComm事件处理程序中进行相应处理。若Rthreshold属性设置为0, 则不产生OnComm事件。例如用户希望接收缓冲区中达到一个字符就接收一个字符, 可将Rthreshold设置为1。这样接收缓冲区中接收到一个字符, 就产生一次O n C o m m事件。
Sthreshold:该属性亦为一阀值。当发送缓冲区中字符数小于该值时, M S C o m m控件设置C o m m e v e n t属性为C o m E v S e n d, 并产生OnComm事件。若Sthreshold属性设置为0, 则不产生O n C o m m事件。要特别注意的是仅当发送缓冲区中字符数小于该值的瞬间才产生O n C o m m事件, 其后就不再产生OnComm事件。例如Sthresho ld设置为3, 仅当发送缓冲区中字符数从3降为2时, M S C o m m控件设置C o m m e v e n t属性为C o m E v S e n d, 同时产生O n C o m m事件, 如发送缓冲区中字符始终为2, 则不会再产生O n C o m m事件。这就避免了发送缓冲区中数据未发送完就反复发生O n C o m m事件。
CommEvent:这是一个非常重要的属性.该属性设计时无效, 运行时只读。一旦串口发生通信事件或产生错误, 依据产生的事件和错误, MSComm控件为CommEven t属性赋不同的代码, 同时产生OnComm事件。用户程序就可在O n C o m m事件处理程序中针对不同的代码, 进行相应的处理。Co mmEvent属性的代码、常数及含义参见表4及表5。
为了使读者能够清楚的了解两者之间的通信, 现举例如下。
整个程序的界面如图 (1) 所示。
程序的部分代码如下:
以上只是整个程序中的部分代码, 我们在写程序的时候, 可以查阅松下电工ME W T O C O L-C O M通信协议手册, 根据我们的实际需求, 给PLC下达不同的指令, 然后PLC会响应指令, 返回我们想要的结果, 或执行不同的动作。以上程序在WinXP+VB6.0中调试通过, 串行通信参数须设置为“9600, o, 8, 1”。
4 结语
PC不仅能实现一般人机界面的相关功能, 而且还可以处理和统计大量的数据, 另外, 通过网络, 也可以实现远程控制。本文只是抛砖引玉, 读者可以根据实际的需要, 利用M E W T O C O L-C O M协议, 制作出现场所需要的控制程序。
摘要:本文介绍了PC与松下FP系列PLC的通信。PC端程序采用VB6.0开发, 通过MSComm控件, 按照松下PLC MEWTOCOL-COM协议, 实现了PC通过RS-232的方式和松下PLC的通信的目的。着重介绍了松下MEWTOCOL-COM协议的内容, 以及MSComm控制的一些常用的事件和属性。
关键词:VB6.0,松下,PLC,通信
参考文献
[1] 松下电工[J].MEWTOCOL-COM通信协议, 2002.
[2] 松下电工[J].FPΣ系列编程手册, 2002.