掌桥专利:专业的专利平台
掌桥专利
首页

一种基于智能协议转换器的机房动环监测数据采集方法

文献发布时间:2024-04-18 20:02:40


一种基于智能协议转换器的机房动环监测数据采集方法

技术领域

本发明涉及环境监测技术领域,特别是一种基于智能协议转换器的机房动环监测数据采集方法。

背景技术

数据采集终端对现地设备的动力和环境监控量进行数据采集,维护人员可以在机房动力环境监控中心进行远距离监控,随时了解调度自动化系统现地动力设备的运行状况、机房环境和安全情况,及时发现故障并提示维护人员采取相应的解决措施,从而实现机房的少人或无人值守。

目前,机房动力环境监测数据采集通常采用MODBUS串口通信,采集终端内部已进行封装,无法修改和查看内部通信程序,且采集终端只能实现现地设备的串口通信,无法实现采集终端与监控系统上位机的通信。因此,若要实现该功能,需要重新采购相关功能设备来实现。

综上,故希望拥有一套智能采集终端,可以同时作为通信机和协议转换器使用,编写运行上位机各串口通信程序作为数据采集器通过MODBUS串口通信采集现地数据后上送至智能协议转换器中,以实现主站侧上位机功能;上述功能已将现场数据存入对应的共享内存中,再编写IEC104通信协议或其他通信协议程序读取智能协议转换器中的共享内存实时库中的实时数据,以实现下位机协议转换功能。基于上述功能,以满足机房动力环境数据的方便灵活快速采集。

发明内容

本发明克服现机房动环系统采集终端的不足,提出一种基于智能协议转换器的机房动环监测数据采集方法。

为解决上述技术问题,本发明所采用的技术方案是:一种基于智能协议转换器的机房动环监测数据采集方法,包括智能协议转换器,所述智能协议转换器采用多进程采集技术,采用多个不同的进程与多台现地设备进行通信,每个进程从相应现地设备中采集数据并发送到统一的共享内存区中,其它子进程程序统一从共享内存中读取数据,将接收到的数据通过IEC104通信发送到机房动环监控服务器相应的缓存区中。

其中,现地设备通信进程之间相互独立,任何一个进程的退出都不会影响到另外两个进程的运行,也不会影响到另外两个进程在共享内存区中的数据,子进程之间相互独立,任何子进程死掉都不会影响到其他子进程的运行,其他子进程数据仍然会被完整的送到机房动环监控服务器相应的缓存区中。

优选的,所述智能协议转换器包括通信机运行方式和协议转换器运行方式;

所述的通信机运行模式,其运行方式同上位机主站层主机运行方式相同,功能同主站层主机一致,其内部运行IEC104通信协议,并启动广播进程,该进程包括网络接收总线进程和网络发送总线进程,其中,网络接受总线进程完成网络上的信息接收,网络发送总线进程完成本机的信息发送,与主站层主机的区别是没有监控系统画面;

所述的协议转换器运行模式,该模式运用在网络配置方式或使用环境不适用同网广播的模式,此时,将智能采集终端作为协议转换器使用,以实现现地数据采集。当主站层数据量庞大,需要使用多台智能采集终端时,智能采集终端由于硬件的限制无法实现和主站层相同的数据库及同网广播方式来采集数据,故此时配置为协议转换器方式运行;在此种使用模式下,所有智能采集终端均采用相同配置。

优选的,所述协议转换器运行模式下监控系统无需启动广播进程,结合MODBUS串口协议通信原理,对通信配置文件、通信点表和程序中相关寄存器移位来实现不同现地设备厂家的MODBUS串口通信;该运行模式将现地设备中采集的数据直接发送至智能采集终端统一的共享内存区中,IEC104从站通信协议程序从共享内存区中读取数据,将接收到的数据通过IEC104通信发送到机房动环监控中心服务器相应的缓存区中。

优选的,所述智能协议转换器内布置基于通信配置文档的MODBUS通信程序,其步骤如下:

步骤1:根据现场具体实际采集设备,建立上位机主站系统机房动环系统数据库点表,将点表文件加入数据库配置软件中;

步骤2:同步机房动环数据库点表至共享内存中,检查共享内存实时库点表是否正常;

