基于VC++和S7-200的水下对接控制系统

2015-05-05 06:00黄道敏朱秋晨唐国元
机械与电子 2015年12期
关键词:接收数据发送数据工控机

邱 威,黄道敏,朱秋晨,唐国元

(1.华中科技大学船舶与海洋工程学院,湖北 武汉430074;2.空军雷达学院,湖北 武汉430010)

0 引言

随着对资源的需求越来越大,人类已经开始大幅度地进行海洋探索。水下航行器不仅能进行情报搜集、勘测战场,还能实施攻击[1]。无论是在军事方面或者科学研究方面,无人自主水下航行器(AUV)在信息交换和续航能力方面都有越来越高的要求,AUV需要更长的水下工作时间,更快的将探测的信息传递出来,在完成任务之后亦能够准确的回收。因此,水下对接系统的设计就显得很有必要[2]。同时,伴随着计算机技术和控制技术的发展,在现代工业控制系统中,工控机作为上位机能实时的进行监控、提供友好的人机交换界面、数据处理、通讯以及联网等功能。PLC作为下位机能接收上位机发出的命令,通过软件设计输出所需要的控制信号,对系统进行控制。在中小型控制系统中,由上位机和PLC构成的监控系统得到非常广泛的应用。

在工程应用中,通过上位机和PLC结合实现了对水下对接系统的控制,实现了对接操作杆与上位机的通信以及上位机与PLC的通信。通过对接操作杆和人机界面,可以对机械手和对接台进行实时地、稳定地控制,能准确完成对接。

1 系统原理和控制方案

1.1 对接系统原理

综合国内外研究情况,水下对接系统主要包括3类,捕捉式对接、包容式对接和平台式对接[3]。由于目标物上设计的有对接杆,选用捕捉式对接,对接系统运动结构简图如图1所示,系统主要由2部分组成,机械手部分和对接台部分。机械手实现对目标物的捕捉,对接台进行系统的精确对接。

图1 水下对接系统运动结构

机械手肩关节、手爪夹持运动以及精确对接都是通过控制相应关节的电机来实现,大臂、中臂、小臂的俯仰以及对接台的升降则是通过控制相应关节的电动推杆来实现。通过对电机和电动推杆的控制,系统可以很方便的通过机械手抓取到目标物上的对接杆,移动目标物到对接台下方,通过控制机械手调节目标物的位置使其上的T型对接接口部件处于升降台精确对接作业范围之内,控制对接台的升降确定精确对接作业位置。位置确定后,合拢对接台上的钩爪,使钩爪夹持住目标物上的T型对接接口部件,最终实现精确对接。

1.2 控制方案

水下对接控制系统原理如图2所示,为控制方便,系统采用2个对接操作杆来操作机械手和对接台的运动。上位机选用的是研华工控机,工控机的主要功能是,①与对接操作杆进行通信,对接操作杆各个方向的动作需要工控机进行识别和处理;②与PLC进行通信,工控机将对接操作杆的命令传达给PLC,从而对对接系统进行控制;③软件设计,提供友好的人机界面,对数据进行处理。工控机需要接收数据,分析处理数据,最后向下位机发送数据。由于控制各关节运动的执行器选择的是电动推杆和直流电机。因此,控制器选择西门子S7-200PLC即可实现高效的控制,PLC接收上位机的命令接通和断开相应的继电器,从而实时控制机械手各关节以及对接台的运动,并将对接系统的运动情况反馈给上位机。

图2 水下对接控制系统原理

控制流程:系统上电后,上位机定时向操作杆发送数据请求,操作杆向上位机反馈对应各个方向运动情况的数据,上位机对接收到的数据进行处理,从而向PLC发送命令,PLC通过对上位机的数据处理进行相应的输出来控制相应关节的运动。同时上位机接受PLC反馈的运动情况,从而监视控制系统是否运作正常。

2 通信方案

为了实现数据的交换,上位机与外围数据源设备需要进行通信。对于对接操作杆和PLC,上位机可以很方便的通过串行口来进行通信,串行端口的本质功能是作为CPU和串行设备之间的编码转换器,当数据从CPU经过串行端口发送出去时,字节数据转换为串行的位,在接收数据时,串行的位被转换为字节数据[4]。在水下对接控制系统中,就是通过在通讯双方来发送和接收一定长度的字符串来进行数据交换。

