新闻中心

EEPW首页 > 消费电子 > 设计应用 > PC与PLC通信软件的设计开发

PC与PLC通信软件的设计开发

作者:时间:2001-11-09来源:

为了便于对工业设备的运作进行统一监控,生产上经常需要通过一台PC与多台PLCProgrammable Logic Controller)进行数据交换,特别是通过PLC将现场设备的一些关键参数传输到PC上并显示出来。为了迎合顾客的这个需求,各大PLC生产厂家都花大力气开发出了一系列以各类协议为基准的功能强大的管理监控软件,譬如Siemens公司开发的WINCC应用软件,其功能就令人眼花缭乱。

本文引用地址:http://www.eepw.com.cn/article/2810.htm

但同时应该指出的是,这些软件大都价格昂贵,而且其繁多的功能在许多小规模的生产场合或是教学使用中也并不十分必要,种种实际因素的限制使得购买这些软件对于很大一部分用户来说是不合算的。在这样一个背景下,开发一个简易实用的通信程序就体现出一定的价值。

本设计的主要目的是要满足中小用户及教学中利用PCPLC进行监控的需要。在实现通信的过程中,PLC被设置为Freeport自由口通信模式,所以用户只需要使用普通的PCPLC,以PC/PPI电缆外加双绞线将其依次连接就可以了。另外本设计中用到的PC至少要有一个串行通信口,PLC方面则主要是以带DP口的Siemens S7 200 系列PLC为例进行说明。

本软件在功能上主要包括PLC>PCPC>PLC两部分,在实际编写时PCPLC两方面均须编程。其中PC程序用Visual Basic6.0编写,以其自带的MSComm通信控件作主要的通信控制,PLC程序则在STEP7 MicroWIN环境中编写。同时假定一台PC与七台PLC进行通信。

整个软件实现的基本功能就是当用户需要读取数据时,在控制界面(如图1)上选择某台PLC并点击接收数据按钮后,相应PLC将会把存储在发送区的数据发送过来,发送结束后,数据接收框显示数据接收完;当用户需要发送数据给某台PLC时,也先选择需要的PLC,再在数据发送框中填入要发送的数据,点击发送数据按钮,PC就会将用户填入的数据送到PLC中接收数据区,PLC同时还会把接收到的这个数据显示出来。并且整个程序可以很方便地进行功能扩展。

下面就分别从PCPLC两个方面具体说明通信的实现过程。

这里,PC程序是占主导地位的,其流程图示于图2。由PC程序来传达用户究竟是要进行读还是写操作,以及具体对哪台PLC进行操作。这几项命令在软件中由一个控制字来表达,其定义如图3

PC方面程序开始运行后,MSComm控件将把串口初始化,而后程序等待用户选择要进行操作的PLC并点击发送数据接收数据按钮。根据用户的操作,程序会自动生成一个相应的控制字,并将其传送给PLC。如果此时用户是要读取某台PLC的数据,则PC在发送完控制字后会停下来等待相应PLC将数据发送过来。一旦接收到数据,PC会首先判断是否结束帧,如不是,就将此数据装入数据接收区,然后发送确认帧给PLC,并把接收到的数据在控制界面上的接收数据框中显示出来提供给用户。如果是结束帧,PC就会显示在数据接收框中显示出数据接收完,而后程序停止运行直至用户再次进行操作。

如果用户是要向某台PLC发送数据,PC将会在发送完相应控制字后打开一个定时器,时间到后便读取PLC已经送来的EOF文件结束字符(ASCII码为26)。读取这个字符可以触发MSComm的OnComm事件,并使其CommEvent属性值为comEvEOF。这样,通过一个以CommEvent为表达式的条件分支语句就可以使程序转入发送有效数据(即用户写入控制界面上发送数据框的数据)的操作。这里设置定时器的目的会在下面介绍PLC方面程序时予以具体说明。PC执行完发送程序段就会暂停下来等待用户的下一步指示。

PLC在初始化结束之后就根据PC送来的控制字进行相应的操作,其程序流程图如图4所示。PLC首先将接收到的控制字拆分,判断出用户的具体要求,然后调用相应的子程序。如用户需要读取数据,PLC将会把存储在发送缓冲区的数据依次发送过来。每次发送完一个数据后,PLC就等待PC发一个确认帧过来,只有接收到这个确认帧,PLC才会将下一个数据发送出去,以此保证通信双方保持同步。并且,PLC在每次发送数据前要检验一下这个数据是不是结束帧,由于在预处理PLC的发送表时将其统统装入了结束帧,而后才从头依次装入有效数据,故一旦有效数据发完,PLC必然会发出一个结束帧。当PLC检测到要发送的是结束帧后将会把这个结束帧发出,然后程序暂停运行直至PC再次送来读/写指令。

如果用户是要进行写操作,PLC在对控制字进行相应判断后,将会发送一个EOF给PC,以此触发PC发送有效数据。前面提到了在PC程序中设置定时器,其目的是要保证PC能够可靠地读到PLC发来的EOF,由于程序的运行是需要一定时间的,故PLC不可能在PC发送完控制字后立即回送EOF。根据笔者的测试,设置定时器在2s左右是比较合适的。PLC在接收完数据后就会停下来等待PC发送新的控制字。

由于采用了事件驱动的Visual Basic为编程语言,并且还用到了它自带的MSComm通信控件进行对数据传输的主要控制,整个软件体系思路清晰,代码易于编写,并且在功能上很容易进行扩展。以此设计中软件为蓝本,用户可以方便地根据自身具体需要开发出更加符合自己要求的软件,而在硬件方面就根本不需要添加什么设备。■

参考文献

1钟肇新.王灏. 可编程控制器入门教程,华南理工大学出版社,1995.5

2宋伟.吴建国. Visual Basic 6.0编程基础,清华大学出版社,1999.2



关键词:

评论

技术专区

关闭