步骤3:读取MODBUS通信参数配置文件comm_config.def是否正常,若正常执行下一步,否则退出程序流程;

步骤4:读取通信点表文件装置*_YC.txt/装置*_YX.txt是否正常,若正常执行下一步,否则退出程序流程;

步骤5:读取MODBUS通信串口,若成功则执行下一步,否则初始化串口,执行串口初始化函数,直到串口读取成功后,执行下一步流程;

步骤6:串口读取成功后,判断MODBUS通信函数是否执行成功,若成功,则执行MODBUS通信函数,否则,关闭MODBUS通信串口。

步骤7:MODBUS通信主函数流程结束。

优选的,所述串口初始化包括以下步骤:

步骤1:检测MODBUS通信串口是否打开,若打开则执行下一步,否则程序流程结束;

步骤2:选择串口通信波特率,并判断是否满足要求,若满足则执行下一步,否则程序结构流程退出;

步骤3:选择数据位,并判断是否满足要求,若满足则执行下一步,否则程序结构流程退出;

步骤4:选择检验位,并判断是否满足要求,若满足则执行下一步,否则程序结构流程退出;

步骤5:循环检测读取通信配置文件comm_config.def通信装置的数量DEV_NUM值并清空相关装置的遥信和遥测点表的逻辑名和中文名;

步骤6:循环读取通信装置遥测、遥信文件名,判断文件名是否为空,若文件名不为空,则打开改文件,否则函数流程退出;

步骤7:循环读取各装置遥测、遥信数据点表文件装置*_YC.txt/装置*_YX.txt,文件按行读取,读取内容包括逻辑名、中文名、点地址和放大倍数,读取完成后拷贝逻辑名、中文名、点地址和放大倍数至遥测、遥信信息体数组info[i].yc[id]/info[i].yx[id]中,判断点信息体数组逻辑名是否为空,若为空,则函数流程退出,否则,根据点表参数从共享内存中读取数据,且该数据只在数据值变化超过设定死区后才进行写入。

步骤8:串口初始化函数流程结束。

优选的,所述MODBUS通信函数步骤如下:

步骤1:根据通信配置文件comm_config.def中通信装置数量参数DEV_NUM循环读取各通信装置,在每个装置的基础上,根据通信配置文件comm_config.def中CYC_NUM参数配置,根据具体需求定义循环读取同一装置的次数,进行通信装置的寄存器循环读取;

步骤3:判断串口通信发送帧函数执行是否成功,若执行成功,则执行函数流程下一步,否则MODBUS通信函数流程退出;

步骤4:判断遥测、遥信点表数据读取函数是否执行成功,若成功,则将标志位flag置1,并执行函数流程下一步,否则,将标志位flag置0,MODBUS通信函数流程退出;

步骤5:执行遥测遥信数据解析函数;

步骤6:MODBUS通信函数流程结束。

优选的,所述遥测、遥信数据点表读取步骤如下:

步骤1:对内存空间进行初始化,开辟缓存区;

步骤2:定义串口数据读取的总长度ReadLen,该数据长度根据MODBUS通信原理,包括寄存器个数、地址位、功能码、数据长度、CRC校验码;

步骤3:读取串口数据并返回数据长度RcvLen,判断ReadLen是否等于RcvLen,若等于,执行遥信、遥测点表数据读取函数流程下一步,否则,函数流程退出;

步骤4:判断奇偶校验是否成功,若成功,执行函数流程下一步,否则,函数流程退出;

步骤5:判断串口设备地址返回值是否正确,若正确则执行函数流程下一步,否则函数流程退出;

步骤6:根据通信配置文件comm_config.def中参数CYC_NUM,判断点表文件读取次数,根据配置文件定义进行数据读取,读取的数据存入新开辟的内存中;

步骤7:将内存中返回的数据存至anabuf[i]中;

步骤8:遥信、遥测点表数据读取函数流程结束。

优选的,所述遥测遥信数据解析包括以下步骤:

步骤1:循环解析接收到的串口数据码值;

步骤2:将anabuf[i]数组中相邻两个单字数据合并为一个双字十六进制数据,清除该数据最高位符号位,根据实际情况在数据前面添加正负号,根据点表文件对遥测数据进行倍率转换;