2.1 对接操作杆与上位机通信

对接操作杆与上位机之间通过RS-232通信协议进行串口通信,上位机通过定时向操纵杆发送一个ASCII码,操纵杆收到该码后按一定格式向上位机发送当前操纵杆的状态。操作杆反馈信号的格式与意义如表1所示。操作杆每个方向的运动都会使向上位机发送的数据不同,上位机通过处理接收到的数据来识别操作杆的哪个方向发生动作,从而向下位机发送相应的命令。系统有3个电机和4个电动推杆需要控制。因此,2个操作杆的XYZ和2个顶部按钮可以实现7个执行结构的控制。

表1 对接操作杆信号格式及意义

2.2 上位机与PLC通信

西门子S7-200系列PLC支持多种通信协议,自由口模式是S7-200PLC一个比较有特色的功能,使S7-200PLC可以与任何通信协议公开的控制器进行通信[5]。在水下对接控制系统中,通过PC/PPI电缆将S7-200PLC连接到上位机的RS-232接口来实现上位机与PLC的自由口通信。值得注意的是,自由口模式只有在PLC处于RUN模式下才有效,当PLC处于STOP模式时,PLC与工控机可以进行正常的PPI通信,此时可以从上位机通过STEP7Micro/Win软件下载程序到 PLC内部[6]。

2.3 通信指令

在自由口模式下,PLC的串行通信接口可以由用户程序控制,可以用发送指令、接收指令、接收完成中断、字符接收中断和发送完成中断来控制通信过程。S7-200CPU的自由口通信定义是通过将操作数传入特殊寄存器SMB30(PORT 0)和SMB130(PORT 1)。在PLC程序中主要使用 XMT和RCV两条指令[7]。XMT指令利用数据缓冲区指定要发送的字符,向指定通讯口以字节为单位发送一串数据字节,一次最多发送255个字节,同时指令完成后,会产生一个中断事件,对于PORT0为中断事件9,对于PORT1为中断事件1。RCV指令可以用来从通信口接受一个或多个数据字节,接收到的数据字节会被保存到接收数据缓冲区,接收完成后同样会产生一个中断,对于PORT0为中断事件23,对于PORT1为中断事件24。接收指令的缓冲区字符中可能有起始字符和结束字符,在水下对接控制系统中,选择十六进制0A即空格来作为结束字符。

3 控制系统软件设计

对于水下对接控制系统而言,软件设计主要包括上位机程序和下位机程序2个方面的编写,上位机程序主要是用来与外围设备进行通信、对数据进行处理以及提供良好的人机界面。下位机PLC程序主要起接受上位机命令、处理数据、进行输出以及向上位机发送数据的作用。

3.1 上位机通信程序设计

在Windows环境下,上位机采用VC++基于MFC编写人机界面程序。上位机和操作杆以及PLC都是通过串行口进行通信的,VC有两种常用的方法实现串行口通信:一是使用Windows API函数,二 是 使 用 ActiveX 控 件[8]。设 计 中 选 用MSComm串行通信控件,编程实现简单,结构清晰。使用MSComm控件需要4个步骤,即加载控件、初始化控件、捕获串口事件、数据读取以及关闭串口。使用之前需要将MSComm控件插入到当前工作空间中,控制系统人机界面编写基于对话框,因此在C****Dlg.cpp的初始化函数中对串口进行初始化。初始化内容主要包括了设置串行口,数据接收方式,串口属性,打开串口等。2个操作杆分别连接上位机的COM1和COM2口,PLC连接上位机的COM3口,初始化并打开串口后便可以捕捉串口事件通过串行口进行接收数据和发送数据。

为了从端口获取数据,MSComm控件提供两种捕获串口事件的方法,一种是事件驱动方法,另一种是查询法。在使用事件驱动法设计程序时,每当有新字符到达或端口状态发生变化,都会触发On-Comm事件,这种方法程序响应及时,可靠性高。查询法是应用程序完成某一串行口操作后,将不断检查端口事件,这种方法由于占用内存大,适合小的应用程序的开发[9]。因此,采用事件驱动的方法,当接收到RThreshold个字节时,触发OnComm事件读取数据。在OnComm()函数中,对接收到的数据进行处理,从而决定向下位机PLC所要发送的数据,上位机向操作杆和下位机PLC发送数据是利用SetOutput(COleVariant(m_Array))函数[10]。

