徐贤海
(浙江珊溪经济发展有限责任公司,浙江 温州 325300)
水电站水轮机状态数据采集是水电站水轮机计算机监控或改造的重要组成部分,是“四遥”的重要环节。目前大多数水电站水轮机状态数据采集,采用了通用传感器的组合完成[1]。
水电站水轮机组的数据监测模块是计算机监控系统中比较特殊的一个模块[2],采用ADAM进行开发的特点是:①安全性较高。具有二进制代码编译的扩充构件,扩充构件不可能通过非法用户进行反编译,并通过反编译破解来获取设备构件驱动程序、特殊构件的运算算法和特殊界面窗口的设计专利。②编程简单快速。普通用户可以通过ADAM软件模块的高级软件包,开发构件源代码来进行数据处理,也可直接使用构件模块高级应用开发接口处理数据,高级用户还可修订或修改这些构件源代码,以完成编译一些特殊的功能要求。③任务功能明确。ADAM的这种构件具有扩充结构清晰的特点,完全可向ADAM软件开发组或人员提出要求,编写一个可定制的扩充构件模块,而不会发生功能相互交叉或多任务相交叉而不明确的问题。
ADMA 开发模块主要由ADAM-5511 母板和ADAM-5017模拟信号输入模块、ADAM-5024模拟信号输出模块、ADAM-5051 数字信号输入模块和ADAM-5056数字信号输出模块组成。
ADMA开发模块包括两个主要的组件: 主单元和I/O模块。主单元包括一个CPU卡,一个电源校正器,一个4槽的基板,两个系列通讯口和一个可编程口。
该项技术包含在ADAM-5511母版中。
3.1.1 内嵌了80188CPU和ROM-DOS操作系统
ADAM-5511的CPU卡包括一个80188微处理器,ROM-DOS操作系统是一个和MS-DOS兼容的系统,提供除BIOS以外的所有MS-DOS的基本函数。用户可运行标准的PC软件或在ROM-DOS环境下用高级语言编写的应用程序。
3.1.2 内嵌了ROM和编程用的快闪磁盘
ADAM-5511有一个内嵌的快闪ROM,SRAM和快闪磁盘。系统提供了400kB的自由快闪磁盘空间,使用户可以下载程序。同时还有具有后备电源的12kB的自由SRAM,为用户编程时临时变量的存储提供内存。
3.1.3 内嵌了RS-232-485通讯口
ADAM-5511有两个系列的通讯口,使其和应用中的其他设备通讯。COM1口专门用来作为RS-232界面,COM2口专门用来作为RS-485口,这种独特的设计使控制器适用于不同应用程序。
3.1.4 3位隔离和看门狗计时器
电子噪音能够以不同的方式进入系统,可以通过I/O模块、电源供应线、或通讯地线进入。ADAM-5511系统提供了对I/O模块(对地电压3000V)、通讯连线(对地电压2500V)和通讯电源连线(对地电压3000V)的隔离。3位隔离的设计避免了对地产生回路,也降低了电子噪声对系统的影响。这种设计涌流保护更好,可防止危险的电压或尖头信号对系统造成危害。系统有一个看门狗计时器来监测微处理器,能在系统失败时自动的重置ADAM-5511的微处理器。
3.2.1 ADAM-5017模拟微分输出模块
以是16位8通道模拟微分输出模块,在所有通道里提供可编程的输入范围,接受毫伏输入(±150MV,±500MV),电压输入(±1V,±5V和±10V)和电流输入(±20MA,需要125ohms的阻抗)。模块用工程单位(MV,V或mA)把数据提供给主机,对于工业的测量和监测应用来说,该解决办法成本耗资非常低[3]。其光隔离输入在模拟输入和模块之间提供了3000V的隔离电压,保护了由于输入高线性电压对模块和外围设备的损害。另外,模块使用模拟多路转换器进行有效超电压保护,保证了即使在损伤状态下(此状态会损伤其他的多路转换器)信号的准确度。
3.2.2 ADAM-5024模拟输出模块
一个4通道模拟输出模块,通过ADAM-5510系统界面RS-485从主机上接受数字输入,数据的形式用工程单位来表示,使用系统模块控制的D/A转换器把数字信号转换成输出信号。可以通过配置软件确定转换速率和启动电流,通过软件使用也可以把模拟输出配制成电流或电压。模块通过提供D/A输出的光隔离和基于对地隔离电压为500V的转换器的隔离,来防止设备对地形成回路和电压涌流。
3.2.3 ADAM-5051数字输入通道
提供16个数字输入通道,ADAM-5510可使用此模块的数字输入来决定范围的状态或安全开关或接受远程的数字信号。
3.2.4 ADAM-5056数字输出通道
其特点是有16个数字输出通道,数字输出是开路集电极阻抗开关,可以由ADAM-5510控制,此开关也可用来控制固态继电器。
当拿到模拟I/O模块时应进行校核,有时需要另外加以校核。校核参数存储在ADAM-5510模拟I/O模块板的EEPROM软件中进行,所以不需要螺丝刀。ADAM-5510 系统和ADAM使用软件一起支持模拟输入和模拟输出的校核,除了通过软件校核外,模块还在登陆和重启时,同时自动进行零校核和幅值校核。
3.3.1 模拟输入模块校核
模块ADAM-5017的校核采用如下步骤。
(1)选择合适的电源,把模拟模块插入到ADAM-5510系统中,并使其加热30min。
(2)确保模块对于所要校核的输入范围安装和配置正确。
(3)执行零校核命令(也可以调用分支校核命令),也可以使用ADAM使用软件(参考ADAM使用软件的校核子菜单的零校核选项)。
(4)执行幅值校核命令,也可以使用ADAM使用软件 (参考ADAM使用软件的校核子菜单的幅值校核选项)。
(5)仅仅适合ADAM-5018:执行CJC校核命令。也可以使用ADAM使用软件(参考ADAM使用软件的校核子菜单的CJC校核选项)。
零校核和幅值校核必须在CJC校核之前进行。对于CJC校核,热点偶必须连接到ADAM-5018上,而且必须使用一个标准的温度计来测量标准的已知温度,诸如纯水的冰点。ADAM-5018和标准的温度计之间的偏差被ADAM使用,来完成CJC校核。
3.3.2 模拟输出模块校核
模拟输出模块的输出电流的校核,可以通过使用一个低校核值和一个高校核值来进行,模拟输入模块可以对两个范围(0~20mA和4~20mA)中的一个进行配置。由于0~20mA的低范围是一个绝对的内部参考(没有电源,和内部的一个不可测量的小电源),所以校核需要两个等级:4mA和20mA。主要步骤包括:
(1)为包括模拟输出模块的ADAM-5510系统选择好电源,并预热30min。
(2)确保模块安装正确,且是按照规则进行配置,符合要校核的输出范围。可使用ADAM软件来操作。
(3)连接一个5位的mA表或有一个并联阻抗的电压表到模块的螺丝线端子。
(4)向模块发出一个输出值为4mA的模拟数字输出命令。
(5)检查模块端子的实际输出值,如果不等于4mA,使用校核子菜单中的修剪选项来改变实际输出。修剪模块,直到mA表的读数恰好为4mA;如有并联阻抗的电压表,表的读数必须是1V(当校核20mA时,使用并联阻抗的电压表示电压需是5V)。
(6)发出4mA的校核命令,以表明输出已被校核,且在模块的EEPROM里储存校核参数。
(7)执行输出值20mA的模拟数据输出命令,模块的输出大约等于20mA。
(8)执行必要的修剪命令,直到输出的电流值恰好等于20mA。
(9)执行20mA的校核命令,表明目前的输出值恰好为20mA。在模拟输出模块的EEPROM里储存校核参数。
3.4.1 功能域
在消息帧中,功能代码域包含了两个字符ASCII和8Bits的RTU[4]。功能代码域的可用范围一般为1~255,属于十进制的数值。当消息桢是从主设备发向从设备时,功能代码域将告之从设备需要执行哪些功能。
当从设备有回应时,使用了功能代码域来指示其是否正常回应。对于正常的返回值,从设备仅仅返回功能代码信息。而对于有疑问的返回值,从设备将返回正常的原代码,逻辑值为“1”的位置为重点关注位置。
主设备发向从设备的消息数据要求读到一组保持寄存器值,将产生如下的功能代码:00000011(十六进制为03H)
对于正常的回应,从设备仅回应了同样的功能代码。对于异议回应,将返回:10000011(十六进制为83H)
除了功能代码因异议错误而作了修改之外,从设备将是独特的代码回应消息数据域之中,从而告知主设备发生了何种错误。
对于所有的主设备,在设备内嵌的应用程序获取到有疑问的返回值之后,会将所得信息通过从设备的确认后,重新发送并报告给操作员。
3.4.2 数据域
数据域是一个由2个十六进制的数据集合相构成的,其范围为00~FF。根据网络传输的模式,可以由1对ASCII双字节所组成,或由RTU双字节所组成。主设备发给从设备的消息数据域将包含附加信息,从设备执行由功能代码所定义的行为,包括不连续的寄存器地址,需要处置的数值,域中实际数据的字节数[5]。
若没有发生数据或字节的错误,所请求的数据值将从从设备进行返回,并存储在从设备的数据域中。若有错误发生时,主设备将首先判断错误代码,当判断为真则采取下一步的检验,若判断为假,则认定该数据域是不存在的,并报告返回主设备。
3.4.3 错误检测域
标准Modbus网络有3种检测错误的方法:
(1)ASCII模式检测,采用该模式检测时,每个错误检测域包含双ASCII字符。
(2)LRC模式检测,采用该模式检测时,需要在冒号符和回车换行符之间,对纵向冗长检测进行计算,并将LRC字符附加在回车换行符的前面。
(3)RTU模式的特殊检测方法,这种方法是用两个8bit字符拼制为1616Bits值,通过对数据域中内容进行循环冗余检测,将CRC域值附加在检测结果后面,先添加到低字节,然后再添加到高字节,直到最后一个字节添加完成。
3.4.4 字符的连续传输
每当消息在标准的Modbus系列中进行网络传输时,每个字符或字节从左到右发送:
(1)最低有效位和最高有效位都使用ASCII字符帧时,ASCII字符位的序列如下: ①有奇偶校验为:启始位1,2,3,4,5,6,7:奇偶位,终止位。②无奇偶校验为:启始位1,2,3,4,5,6,7:终止位,终止位。
(2)使用了RTU字符帧时,RTU字符的每个位的序列如下: ①有奇偶校验为: 启始位1,2,3,4,5,6,7,8:奇偶位,终止位。②无奇偶校验为:启始位1,2,3,4,5,6,7,8:终止位,终止位。
3.5.1 奇偶校验
该检测可以配置的控制器为奇或偶校验,或无校验。分别对两种模式进行讨论。
(1)当采用ASCII模式时,需要采用7个位数的字符,用以指定奇或偶校验,将“1”配置到每个字符的位数之中并进行计算。
(2)当采用RTU模式时,需要采用8个数据位的字符,例如,二进制11010101,为“1”的位数为5个,为“0”的位数为4个,则可以设置为奇校验位将是“0”,偶校验位将是“1”。当传输时遇到校验检测“0”时,开展奇校验,当遇到“1”是开展偶校验[6]。
3.5.2 LRC检测
该检测使用了ASCII模式,消息中包括了基于LRC方法的错误检测域值。
LRC检测方法是将消息域中排除从冒号到回车换行号之间的数据桢,消息域为二进制的8位字节值。LRC检测的方法是将传输设备接收到的消息与现存的消息逐个字节进行比较,放弃进位,进行连续累加的一种检测方法。比较数值若不相等则表明有错误。
3.5.3 CRC检测
该检测使用了RTU模式,其消息包括了基于CRC方法的错误检测域。CRC方法的最大特点是一个由先调入的值,从1的16位的寄存器组成。检测时将检测整个数据域的内容,主要原理是:
(1)CRC方法包含了2个16位的二进制值,组成两个字节,并将其加入到数据域中。
(2)当设备接收到外部消息数据时,将新数据域和接收的数据内容进行比较,比较后若数值相同,则认为是真,否则不能通过检测。
(3)调用连续的8位字节二进制值进行处理。当有失真数据时,起始位、停止位和奇偶校验位均设置为无效,每个字符中的数据为8Bit。
在CRC检测产生的过程中,每个8位字符都将单独和寄存器数值内容相或(OR),结果向最低的有效位方向进行移动,最高有效位以0为填充。
在CRC检测产生的过程中,LSB将被提取出来。在经过检测后,若LSB的值为0,则不进行相或。若LSB的值为1,则将寄存器和预置的值相或。由于每个域包含了8个字符,所以整个过程要重复循环8次。在最后一位(即第8位)完成后,下一个8位字节又将单独和寄存器的当前值进行相或。最终寄存器中所存储的值,将是所有数据都已经处理完成的CRC数值。这些数值将从低字节开始,到最高字节结束,将CRC添加到消息之中。
本模块在现场试验过程中,对所需参数的采集先通过了采集模块来实现,可以直观地观测采集到的数据发展趋势,如图1。
图1 实时数据显示界面
编制该模块程序所形成的动态链接库组件可取名为Me5511.dll,并存储在计算机的动态链接库目录中,设置为自动启动接口模式。则计算机监控的上位机软件中,一旦启动可执行程序,就可自动调用该组件接口。并可把运算和处理后的数据读取到上位机软件界面进行显示。在界面之中加入了水头、流量、桨叶转角、导叶行程、有功功率、无功功率等参数以配合客户使用,并在右边的实时绘图模块中,绘出了各个参数的曲线界面,其界面如图2。可在上位机软件之中设置导航菜单,导航到具体参数配合的曲线界面,如图1。导航界面还可清晰地显示桨叶行程和导叶行程之间的配合关系,以及实时绘制出了桨叶行程和导叶行程的实时情况。
图2 采集界面
采用ADMA模块开发软件实现了水电站水轮机数据监测模块的开发,并在上位机中进行实践应用,该应用丰富了水电站计算机监控系统的内容,完善了水电站计算机监控系统在水轮机数据监测的功能,有效提升了水电站综合自动化水平。本模块的开发经验可为其他模块的开发及水电站计算机监控系统的进一步升级提供借鉴。