步骤3;判断点表文件逻辑名是否为空,若不为空,执行函数流程下一步;否则函数流程退出;

步骤4;判断读取的新数据与上一时段的旧数据是否一致,若不一致。执行函数流程下一步;否则函数流程退出;

步骤5:执行函数WrANA()将读取的新数据放入共享内存中,即数据不变不写实时库,变化才写实时库;

步骤6:函数流程结束。

所述的机房动环监控中心服务器通过交换机与多台协议转换器连接,实现数据的采集与交互,多台协议转换器可以按照通讯的实际对象进行划分,分别采集对应设备数据信息。

本发明提供一种基于智能协议转换器的机房动环监测数据采集方法,具有以下有益效果:

(1)本发明能够解决采集终端因内部封装而无法手动配置的情况,通过修改配置文件开源的通信程序,以改变所需求的通信功能,该方法提高了数据采集的灵活性;

(2)本发明所述的多进程采集技术,可以保证任何一个进程的退出都不会影响到另外两个进程的运行,也不会影响到另外两个进程在共享内存区中的数据,任何子进程死掉都不会影响到其他子进程的运行,其他子进程数据仍然会被完整的送到机房动环监控服务器相应的缓存区中,该技术确保了数据采集的可靠性。

(3)本发明可以同时作为通信机或协议转换器使用,以满足机房动力环境数据的方便灵活快速采集。

附图说明

下面结合附图和实施例对本发明作进一步说明:

图1 为智能协议转换器通信装置程序工作原理图;

图2 为遥测点表定义格式示例图;

图3 为遥信点表定义格式示例图;

图4 为机房动环系统主函数流程图;

图5 为串口初始化函数流程图;

图6 为MODBUS通信函数流程图;

图7 为遥信遥测数据读取函数流程图;

图8 为遥信遥测数据解析函数流程图;

图9 为机房动环系统设备连接拓扑结构图。

具体实施方式

机房动环监测系统由机房动环监控中心服务器、交换机、智能协议转换器、温湿度传感器、水浸传感器、交采表、开关信号采集器、电源适配器、精密空调、UPS系统在线监测器等组成。

所述的智能协议转换器采用多进程采集技术,采用多个不同的进程与多台现地设备进行通信,每个进程从相应现地设备中采集数据并发送到统一的共享内存区中,其它子进程程序统一从共享内存中读取数据,将接收到的数据通过IEC104通信发送到机房动环监控服务器相应的缓存区中。其中,现地设备通信进程之间相互独立,任何一个进程的退出都不会影响到另外两个进程的运行,也不会影响到另外两个进程在共享内存区中的数据,子进程之间相互独立,任何子进程死掉都不会影响到其他子进程的运行,其他子进程数据仍然会被完整的送到机房动环监控服务器相应的缓存区中。其工作原理图如图1所示。

所述的智能协议转换器在文件配置和数据库结构上分两种使用情况:通信机方式配置和协议转换器方式配置。

所述的通信机运行模式,其运行建立在数据量较小时,该方式同主站侧通信主机运行方式相同,功能同主站侧通信主机一致,其内部运行IEC104通信协议,并启动广播进程,该进程包括网络接收总线进程和网络发送总线进程,其中,网络接受总线进程完成网络上的信息接收,网络发送总线进程完成本机的信息发送,与主站层主机的区别是没有监控系统画面。

其中,通信机运行方式步骤如下:

步骤1、定义机房动环系统所属的主机名及顺序。其中主机数量根据现场具体使用情况进行添加和删除。

步骤2、定义监控系统所属的主机名及ip地址,定义广播地址,添加系统lan_inb为网络接收总线进程,该服务为网络接受总线服务完成网络上的信息接收。添加系统lan_outb为网络发送总线进程,该服务为网络发送总线服务完成本机的信息发送。添加系统dbwrite为实时库写库进程,该服务完成系统信息的处理,包括报文处理、写入实时库、提交事件等。

步骤3、执行系统内IEC104通信协议程序,以实现主站侧通信机的运行模式。

