VB与PLC自由口通信模式在断路器测试系统的应用

2015-01-13 08:30李秀芹杜向阳
化工自动化及仪表 2015年2期
关键词:字符字节中断

李秀芹 杜向阳

(上海工程技术大学机械工程学院,上海 201620)

低压断路器是一种不仅有手动开关作用,而且能自动在电路发生短路及过载等情况时切断电路,保护用电设备的电器,所以对低压断路器进行过载可靠性等常规参数的检测非常重要,但手工调节断路器双金属片螺钉长度时误差较大。为此笔者提出了下位机PLC和上位机相结合的断路器自动测试系统,下位机PLC主要完成数据的采集与运算,上位机则对下位机采集的各工作部件的运行状态进行实时监控与显示,并基于VB和PLC自由口实现数据的远程通信。

1 断路器测试系统总体方案①

笔者根据GB 14048.5-2008[1]开发了一套断路器热态在线测试系统。以三相塑壳式断路器250H-250A的A相为例,其额定电流为250A,通过给断路器加载一定的额定负载,检测其在70~90s内是否满足过载可靠性的要求,如果产品性能不达标,则利用柔性调整结构里的一体化组合螺丝刀改变双金属片螺钉的长度,使其满足测试性能的要求。

断路器测试系统的结构如图1所示,轴向移动系统主要由步进电机、磁栅传感器及丝杆机构等部分组成,完成水平移动与换向移动;柔性机构包括一体化螺丝刀和升降电机,实现螺钉的调节与螺母的锁紧,其定位数据及螺钉长度等参数需通过自由口通信传到上位机进行实时显示,同时其他机构的启停操作通过上位机VB下传到PLC。PLC和计算机通过自由口字符中断方式进行通信,实现二者间数据的实时远程传送;基于VB与Access2000数据库可动态存储与查询测试数据,提高了断路器测试系统的工作可靠性和效率。

图1 断路器测试系统结构示意图

2 自由口通信配置

串行通信具有接线少、成本低、适宜远距离传输及可靠性高等优点。笔者设计的断路器热态在线测试系统的上位机与PLC之间的通信即采用自由口串行通信方式。S7-200 PLC在自由口模式下可以与任何已知协议的智能设备通信,允许用户自定义一些简单的基本的通信协议设置,如数据长度及奇偶校验等通信协议完全可由用户自定义。

2.1 自由口通信工作方式

S7-200 PLC通过特殊的功能寄存器SMB30(Port0)和SMB130(Port1)进行自由口工作模式的设置[2]。自由口通信主要通过发送接收指令、特殊功能寄存器配置和中断来实现,其中端口0的常用中断和通过SMB30设计校验方式、波特率及数据位长度等的控制字可参考文献[3]。

2.2 通信系统硬件连接

S7-200PLC与PC机进行通信时,需要考虑通信双方的距离问题[4],由于标准的PC/PPI电缆长度为5m,而实际系统设计时,二者间距可达几十甚至上百米,为此制定硬件连接方案,解决通信数据失真和抗干扰问题。具体方案如下:

a. RS485总线中,如果传输线达到一定距离,而且处于复杂的外部环境时,易受外部环境的电磁感应等干扰。而中继器中的高效防雷管可以有效抑制闪电和ESD,其传输距离可达1 200m,长距离通信时可选用图2中的方案一,利用PC/PPI电缆与RS485中继器配合的方式进行通信。

b. 如果通信距离不是很长,可采用RS485延长线来加长通信距离。

c. 通信设备距离在5m内时,直接用标准PC/PPI电缆进行通信连接,但要注意设置电缆的波特率等参数。

图2 自由口通信硬件的3种连接方案

3 下位机PLC通信

该测试系统基于CCD摄像机的视觉定位系统获取断路器双金属片螺钉螺母的中心坐标,通过该坐标控制轴向移动装置和柔性调整机构动作,进行螺钉长度在线调整。为了避免通信中各方争用通信线,测试系统计算机与PLC通信时,大多采用主-从方式,即把计算机作为主机、PLC看作从机,主机主动发送请求报文,从机收到请求后返回响应报文。本设计中PC为主站,S7-200 PLC为从站。