系统控制界面如图3所示,界面主要分为2个部分,界面上方为显示区,主要包括操作杆指令和各关节运动情况的指示;界面下方为按钮区,用来控制与操作杆以及PLC通信的通断,右下方为退出系统按钮。

图3 水下对接控制系统软件界面

3.2 下位机通信程序设计

PLC程序流程如图4所示,在OB1中对进行自由口通信模式的初始化。程序通过赋值控制字节SMB30来选择通信模式、设定波特率以及数据长度和校验位。将16#09赋值给SMB30选用自由口、端口0、波特率为9 600、8位数据、无校验进行通信端口的初始化。将16#B0赋给接收信息状态字节SMB87,使允许接收,同时检测信息结束字符。通过将空格字符赋值给SMB89来设置结束字符,从而判断数据接收是否结束。

INT2为接收程序,指定接收数据存放位置。INT0为接收完成中断程序,当检测到结束字符时,程序执行SBR0子程序,在子程序中对接收到的数据进行处理,产生相应的输出,同时产生发送中断程序INT1。INT1中可以指定发送数据存储区。执行完INT1后,INT0返回并开始新的接收。在自由口通信过程中,就是利用中断来实现发送数据和接收数据的切换,发送数据完成后,会产生发送完成中断,在发送完成中断中开启数据的接收;当接收数据完成后,会产生接收完成中断,在接收完成中断中切换到发送数据的状态,由于发送数据和接收数据需要一定的间隔,因此产生定时中断来延时一段时间再进行发送数据[11]。

图4 PLC程序流程

4 结束语

基于上位机和PLC设计了水下对接控制系统,对于控制过程中涉及的串行口通信和PLC的自由口模式通信进行了软件设计。S7-200的自由口模式在对接系统中的应用通信稳定,可靠性高,实时性强,能准确高效的完成对接任务。S7-200的自由口模式不仅仅在水下对接控制系统中,对于由PC和PLC组成的控制系统在其他不同的控制对象、不同的环境下的小型控制系统方面同样可以起到有效的控制。另外,由于自由口模式可以与任何通信协议公开的控制器进行通信,S7-200PLC同样可以与其他的控制器连接成为特殊的控制系统来进行控制。所述对接控制系统设计为对接系统样机试验奠定了良好基础。

[1] 李锡群,王志华.无人水下航行器(UUV)技术综述[J].船电技术,2003(06):12-14.

[2] 羊云石,顾海东.AUV水下对接技术发展现状[J].声学与电子工程,2013(2):53-55.

[3] 燕全臣,吴利红.AUV水下对接关键技术研究[J].机器人,2007,29(3):267-273.

[4] Axelson Jan.Serial Port Complete:COM Ports,USB Virtual COM Ports,and Ports for Embedded Systems[M].U.S.:Lakeview Research,2007.

[5] 姜建芳.西门子S7-200PLC工程应用技术教程 [M].北京:机械工业出版社,2010.

[6] 李江全.西门子S7-200PLC数据通信及测控应用[M].北京:电子工业出版社,2011.

[7] 赵桂清,单鹏.基于S7-200机械手的控制[J].煤矿机械,2011,32(7):150-152.

[8] 李丰堂,谢明红.基于VC++的PC与PLC的通信软件设计[J].计算机技术与发展,2008(8):219-222.

[9] 刘长征.Visual C++串口通信及测控应用实例详解[M].北京:电子工业出版社,2014.

[10] 李景峰,潘恒,杨丽娜.Visual C++串口通信技术详解[M].北京:机械工业出版社,2013

[11] 罗华阳;余岳.S7-200PLC在粉尘物包装线上的实现与研究[J].包装工程,2009,30(4):51-52.

猜你喜欢
接收数据发送数据工控机
冲激噪声背景下基于幅度预处理的测向新方法*
定制工控机在老旧线路计算机联锁设备中的应用
低复杂度多输入多输出雷达目标角度估计方法
一种车载自组织网络的媒体接入控制协议
中压电子束焊工控机Windows NT系统文件丢失故障的修复方法
基于马尔科夫链的LoRaWAN网络节点性能分析
带标记方式的CRDSA++协议性能分析*
使用IPSec安全传输数据
单片机模拟串口数据接收程序的实现及优化
中国工控机市场新Style