所述的协议转换器方式,该模式运用在网络配置方式或使用环境不适用同网广播的模式,此时,可以将智能采集终端作为协议转换器使用,以实现现地数据采集。当主站层数据量庞大,需要使用多台智能采集终端时,智能采集终端由于硬件的限制无法实现和主站层相同的数据库及同网广播方式来采集数据,故此时配置为协议转换器方式运行。在此种使用模式下,所有智能采集终端均采用相同配置。

所述的协议转换器运行模式,该模式下监控系统无需启动广播进程。结合相关MODBUS串口协议通信原理,对通信配置文件、通信点表和程序中相关寄存器移位来实现不同现地设备厂家的MODBUS串口通信。所述的协议转换器运行方式将现地设备中采集的数据直接发送至智能采集终端统一的共享内存区中,IEC104从站通信协议程序从共享内存区中读取数据,将接收到的数据通过IEC104通信发送到机房动环监控中心服务器相应的缓存区中。

其中,配置文件包括如下参数:

PORT=/dev/ttyAM0(串口号定义,1~8号串口分别定义为ttyAM0~ttyAM7);MODE(串口通信接口方式,0表示232方式,1代表485两线制方式,2代表422方式,3代表485四线制方式);BAUD(通信波特率);DATA_BITS(数据位长度);PARITY(奇偶校验方式,0表示无奇偶校验,1表示偶校验,2表示奇校验);DEV_NUM(定义的串口连接的装置数量);DEV1_YC=装置*_YC.txt(装置遥测点表,定义与装置数量对应,每个装置1个点表文件);DEV1_YX=装置*_YX.txt(装置遥信点表,定义与装置数量对应,每个装置1个点表文件);DEV_ADR*(装置通信地址,定义与装置数量对应,每个装置1个地址);READ_NUM(读寄存器次数,因串口通信每个数据包的长度限制,在读取多个寄存器值时,需要分多次读取);START_ADR*(寄存器的起始地址,定义与读取次数对应,每次读取都需定义其起始地址);LEN*(每次读取长度字,定义与读取次数对应)。

所述的装置遥测点表定义格式如图2所示。其中,放大倍数表示传输码值对原始值的放大倍数,例如装置采集的“第1路功率值”为12.34,将其放大100倍,变为1234传输,通信程序收到码值后相应的缩小,获得采集实际值。

所述的装置遥信点表定义格式如图3所示。定义遥信量点表,必须将其点表个数定义为16的整数倍,点数不够用空的“备用”点补齐。对于不同通信设备,需要通信采集的量在不同的寄存器地址中。在程序中分别将各遥测、遥信寄存器地址值移植到遥测、遥信接收区数组中进行进一步处理。

所述的协议转换器模式下,智能协议转换器内布置基于通信配置文档的MODBUS通信程序,主函数流程图如图4所示,其程序主体结构逻辑如下:

步骤1:根据现场具体实际采集设备,建立上位机主站系统机房动环系统数据库点表,将点表文件加入数据库配置软件中;

步骤2:同步机房动环数据库点表至共享内存中,检查共享内存实时库点表是否正常;

步骤3:读取MODBUS通信参数配置文件comm_config.def是否正常,若正常执行下一步,否则退出程序流程;

步骤4:读取通信点表文件装置*_YC.txt/装置*_YX.txt是否正常,若正常执行下一步,否则退出程序流程;

步骤5:读取MODBUS通信串口,若成功则执行下一步,否则初始化串口,执行串口初始化函数,直到串口读取成功后,执行下一步流程;

步骤6:串口读取成功后,判断MODBUS通信函数是否执行成功,若成功,则执行MODBUS通信函数,否则,关闭MODBUS通信串口。

步骤7:MODBUS通信主函数流程结束。

其中,所述的串口初始化函数流程图如图5所示,串口初始化函数程序逻辑结构如下,:

步骤1:检测MODBUS通信串口是否打开,若打开则执行下一步,否则程序流程结束;

步骤2:选择串口通信波特率,并判断是否满足要求,若满足则执行下一步,否则程序结构流程退出;

步骤3:选择数据位,并判断是否满足要求,若满足则执行下一步,否则程序结构流程退出;

步骤4:选择检验位,并判断是否满足要求,若满足则执行下一步,否则程序结构流程退出;