3.1 数据缓冲区分配

通信协议是指PC与PLC通信时发出命令和收到应答的信息格式,通信协议包含起始字符、站号、命令字、数据、校验码和结束字符[5]。

该系统中采集的数据单元共4个,模/数转换后,两个字节的整数将转换为4个字节的实数(即工程值),所以需要发送给上位机的数据长度为16个字节。发送缓冲区数据存放区的划分:VD220——发送缓冲区的指针;VB224——存放PLC发来的数据区字节数;VB225——存放计算机计算出的异或校验结果。

本设计采用字符接收中断方式接收数据,即根据收到的字符个数来判断接收是否结束,所以没有设置结束字符,划分接收缓冲区如图3所示。其中,VD86是接收缓冲区的指针,PLC计算出的异或校验值存放在VB90中,计算机发来的数据区字节数存放在VB99中。

图3 数据接收缓冲区分配

3.2 通信流程

S7-200 PLC与上位机自由口的通信主要分为以下步骤:

a. 通过SMB30.1=1或SM0.7=1方式进行自由口通信模式选择;

b. 串口参数初始化,将操作数写入控制字节,开中断ENI;

c. 字符接收准备,若有传送字符则执行字符接收中断子程序,并将收到的字符存入接收缓冲区;

d. 执行发送指令XMT,将处理好的数据发送给上位机;

e. 完成发送后,执行发送完中断程序,等待下一帧数据,并转至步骤c。

PLC通信程序流程如图4所示。

图4 PLC通信程序流程

PLC部分通信程序代码如下:

/**主程序**/

LD SM0.7//自由口与PPI通信转换

SM0.1//首次上电扫描

CALL SBR_0:SBR0//调用初始化子程序

/**初始化子程序**/

MOVB16#09,SMB30//9600bit/s,8位数据位,无奇偶校验

MOVB 10,SMB34//定时10ms

ATCH INT_0:INT0,8//字符中断事件8连接

ATCH INT_1:INT1,9//定时中断事件9连接

ENI//开中断

RCV VB100,0//指向接收缓冲区首地址

/**部分接收子程序**/

MOVB 0,VB100//清零

MOVD & VB100,VD86//指针VD86指向接收缓冲首地址VB100

MOVB SMB2,VB99//将报文数据区字节数存在VB99

4 上位机功能开发

4.1 VB自由口通信设计

上位机设计采用VB6.0作为开发工具对断路器中的VB与PLC通信程序进行设计。串行通信的实现主要是通过控件MSComm实现[6,7]。通信控件MSComm的属性主要包括:CommPort,设置或返回通信端口号;PortOpen,设置或返回通信口的状态;Setings,设置并返回通信参数;Input,返回并清除接收缓冲区中数据;Output,向发送缓冲区写数据。

MSComm控件对通信问题的处理主要有事件驱动方式和查询方式两种。事件驱动方式——相当于一般程序设计中的中断方式,当串口发生错误或事件时,MSComm控件将产生OnComm事件,使用户程序对该事件进行相应的处理,这种方法的优点是可靠性高、程序响应及时。查询方式——在程序的每个关键功能执行后,在用户程序中设计定时或不定时查询,通过检查CommEvent属性值来查询事件和错误,从而做出相应的处理。由于查询方式占用的CPU时间太长。本设计中采用的是事件驱动方式。

上位机通信程序代码及其注释如下:

/**串口初始化部分程序**/

With MSComm1

.CommPort=1//选择通信端口为COM1

.Settings="9600,n,8,1"//串口通信参数设置,波特率为9600b/s,奇校验,8个数据位,1个停止位

.InBufferCount=0//清空接收缓冲区

.OutBufferCount=0//清空发送缓冲区

.RThreshold=1//接收到的字符数大于等于1就产生接收事件

.PortOpen=True//打开串口

/**上位机接收数据部分程序**/

rcvtemp=MSComm1.Input//读串口到缓冲区

For i=LBound(rcvtemp)To UBound(rcvtemp)

rcvlenth=rcvlenth+1

