APP下载

基于WinAC和Profibus的大惯量X-Y航车控制系统设计与实现

2019-01-30

计算机测量与控制 2019年1期
关键词:PC机组态编程

(中国船舶重工集团公司第七0二研究所,江苏 无锡 214082)

0 引言

船模水池拖车是一种研究水动力学的试验装备,国内外的船模水池拖车大都只能进行直线运动,而本文介绍的X-Y航车其X车作为总的平台在X方向作直线运动,搭载在X车上的Y车在Y方向作直线运动,X方向与Y方向成直角,Y车下挂旋转平台,旋转平台吊挂试验模型,旋转平台可在平面内360°旋转,故试验模型可在水池的整个平面做进退、横移、旋转运动。通过组合,可进行直线运动、斜向运动、蛇形运动、圆周运动、以及自定义曲线运动。可实现水动力快速性、操纵性、耐波性试验于一体。但由于本系统中X车和Y车不但惯量大,而且惯量差距也较大,要实现圆周运动等复合运动,需X车和Y车的速度控制响应很快,并且其加速度和减速度要求在不同的工况下可灵活快速调整。这就对整套运动控制系统提出了很高要求,要求上下位机通信实时性强、通信速率高、数据刷新频率快。在传统的测控系统设计中,点对点的快速数据交换问题不大,采用自定义通信编程可实现ms级的通信刷新率,但是由于本系统比较复杂,具有多个控制器,需要多个控制器之间快速交换数据,采用自定义通信编程工作量巨大,且可靠性难以保证,宜采用成熟的工业网络通信技术。但是主流的工业通信网络中其上下位机数据刷新率都在百ms级,例如工厂DCS集散式控制系统中,组态软件与下位现场级控制器之间的数据刷新率基本都在150 ms以上。要在采用成熟的工业通信网络的基础上实现ms级的数据刷新率,必须另辟蹊径。而将西门子WinAC软逻辑PLC结合Profibus现场总线就提供了这种可能。本系统采用Profibus现场总线通信网络可将多个控制器互联以成熟、可靠的方式实现底层数据交互,同时将通信主站以软件方式嵌入功能强大的PC机中,使ms级的通信在PC机与多个下位机之间以成熟、可靠的组态式编程方式实现。在人机交互环节,利用Visual Basic编程语言实现与WinAC之间的进程间通信,并结合NI公司的Measurement Studio ActiveX组件可开发友好美观的人机交互界面。鉴于PC机多任务处理导致的实时性无法保证的缺陷,采用增加RTX实时内核的方法可以在保留PC机强大性能的基础上解决此问题。

1 WinAC与Profibus特性

1.1 WinAC特性

WinAC是西门子公司研发的一种软逻辑PLC的简称。它的核心思想是将传统的SIMATIC S7硬逻辑PLC具优势的控制、通信功能与PC机具优势的数据运算和处理功能及丰富的第三方软件兼容性能结合起来,将控制、通信、数据处理、工艺与可视化功能集中于一台PC机上实现。其主要特点为:

1)运行于采用主流的Windows 2000/XP等操作系统的标准PC机平台中。

2)与传统的SIMATIC S7系列PLC使用同样的编程环境,代码兼容性好。其生成的程序也可用于SIMATIC S7系列PLC。

3)与其它PC应用程序之间有多种接口方法,如:ActiveX控件、DCOM、OPC等。

4)接口开放,易于构建软硬件高度结合的控制任务。

WinAC 特别适用于以下场合:

1)由于性能需求和空间限制的原因,需要将通信、控制、数据处理及可视化任务集中在同一台PC机平台上完成。

2)由于特殊工艺的原因,有复杂的软硬件集成要求。

1.2 Profibus特性

Profibus是目前国际上通用的现场总线标准之一,是一种不依赖于特定生产厂家的、开放式的现场总线,遵循该协议的不同生产厂家的自动化设备之间可实现可靠而高速的数据交互。Profibus协议包括三个子集:Profibus-DP、Profibus-PA、Profibus-FMS,其中Profibus-DP主要应用于制造业自动化系统中现场级的通信,它采用主站和从站之间轮询的通信方式,支持高速的循环数据通信,通信速率最高为12 Mbps,最大网络节点数为127点。本文中所述Profibus如无特别说明均指DP协议。

2 系统设计

2.1 系统概况