步骤5:循环检测读取通信配置文件comm_config.def通信装置的数量DEV_NUM值并清空相关装置的遥信和遥测点表的逻辑名和中文名;

步骤6:循环读取通信装置遥测、遥信文件名,判断文件名是否为空,若文件名不为空,则打开改文件,否则函数流程退出;

步骤7:循环读取各装置遥测、遥信数据点表文件装置*_YC.txt/装置*_YX.txt,文件按行读取,读取内容包括逻辑名、中文名、点地址和放大倍数,读取完成后拷贝逻辑名、中文名、点地址和放大倍数至遥测(遥信)信息体数组info[i].yc[id]/info[i].yx[id]中,判断点信息体数组逻辑名是否为空,若为空,则函数流程退出,否则,根据点表参数从共享内存中读取数据,且该数据只在数据值变化超过设定死区后才进行写入。

步骤8:串口初始化函数流程结束。

其中,所述的MODBUS通信函数流程图如图6所示,MODBUS通信函数程序逻辑结构流程如下:

步骤1:根据通信配置文件comm_config.def中通信装置数量参数DEV_NUM循环读取各通信装置,在每个装置的基础上,根据通信配置文件comm_config.def中CYC_NUM参数配置,根据具体需求定义循环读取同一装置的次数,进行通信装置的寄存器循环读取;

步骤3:判断串口通信发送帧函数执行是否成功,若执行成功,则执行函数流程下一步,否则MODBUS通信函数流程退出;

步骤4:判断遥测、遥信点表数据读取函数是否执行成功,若成功,则将标志位flag置1,并执行函数流程下一步,否则,将标志位flag置0,MODBUS通信函数流程退出;

步骤5:执行遥测遥信数据解析函数;

步骤6:MODBUS通信函数流程结束。

其中,所述的遥信遥测数据读取函数流程图如图7所示,遥信、遥测点表数据读取函数程序逻辑结构流程如下:

步骤1:对内存空间进行初始化,开辟缓存区;

步骤2:定义串口数据读取的总长度ReadLen,该数据长度根据MODBUS通信原理,包括寄存器个数、地址位、功能码、数据长度、CRC校验码;

步骤3:读取串口数据并返回数据长度RcvLen,判断ReadLen是否等于RcvLen,若等于,执行遥信、遥测点表数据读取函数流程下一步,否则,函数流程退出;

步骤4:判断奇偶校验是否成功,若成功,执行函数流程下一步,否则,函数流程退出;

步骤5:判断串口设备地址返回值是否正确,若正确则执行函数流程下一步,否则函数流程退出;

步骤6:根据通信配置文件comm_config.def中参数CYC_NUM,判断点表文件读取次数,根据配置文件定义进行数据读取,读取的数据存入新开辟的内存中;

步骤7:将内存中返回的数据存至anabuf[i]中;

步骤8:遥信、遥测点表数据读取函数流程结束。

所述的遥信遥测数据解析函数流程图如图8所示,遥测遥信数据解析函数程序逻辑结构流程如下:

步骤1:循环解析接收到的串口数据码值;

步骤2:将anabuf[i]数组中相邻两个单字数据合并为一个双字十六进制数据,清除该数据最高位符号位,根据实际情况在数据前面添加正负号,根据点表文件对遥测数据进行倍率转换;

步骤3;判断点表文件逻辑名是否为空,若不为空,执行函数流程下一步;否则函数流程退出;

步骤4;判断读取的新数据与上一时段的旧数据是否一致,若不一致。执行函数流程下一步;否则函数流程退出;

步骤5:执行函数WrANA()将读取的新数据放入共享内存中,即数据不变不写实时库,变化才写实时库;

步骤6:函数流程结束。

所述的监控中心服务器通过交换机与多台协议转换器连接,实现数据的采集与交互,多台协议转换器可以按照通讯的实际对象进行划分,分别采集对应设备数据信息,机房动环系统拓扑结构图如图9所示。

上述的实施例仅为本发明的优选技术方案,而不应视为对于本发明的限制,本发明的保护范围应以权利要求记载的技术方案,包括权利要求记载的技术方案中技术特征的等同替换方案为保护范围。即在此范围内的等同替换改进,也在本发明的保护范围之内。

技术分类

06120116587280