rcv(rcvlenth)=rcvtemp(i)//将接收到的各字节放入接收字节数组

Next i

上位机发送数据程序。起始字符约定为0,结束字符约定为&HFF,校验码约定为报文中第二个字节与数据区内各字节的异或和。程序代码如下:

nbyte(1)=UBound(sdate)+1//发送数据区字节数

fcs=nbyte(1)//异或校验码

For i=2 To UBound(sdate)+2

nbyte(i)=sdate(i-2)//待发送数据

MSComm1.Output=nbyte//发送

4.2 数据库系统开发

4.2.1数据库基本功能

为方便管理测试数据,本设计选用Access2000数据库作为平台,实现断路器合格率及测试时间等重要参数的组织、存储、查询、浏览信息记录及断路器合格率的报表统计等功能。同时,数据表字段显示测试时间、断路器型号及规格参数等信息。

4.2.2数据库的创建和链接

在Access中创建一个新数据库,命名为“断路器测试数据库”,然后创建ODBC数据源,这个数据源包括数据库位置、数据库类型及ODBC驱动程序等信息。

ADO是Visual Basic程序中数据库开发的最新内容,用以控件链接数据库。ADO可以处理不同的数据库记录,使应用程序具有灵活性和通用性,其中ADO中最主要的对象是Connection、Recordset和Command。Connection对象主要用于设置数据源的链接;Recordset对象主要用来接收和管理来自Connection数据源的数据;Command对象设置访问数据源所需的命令;在窗体的FormLoad事件中编写相应的VB与Access2000数据库链接。

5 通信调试

考虑到系统工作环境不理想,周围光线分布不均匀且工作空间狭小,有可能会影响通信系统的稳定性,所以设计外加电磁扰动源(如变压器及变频器等),测试系统的稳定性并进行调试实验进行对比分析。测试时从VB操作界面发送字符串16##55 16##EE 16##CC 16##BB …,下位机通过查看相应存储空间核查发送数据是否正确。经调试分析得出在有变频器等干扰存在的情况下,通信要加金属屏蔽套管抗干扰,否则通信数据可能会丢失。用示波器监测到的自由口通信数据波形如图5所示。

图5 自由口通信数据波形

6 结束语

笔者根据断路器测试系统的控制要求,开发了基于VB与S7-200 PLC自由口模式下的通信系统,实现了断路器在线检测系统的实时通信、数据显示和远程控制,有效解决了人工操作产生的误差。采用Access2000数据库与VB操作界面动态链接模式,方便了测试结果的查询和历史趋势分析。现场调试和运行结果表明:该方法简单、实时性好且可靠性高,同时降低了开发成本,提高了检测的智能程度。

[1] GB 14048.5-2008,低压开关设备和控制设备[S].北京:中国标准出版社,2008.

[2] 张扬,蔡春伟,孙明健.S7-200 PLC原理与应用系统设计[M].北京:机械工业出版社,2007:196~202.

[3] 甘宜洋,程武山,李小龙.水下生产测试系统的数据通信[J].化工自动化及仪表,2014,41(12):1412~1416.

[4] 程武山.分布式控制技术及其应用[M].北京:科学出版社,2008:90~100.

[5] 李如甲,程武山,董林.基于RS-485的智能仪表与PLC串行通信[J].仪表技术与传感器,2011,(8):34~36.

[6] 李江全,汤智辉,朱东芹.Visual Basic数据采集与串口通信测控应用实战[M].北京:人民邮电出版社,2010:143~152.

[7] 董淑冷,茅红伟.物料自动分拣系统中PLC与上位机的通信[J].计算机工程,2007,33(11):267~269.

猜你喜欢
字符字节中断
No.8 字节跳动将推出独立出口电商APP
字符代表几
一种USB接口字符液晶控制器设计
图片轻松变身ASCⅡ艺术画
No.10 “字节跳动手机”要来了?
HBM电子称与西门子S7-200系列PLC自由口通讯
基于FPGA的中断控制器设计*
简谈MC7字节码
跟踪导练(二)(5)
千里移防,卫勤保障不中断