X-Y航车系统主要由X航车、Y航车和转台组成。X航车横跨水池宽度架设做纵向运动(沿水池长度X方向);Y航车悬挂在X航车下,做横向运动(沿水池宽度Y方向);Y航车的下面设一个工作室,工作室底部有一个可360°旋转的转台(以下简称转台),转台的运动同时受控于X航车、Y航车。由于X航车和Y航车两者运动方向互成直角,故Y航车可在水池的整个平面做二元运动。X航车、Y航车的运动与转台的回转运动可以通过控制实现同步,故可使船模艏向沿运动切线方向或任意迎角运动。其中X航车的重量约100吨,X方向的最大速度为3米/秒;Y航车重量约10吨,Y方向的最大速度为2米/秒。

X-Y航车控制系统的主要组成部分:1)上位机:运动控制计算机;2)下位机:X航车直流调速系统、Y航车直流调速系统、转台交流伺服调速系统;3)通信网络。

在上位机层面,采用高性能PC机作为硬件,以西门子WinAC软件+Ardence RTX构成实时控制核心,采用Visual Basic 6.0编程语言(以下简称VB)结合NI公司的Measurement Studio ActiveX组件开发人机界面。在下位机层面,分别采用西门子6RA70系列直流调速器、西门子S7系列PLC、德国LENZE伺服控制器、意大利ELTRA绝对值编码器等;通信网络采用Profibus,主站采用CP5613通讯卡。

2.2 硬件设计

X航车驱动直流电机共8台,主副轨道各4台,主副轨均匀分布的各4台电机共用一台直流调速器,采取电枢绕组串联和励磁绕组串联方式。直流调速器选用西门子6RA70,两台6RA70装置配置为主从模式,主驱动装置的速度环输出通过SIMOLINK光纤网络同步给定从驱动装置的电流环输入,使主从电机保持力矩一致,均匀分担负载。

Y航车驱动直流电机共4台,共用一台直流调速器,采取电枢绕组串联和励磁绕组串联方式。直流调速器选用西门子6RA70。

转台的驱动电机为2台交流伺服电机,分别由两台德国LENZE 9300伺服驱动器控制,两台9300伺服驱动器配置为主从模式,主驱动装置的速度环输出作为从驱动装置力矩环的输入,使主从电机保持力矩一致,均匀分担负载。

工控PC机通过Profibus CP5613通讯卡与6RA70 装置、西门子S7-200 PLC、X轨道绝对值编码器组成Profibus通信网络交换数据。为满足特定场合下X航车、Y航车、转台的独立控制需求,工控PC机上配置3块CP5613通讯卡分别与X航车、Y航车、转台的控制器组成三个Profibus通信网络实现数据的实时交互。图1~3分别为X航车、Y航车、转台驱动控制系统组成框图。

图1 X航车驱动控制系统组成框图

图2 Y航车驱动控制系统组成框图

图3 转台驱动控制系统组成框图

2.3 软件设计

2.3.1 开发环境

操作系统选用Windows XP,操作系统实时内核选用Ardence RTX。控制及通信编程环境为西门子SIMATIC NET、WinAC软逻辑PLC组件。人机界面编程工具选用Visual Basic 6.0及NI仪器公司的Measurement Studio组件。

2.3.2 WinAC站组态

首先需进行WinAC站组态,其步骤在SIMATIC NET、WinAC软件安装正确之后进行。详细步骤如下:

1)在“Station Configuration Editor”中新增“WinLC”。

WinAC安装完毕后,“Station Configuration Editor”会自动把“WinLC”加入到索引号为2的PC站中。索引号为PC站虚拟机架中虚拟插槽的编号(它与PC主板的实际PCI插槽顺序无关)。如果自动添加未成功,则在索引号为2的位置右键弹出式菜单中选择“Add”键,并从随后跳出的“Add Component”对话框中选择“WinLC” 。此处的“Station”为计算机名。

2)组态CP5613通讯卡。

(1)首先打开组态控制台,方法为用鼠标依次单击菜单“开始”→“SIMATIC”→“SIMATIC NET”→“Settings”→“Configuration Console”。

(2)在“Configuration Console”窗口中依次单击“Modules”和“CP5613/CP5614”前的符号“+”后选择“General”,在右边数据窗口中将“Mode of the module”的列表框选为“Configured mode”,列表框“index”选为4。以相同方法分别添加另两块CP5613通讯卡,“index”分别为5和6。

3)绑定CP5613通讯卡为WinLC的子模块。

