1 前言
目前DCS在过程控制领域的应用日益广泛,其基本结构为工业控制计算机/现场控制仪表或控制单元模块/现场控制对象和执行机构三层。工业控制计算机实现生产过程信息、模拟画面显示、控制回路组态、生产过程优化处理、运行趋势报表显示等功能;现场控制仪表及控制单元模块完成过程数据I/O、直接数字的过程控制、设备监视和系统测试诊断等功能;执行机构和控制对象则接收控制信号实施最后的操作。目前,国内外多家组态软件公司提供了功能强大、应用方便的组态软件,用于DCS各层之间的协调连接和数据共享,在工控机上采用组态软件编程成为DCS的一种趋势。全中文工控组态软件MCGS(Monitor and Control Generated System,通用监控系统)是一套用于快速构造和生成计算机监控系统的组态软件,它能够在基于Microsoft的各种32位Windows平台上运行,通过对现场数据的采集处理,以动画显示、报警处理、流程控制和报表输出等多种方式向用户提供解决工程实际问题的方案,在工业控制领域有着广泛的应用。
笔者承担了湖北大冶铁矿球团厂全过程自动化的改造项目。大冶铁矿竖炉球团采用自制煤气供其他工段使用,为达到稳定供气目的,采用DCS对出口煤气的流量、压力等参数进行了控制。重庆宇通公司(以下简称宇通公司)生产的ST2000是现场采用的数据采集单元,MCGS没有提供其设备驱动,在实际应用中用户需要利用组态软件提供的接口规范自行编制,本文研究了ST2000智能仪表在MCGS下的设备驱动开发问题。
2 系统分析
制气工段中,我们共设置3台ST2000仪表对现场30个数据进行采集,采集到的数据送到主机,即研华610工控机上,通过主机与其他输入输出设备沟通。ST2000与主机之间采用422/485接口连接,其硬件系统图如图1所示。
图1 ST2000数据采集硬件系统图
该数据采集系统在整个煤气发生炉控制系统里实际上是一个数据源,在现场运行的环境下,必然要求数据的及时与可靠。考虑到整个软件系统的运行周期以及硬件设备的执行周期,设置构件的调用周期为1s。同时,因为有多台仪表同时运行,考虑到该工程量大、一次性投资多等原因,为避免设备构件的重复使用,拟订用单设备构件采集多设备。
宇通公司生产的ST2000智能仪表是一种集数据采集、控制、显示、传输及输出为一体的现场可操作仪表。可按程序自动完成模拟量和数字量的输入输出,同时与上位机按照203_Optomux协议进行通信,通讯端口为COMM232。在大冶铁矿煤气发生炉控制系统中,该仪表用来实现工作现场数据的采集和转换。
3 设备驱动的开发
ST2000提供了可供用户使用的串行通信协议,它提供了多种读写指令,由于这里只进行数据采集,选取读指令格式为:
1byte | 2 byte | 2 byte | 2 byte | 2 byte | 1 byte |
> | Address | L | Channel | Checksum | CR |
标识符 | 设备地址 | 命令名 | 设备通道号 | 校验和 | 空格 |
其返回指令格式为:
1byte | m*4bt,m为返回的数据个数 | 2byte | 1byte |
A | Data | Checksum | CR |
标识符 | 数据位 | 校验和 | 空格 |
整个通讯过程为:在一个数据采集周期内,上位机调用ST2000设备驱动,向ST2000仪表发送读指令,同时准备接收返回的数据;ST2000收到上位机发送的指令,自动校验并识别指令含义及其所带信息,将指令要求的数据以返回格式发送给上位机;上位机收到应答指令,校验并解析指令识别数据。
通讯设置为:
通讯端口 | 波特率 | 数据位 | 数据采集方式 | 停止位 | 校验方式 |
串口1 | 9600 | 8 | 同步采集 | 1 | 奇校验 |
MCGS系统提供了一套可扩充的接口规范和配套的高级开发工具包来开发扩充构件,以多种方式与其他应用程序实现数据交互,以满足各方用户的需求。
MCGS用Active DLL构件的方式来实现设备驱动程序,通过规范的OLE接口挂接到MCGS中,使其构成一个整体,由于设备驱动构件和MCGS运行在同一个进程内,故设备构件运行速度快,可靠性高,不存在传统DDE方式连接时的数据流通不畅和传输速度慢等问题。同时,OLE是一个可扩充的开放标准,可实现不同语言软件之间的相互操作。
MCGS把实际外部设备分为独立的设备、父设备和子设备三类,独立设备是可独立工作,完成特定数据输入输出功能的设备,如PC接口卡;父设备是本身不处理数据输入输出,但起到管理其它设备工作的设备,如串行口设备、IDCN-893的通讯卡;子设备是本身具有处理数据输入输出的功能,但只有和对应的父设备一起才构成完整工作系统的设备,如PLC设备、带智能通讯功能的仪器仪表等。MCGS提供通用串口父设备构件,可直接挂接子设备和设置通讯属性。
利用MCGS组态软件的多语言支持功能和所带的丰富的接口函数,很容易地进行编程,考虑到VB的简洁和工整,可利用它进行开发工作。同时,利用MCGS提供的在线测试功能,可灵活的进行程序的在线调试。
需要注意的是,在编制设备构件程序的过程中,两个接口函数即RunDevCommand()和CollectDevDat()的运用。这两个接口函数分别对应“设备命令”和“采集数据”两个设备构件的基本功能。用户在编制程序时遇到需要分批采集数据,如采集多个同类设备,就要考虑到时序配合的问题。RunDevCommand()接口用于用户自己定制命令,完成特殊功能,一般用来读写单个数据,而CollectDevDat()接口则可进行数据的批量读写,且可以直接和MCGS的组态环境数据库中的变量联系起来,较前者更方便可靠。
图2 MCGS设备构件开发流程图
MCGS内部的ST2000通讯状态可由其通讯测试图来显示。ST2000回路控制器作为一个数据源通过组态同工程其他环节协调工作,协助实现控制策略、实时报表、界面演示等功能。
不同设备,它所支持的通讯协议不同,其驱动程序的编制也就不尽相同。但只要给出其数据传输的协议,在掌握开发工具的条件下开发驱动,对于一般编程人员,都不是一件难事,驱动程序大致的开发流程如图2所示。
4 结语
图3为实际运行时ST2000的数据显示界面。经长期运行检验,该驱动程序效果良好,保证了数据采集的及时可靠,为进一步实现控制算法提供了准确稳定的数据来源。
图3 ST2000数据显示界面
随着科技的日新月异,各种先进设备不断涌现,给从事流程工业控制的工程人员带来前所未有的挑战。开发设备驱动不论是对于软、硬件开发工程人员还是对于第三方的专业、业余开发者或用户来说,都越来越成为必要的技能。本文所介绍的在MCGS环境下开发智能型多功能仪表,方便易懂,简洁明了,已经成功运用于大冶铁矿球团厂自动化改造项目中,具有较高的参考价值。