3.1PLC数据采集
起重机械的控制系统本身具有主控PLC,包含了大部分监控系统中需要采集的数据,可直接使用。但是,为将起重机控制系统本身与CMS管理系统区分开,同时又不破坏原起重机的PLC程序,需在LCMS中采用一套独立的PLC来采集数据。LCMS的PLC可通过PROFIBUS—DP现场总线协议或MODBus.RTu协议与起重机本地PLC通信来读取需要监控的数据。此外,PLC中还配置了开关量信号、4~20mA电流信号、O~1OV直流电压信号和热电阻信号的处理模块,连接安装在起重机上用来进行安全监测的传感器以采集数据。
LCMS的PLC控制器一方面会将采集到的各种信号经处理后传输到WinCC的监控画面上显示,另一方面会判断当前的状态是否会触发系统报警。在控制器中,根据不同的报警设置了不同的报警触发位,一旦该位被置位,WinCC的报警系统就会给出报警提示。
3.2接口模块
接口模块是一种为WinCC和底层数据库提供服务的中间件,其封装了对数据库的CRUD操作及一些业务逻辑,为WinCC访问底层数据库提供了统一的接口。接口模块的开发环境是基于VisualBasic6.0设
置的。。
3.2.1模块的结构
模块的主体是类模块,包含报警、回放和数据管理等3个模块,用于存放一些共享属性和方法,供类模块中的方法调用。数据库的访问则使用了微软的ADO应用接口。
3.2.2模块中主要包含的函数
模块中主要包含以下函数。
(1)PrivateSubClass—Initialize():类模块初始化,设置模块必须的参数。
(2)PrivateSubClass—Terminate():类模块销毁时,释放所占用的资源。
(3)PublicSubOpenSQLServer():打开数据库连接。
(4)PublicSubCloseSQLServer():关闭数据库连接。
(5)PublicSubDBExecuteSQL(SQLStrAsString):执行字符串语句sQL命令;参数SQLStr为字符串类型。
(6)PublicFunctionDBGetRecordset(SQLStrAsString)AsADODB.Recordset:查找字符串指定的数据库记录,返回记录集对象;参数SQLStr为字符串类型SQL语句。
(7)PublicFunctionCMSGetAlarmHistory(AlarmDAsString,AlarmTAsString,QTypeAsInte—ger)AsADODB.Recordset:查找符合条件的历史报警记录,返回记录集对象;参数AlarmD为日期字符串。
(8)PublicSubCMSAlarmProcessList(ByValTagIDMAsString):查询当前的报警记录。
(9)PublicSubCMSStartPlaying(ByValSPointerAsInteger):运动轨迹回放。
3.2.3模块的使用
在开发环境中将接口模块编译成可执行文件并运行。在WinCC的VBS脚本编辑器中调用CreateOb-ject方法创建接口模块的对象实例,并通过对象实例调用类的方法实现业务逻辑。
3.3起重机监控功能设计
LCMS端主要用于实时监控,其软件采用西门子WinCC开发,根据功能分为起重机状态实时监控、起重机运动轨迹回放、报警管理和视频监控等界面。
3.3.1起重机状态实时监控
起重机需要监控的数据量通常较大,将其全部显示在同一个界面上显然不太合适。因此,将状态实时监控界面分为总体监控界面和分部监控界面两部分,其中:总体监控界面中只显示起重机最重要的数据;分部监控界面则根据起重机的特性,按照功起重机安全监控管理系统构设计有大车监控、小车监控、起升监控和钩移监控界面,所有监控的信号和数据都会在这些界面上显示出来。LCMS中的PLC负责采集起重机上所有需要监控的信号和数据,是起重机状态实时监控的数据源。为将PLC采集到的数据显示在界面上,必须在WinCC内建立通信变量,变量地址与PLC的内部地址对应。由于起重机会同时包含多个相同的部件,因此若需要创建的变量相同,则可以利用结构变量简化工作量。此外,为保证数据的实时性,选用工业以太网作为传输介质。
3.3.2起重机运动轨迹回放
运动轨迹回放是指将人工选定时间段内的起重机状态信号和数据动态地还原出来。这些数据来源于数据库,当起重机安全监控管理系统运行时起重机状态数据会以较高的频率存人数据库。运动轨迹回放界面的功能主要包含获取数据、保存数据和回放数据等3部分。
(1)获取数据:以起始时间和结束时间为条件查询状态数据,将得到的记录集通过数据表格控件在界面上显示出来,每一行数据代表某一个时刻所有记录点的数据集合。
(2)保存数据:创建EXCEL对象,将之前显示在表格控件中的数据按行依次写入EXCEL对象的表单中,最后保存为EXCEL文件。每执行一次轨迹回放,都将分别在本地和RCMS端生成一个数据文件。
(3)回放数据:从生成的数据文件列表中选取一个数据文档,读取文档中的起始时间、结束时间、记录数目和每天记录的具体数值,将其存放到一个2维数组中(其中:列表示每个不同的数据点对应到相应的变量;行表示不同的时间点)。回放时,根据采集的频率将2维数组中的数据按行写入对应的变量。界面上,通过将图像的几何属性链接到变量实现动画效果,图像的几何属性随着变量数值的变化而变化,能够还原所选时间段内起重机运行的轨迹;同时,对于一些数值型的属性(如电流),使用图表控件显示其波形。
3.3.3报警管理
报警列表分为当前报警列表和历史报警列表,其中:当前报警列表只显示当前存在的报警信息;历史报警列表包含之前所有发生过的报警信息。当前报警列表的刷新由事件触发,当PLC报警信号出现时,起重机安全监控管理系统
将报警相关信息记录到当前报警和历史报警的数据表中;当PLC报警信号消失时,当前报警数据表中对应的记录将被删除,同时更新历史报警数据表中对应记录的状态。RCMS端的数据库将会同步本地的当前报警和历史报警记录。当本地更新当前报警和历史报警时,将会把记录同步到RCMS端。
3.3.4起重机视频监控
以M0XA视频编码器为例,通过其提供的SDKActiveX控件可将视频监控画面嵌入到WinCC中。画面打开时必须初始化控件的以下属性。
(1)HttpPort:Http的端口,通常是80。
(2)VideoProtocol:设置连接协议,可以是UDP/TCP/HTTP/Multicast。
(3)CHIndex:选择显示的视频通道。
(4)StreamingType:设置编码类型,可以是MPEG4/MJPEG/H.264。
(5)ServerIP:编码器的IP地址。此外,开发时需要用到的方法主要有以下几种。
(1)Connect:连接到编码器。
(2)Disconnect:断开编码器连接。
(3)SendCameraCommand:发送控制命令给摄像机,支持左移、右移、上移、下移、放大及缩小等指令。
3.4管理功能设计
RCMS端主要用于起重机群的管理,包含报警管理、运动轨迹回放管理、起重机运行维护管理、起重机实时监控等功能,侧重于数据的查询和报表。管理功能的数据源存储在本地数据库中,其中:报警和运动轨迹的数据由所有LCMS的数据库通过事件触发同步;运行维护的数据需要本地输入。以西门子PLC为例,运用PRODAVE提供的接口进行编程,实现RCMS与PLC的数据通信[9]。PRO—
DAVE主要提供以下API。
(1)LoadConnection—ex6:用于建立连接,初始化参数和适配器。
(2)UnloadConnection—ex6:关闭连接,必须在退出应用前调用。
(3)db—read—ex6:读取背景数据块中的数据。
(4)db—write—ex6:向背景数据块中写人数据。
(5)field—read—ex6:读取I,Q,M等区域中的数据。
(6)field—write—ex6:向I,Q,M等区域中写人数据。
3.5WEB应用
服务器为接入到本系统的intranet用户提供WEB应用,主要功能是在线数据查询、分析和报表。WEB应用的架构属于轻量级JAVAEE,采用MVC架构模式使表现层、业务逻辑层和实体之间的代码分离[1。。。其基于STRUTS2和HIBERNATE框架,前者是较为成熟的MVC框架,核心是采用拦截器来处理请求;后者是著名的ORM框架,可使用对象编程思维来操纵数据库口¨]。在请求方式上,运用AJAX使页面能够实时响应请求,具体采用JQUERY+JSON实现。JQUERY是AJAX的一个框架,其实际上是一个轻量级的JavaScript库。要实现异步请求就需要使用JQUERY中的.ajax()函数,该函数将请求通过GET或POST方式发送至服务器,STRUTS2的拦截器拦截到ACTION后执行相应的SERVICE,SERV-ICE通过DAO层对数据库进行读写。当请求成功后,$.ajax()会回调一个包含STRUTS2返回数据的函数,可以把返回数据显示在页面上。JSON是一种”KEY/VALUE”形式的数据格式,其优点是相比XML更小、更快、更容易解析。须注意,在STRUTS2中只有引入JSON的插件包才能使STRUTS2支持JSON。
4结语
将ADO,SQL及控件等技术应用到WinCC的平台上开发了起重机监控管理系统,并结合PLC控制、信息技术、视频技术及相关组件的应用构建了一个综合性的起重机安全监控管理系统平台,实现了大型起重机的监控与管理。系统在架构上结合了自动化技术和信息化技术,借助互联网技术将底层的过程数据融人到了企业的生产管理中,对提高企业的生产效率和管理水平具有积极作用。该系统的架构不局限于起重机监控领域的应用,同样适用于其他类型设备的监控系统。