在CP5613通讯设置为组态方式后,还需将其设为WinLC的子模块,这样WinLC才可以驱动各种DP从站。每个WinLC最多可以有4个子模块。 在“Station Configuration Editor”编辑器中,右键单击索引号为2的行(即WinLC行),从快捷菜单中选择“Edit”,打开“Edit Component”对话框,选择“Properties…”,弹出“WinLC Properties”对话框,右键单击索引号为IF1的行,并从快捷菜单中单击“Add”键, 在打开的“Add CP Module to WinLC Interface IF1”对话框中选择CP5613,单击“OK”键,关闭“Add CP module To WinLC Interface IF1”对话框,回到“WinLC Properties”窗口,可以看到CP5613/CP5614位于IF1索引号上,单击“OK”键。当再次打开“Station Configuration Editor”后,可发现CP5613已不在索引号为4的插槽上,原因是CP5613通讯卡已被当作子模块绑定到WinLC的“插槽”中。以同样的方法把索引号分别为5和6的另两块CP5613通讯卡绑定为WinLC的子模块。至此基本的WinAC PC站组态完毕。

2.3.3 WinAC硬件组态

由于WinAC的站组态信息不能直接下载到Step7中,因此须手工在Step7中完成硬件组态,并且硬件组态信息必须和PC站组态编辑器中的信息保持一致。WinAC硬件组态方法与传统的SIMATIC S7 PLC组态方法很相似,共用STEP 7集成式编程环境。在STEP 7编程软件的菜单中单击“Options”→“Configure Network”,进入网络组态“NetPro”窗口,在虚拟的硬件插槽位置按实际硬件板卡位置分别插入三块CP5613卡,界面会自动出现三条Profibus总线,然后在总线下分别按照实际控制器配置分别插入6RA70直流调速装置、S7-200PLC通信模块EM277、LENZE伺服驱动器通信模块2133、ELTRA编码器。需要注意的是,STEP 7软件内主要集成西门子自己厂家的设备,对于LENZE驱动器和ELTRA编码器,需从厂家官网下载GSD文件导入到STEP 7中,STEP 7中才会出现该设备的图标。配置完后的组态图形如图4所示。组态完成后下载到CPU中。

图4 WinAC组态图

2.3.4 通信编程

硬件组态完成后,WinAC与下位机之间的数据交换可以在STEP 7集成环境中调用通信类的系统功能块来实现。可使用BSEND(SFB 12)、BRCV(SFB 13)、USEND(SFB 8)、URCV(SFB 9)、GET(SFB 14)、PUT(SFB 15)。

为便于通信数据的集中管理,可在WinAC的DB数据块中规划好与各个下位机的控制字和状态字区间,然后在循环程序块中调用数据读写模块,引用DB地址进行集中读写操作。可按数据的重要程度在不同循环周期的程序块中进行读写操作,以实现重要数据和普通数据的差别化刷新。

以读取直流调速主驱动装置6RA70为例,在中断循环OB37程序块中梯形图编程如图5所示。

图5 通信程序梯形图

所用系统功能块为GET(标识符“DPRD_DAT”)和PUT(标识符“DPWR_DAT”):

DPRD_DAT功能块的功能为读取6RA70装置的数据,将收到的6RA70装置的状态字12个字节存放在数据块DB1起始地址为0的连续空间;DPWR_DAT功能块的功能为发送指令给6RA70装置,将存放在数据块DB1起始地址为168的连续12个字节的控制字发送给6RA70装置。

VB与WinAC之间的通信采用OPC客户端/服务器方式,由于处于同一台PC机中,属于进程间通信,其通信时滞可以忽略。SIMATIC NET提供一个工具OPC Scout, 它是一个简单的SIMATIC OPC客户端工具软件,可浏览存在的SIMATIC OPC服务器名称、添加OPC组、添加项、监控项值等功能。

首先在VB的菜单“工程”→“部件”窗口中添加名称为“SMIATIC NET OPC DATA”控件。然后在VB的窗体上添加一个DatCon对象DatCon1。打开DatCon1的属性设置窗口,选择“OPC Server”选项卡,Server编辑框中输入OPC服务器名称“OPC.SimaticNet”, 在Node编辑框中输入计算机名(与前述站组态时的计算机名称一致)。之后即可在VB的代码中以函数的方式读写WinAC的数据。读写数据代码为:DatCon1.ReadVariable("s7:[s7 connection_1]DB1,int0,84", v1, q1, time1)表示读取DB1数据块从地址0开始的84个整数值作为状态字;DatCon1.WriteVariable("s7:[s7 connection_1]DB1,int168,84", Send)表示将控制字发送给DB1数据块从地址168开始的84个整数值存储区间。

