VB与S7 200通讯

VB与S7 200通讯
VB与S7 200通讯

本文以下内容为采用VB6.0设计人机界面的工业控制计算机与S7-200PLC 自由口通信进行的方法。

常规的通过PC机,利用PLC对工艺对象的控制,大多都是在具有组态软件或通讯模块的情况下进行,但是对于一些小型的控制系统而言,由于受到简单实用和成本低的原则限制,不适合使用常规方法。利用Visual Basic结合PLC中的通信语言进行编程,实现上位机与PLC之间,在无通讯模块情况下的数据信息的双向通信传输。

SIMATIC S7-200内部集成的PPI接口物理特性为RS485,可在多种模式下工作,其中自由口通信方式是S7-200PLC的一个很有特色的功能,它可以与任何协议公开的其它设备、控制器等进行通信。上位机串口符合RS-232C标准协议,为了实现两者的通信必须进行协议转换,可以利用PC/PPI电缆连接两者,并同时完成协议转换的任务。

控制系统组成

基于VB和PLC的液压试验台监控系统结构如下图所示,主要由上位机监控系统和下位机控制系统组成。

VB6.0提供了串行端口通信控件MSComm,该控件封装了通信过程的底层操作,用户只需设置MSComm控件的属性和对相应的事件进行编程,即可完成串行通信功能。

MSComm控件提供了事件驱动和查询2种处理通信的方法,其中事件驱动方法通过设置CommEvent、Rthreshold等属性实现对MSComm控件的OnComm 事件驱动;查询方法则通常通过OutPut属性直接写输出缓冲区,且通过InPut 属性直接读输入缓冲区实现。因为事件驱动方法程序响应及时、可靠性高,所以本系统采用事件驱动方法实现工控机与PLC之间的串行通信。

1.S7-200PLC的自由口通信

西门子S7-200系列PLC的CPU支持多样的通信协议,如PPI接口协议、

MPI协议、Profibus协议、自由口通信协议等。其中自由口通信是S7-200PLC 的一个很有特色的功能,它使S7-200PLC可以与任何具有串行接口和通信协议公开的智能设备(如变频器、单片机和Modem等)通信,使通信范围扩大、控制系统配置更加灵活。

自由口通信模式在物理接口上要求双方都使用RS485接口,使用PPI编程电缆或其他具有RS485/RS232转换功能的通信电缆,这样就可以实现S7-200PLC 与计算机的自由口通信(即串行通信)。S7-200PLC的自由口通信,即用户可以通过用户程序对通信口进行操作,通信协议完全由用户程序控制。通过设定特殊存储字节SMB30(端口0)或SMB130(端口1)允许自由口模式,同时这两个特殊存储字节也用于选择波特率、奇偶校验、数据位数和通信协议,用户可以通过使用发送中断、接收中断、发送指令(XMT)和接收指令(RCV)对通信口进行操作。S7-200PLC使用RCV指令接收数据,RCV指令可以接收一个或最多至255个字符。在缓冲区接收到最后一个字符时,会产生一个中断事件23,也可以采用查询方式监视状态字节SM86来判断数据接收是否完成。通过对SMB87接受状态字节的设定,用户可自定义通信协议中帧的具体格式。

2.S7-200PLC自由口通信协议设计

基于液压试验台的设计功能要求,这里讲述工业控制计算机作为上位机向作为下位机的S7-200PLC发送指令的自由口通信。该协议中工业控制计算机向S7-200PLC的缓冲区发送数据帧,工业控制计算机发送的数据帧格式见表1。缓冲区中存储的数据格式见表2。本程序中的实际接收到的数据存储情况见表3。当PLC收到数据帧的结束字符就会产生中断事件23调用中断程序INT0,进而调用子程序SBR1进行相应的实验过程控制。表4中为部分S7-200PLC的自由口通信程序,包括自由口初始化程序和接收到控制信息数据后相应的中断INT0程序。

[1]西门子公司.SIMATIC S7-200可编程控制器系统手册[M].2000

3.VB通信控制程序的实现

VB6.0为串行通信程序设计提供了一种标准串行通信控件MSComm。该控件具有完善的串行数据的发送和接收功能,不但包括了全部WindowsAPI中关于串行通信的函数所具有的功能,还提供了更多的对象属性来满足不同用户的编程需要。下面详细介绍采用MSComm控件实现与S7-200PLC进行自由口通信的程序。程序运行过程中只要点击相应的按钮就可以得到相应的控制信息数据,这样S7-200PLC接收到控制信息数据后,就可以实现液压实全部过程的自动控制。以下是工业控制计算机向S7-200PLC的V变量存储区写数据的自由口通信程序的简单示例。程序代码:

Option Explicit

Private Sub Command1Click()

Dim Buff(2)As Byte

Buff(0)=&H1‘起始字符

Buff(1)=&H41‘接收到的控制信息数据

Buff(2)=&H3‘结束字符

MSComm1.Output=Buff‘向PLC发送字符控制信息

End Sub

Private Sub Form Load()

https://www.360docs.net/doc/2a19255542.html,mPort=1‘指定使用COM1作通信传输MSComml.Settings=“9600,8,1”‘9600波特率,无校验,8位数据位MSComm1.PortOpen=True‘打开COM1

End Sub

4结束语

计算机与S7-200PLC的自由口通信协议可以很可靠地实现计算机与S7-200 PLC的自由口通信,实现了生产过程的自动控制,还有可视化的操作界面,充分体现了人机交互的优势。采用VB6.0设计编写的与S7-200PLC的自由口通信程序在Windows操作系统下运行成功,还要注意一点就是S7-200PLC与VB的端口初始化设计要完全对应,这只要发送相关的生产过程控制信息,就能实现生产过程的控制与监测。

关于自由口通信

Freeport方式是一种通讯协议完全开放的工作方式,如果说PPI方式是外设适应PLC的话,那么Freeport方式就是PLC适应外设。在Freeport方式下外设不受PPI协议的限制,不支持PPI协议的设备也能够与S7-200系列PLC通讯,在Freeport方式下通讯口的协议由外设决定,PLC通过程序来适应外设。Freeport

方式是对PPI方式的一个补充,该方式使得S7-200系列PLC可以与任何具有通讯能力的、并且协议公开的设备相通讯。

相关主题
相关文档
最新文档