2.3.5 人机界面设计

软件人机交互主界面如图6所示。界面右侧为状态监视区,右上部以指示灯图形直观显示X航车、Y航车、转台的主要驱动控制设备的通信状态、故障报警状态。正常工况时报警指示灯隐藏,异常工况时会显示报警或故障指示灯,点击报警或故障指示灯会有进一步的故障代码及解决措施建议的指示。右下部以文本方式显示与地面计算机之间的收发信息。界面下部为操作区,以选项卡方式分别布置三个自由度的独立操作区以及联动操作区。每个自由度的操控又分成“PC机”、“操纵杆”、“外部给定”三种操控方式。界面左上部为航车位置监控组态区域,深色区域为水池。中间圆圈图标代表Y航车,其在坐标上的位置可直观显示Y航车在整个水池平面位置,箭头方向代表Y航车上的转台角度,也是船模艏向角度。组态区域下部的横向标尺代表X坐标,左部的竖向标尺代表Y坐标,“限位开关”指示安装在轨道上的行程开关位置,在每个轨道两端设置了多个行程限位开关,用于航车以不同速度行驶时既保证足够的制动安全距离,又尽量延长工作段。“软件限位点”用于控制航车自动停车,其位置可调整,鼠标双击后可在弹出的设置对话框中输入“软件限位点”的坐标位置。

图6 软件人机交互主界面

3 实验结果与分析

系统软硬件集成安装完毕后,首先进行系统通信调试,通信周期从低往高逐步调试,实测结果表明,上位机与10台下位机可实现可靠交换的最小通信周期为2 ms,再往小调时通信出现了不稳定的现象。分析发现主要原因为PC机本身的处理能力已到极限,CPU使用率已接近100%。在通信网络调试完毕后再分别对X车、Y车、转台独立调试,满足单自由度的运动控制指标后再进行三个自由度的联合运动调试。联合运动最高的技术要求指标为转台携带模型的状态下做直径6 m,切向速度1 m/s的圆周运动时,位置误差须不大于±2%,角度误差须不大于±0.5°。圆周运动是X车与Y车分别做相位相差90°的正弦运动的合成,由于X车和Y车的惯量差距较大,在设定为90°相位的情况下,其实际相位有一定的偏差,在调试时需测出其相位差值,然后在给定量中以负反馈方式予以修正。通过进行不同直径和切向速度的圆周运动实验,发现X车和Y车的正弦运动相位差的理论值和实际值之间的偏差量基本固定,说明X车和Y车各自的机械传动系数稳定,因此在控制给定中,以固定的相位差值修正量以负反馈方式叠加在Y车的正弦运动速度给定中。但X车和Y车的正弦运动幅值差修正值在做不同直径和切向速度的圆周运动时差别较大,不能采取固定值,所以设置在软件界面上可以随时修正。经1-2次调整后,实际圆周轨迹即可收敛至可接受圆度。实测结果显示,五次连续圆周运动(直径6 m,切向速度1 m/s)的位置精度及角度精度均满足指标要求,且圆心重合度非常好。

4 结束语

本系统设计基于WinAC及Profibus以组态式编程的方式实现了PC机与多台下位机的可靠实时高速通信,据实测,上位机与10台下位机可实现2 ms周期的可靠实时数据交换。利用Ardence RTX实时控制核心,可在保持Windows操作系统强大软件兼容性能的基础上实现过程控制数据的实时通信。基于高速且实时的数据通信,实现了对X航车、Y航车及转台的精确控制,联合调试结果表明,该航车在圆周运动(画圆)验收试验中,重复性非常好,圆度及圆心重合度都圆满达到了预定设计目标,交付国内某重点实验室后运行稳定可靠。该工程设计方法对类似需要将PC机性能与PLC性能无缝结合以实现高刷新频率通信的控制系统设计有较强的借鉴作用。

猜你喜欢

PC机组态编程
浅谈力控ForceControl V7.2组态软件在自动化控制工程中的应用
ZnF低激发电子态的组态相互作用研究
编程,是一种态度
元征X-431实测:奔驰发动机编程
编程小能手
纺织机上诞生的编程
组态软件技术现状与发展
高职“工业组态技术”课程建设探析
基于WiFi技术的智能手机双控视频小车
用VC++实现PC机与单片机的串行通信