McgsPro 环保HJ212 串口 从站设备通信驱动

下载

McgsPro_环保HJ212_Comm_从站_6.0.0.1_20210517.rar

1、 设备简介

本驱动构件用于MCGS软件,通过污染物在线监控(监测)系统数据传输标准协议与服务器进行数据交互与操作;

驱动类型 以太网子设备,须挂接在“通用串口父设备”下才能工作
通讯协议 污染物在线监控(监测)系统数据传输标准协议(HJ2012-2017)
通讯方式 混合模式。

2、 硬件连接

McgsPro软件与设备通讯之前,必须保证通讯连接正确。

通讯连接方式:RS232或者RS485。

3、 设备通讯参数

“通用串口父设备”通讯参数设置如下:

4、 设备构件参数设置

“HJ212_Slave_tcp_shl”子设备参数设置如下:

内部属性:本驱动无内部属性。

最小采集周期(ms)MCGS对设备进行操作的时间周期,单位为ms,默认为100ms。

  • 重连等待时间(s): 在服务器端指定时间内未收到数据,会进行重连服务器,单位秒。

5、 采集通道

  • 驱动所需固定通道:
固定通道 类型 作用 读写属性
RecvCount DUB 驱动接收到帧时,这个数据会发生改变,用户通过事件策略,检测这个值跳变时配合GetData设备命令实现和上位机交互 读写

 

6、 设备命令(寄存器设备命令)

本设备构件提供设备命令,具体格式如下:

设备命令 命令介绍
MakeProtocol 格式 MakeProtocol(strData,strSendData )
用途 组建上位机发帧所需要的帧数据,主要用书数据的翻译,把变量翻译成常量
参数 strData strData为用户用于发帧时所组的帧数据 strData的格式为键值对,其中键为常量而值可谓变量或常量,其具体格式为 strData=”key1=value1,key2=value2;key3=value3,…”

驱动会优先认为value是变量,并用实际值替换value1

strSendData strSendData为用户实际用于发送的数据,包括了帧头,帧尾,CRC等 其中所有的字段都为常量
例1 MakeProtocol(strData,strSendData)

其中:strData=”QN=20160801085857223;ST=32;CN=2021;PW=123456;MN=010000A8900016F000169DC0;Flag=5;CP=&&DataTime=DataTime;SB1-RS=1;SB2-RS=Data01&&”;其中变量DataTime=201608010858857,Data01=2

执行之后的strSendData就变为

QN=20160801085857223;ST=32;CN=2021;PW=123456;MN=010000A8900016F000169DC0;Flag=5;CP=&&DataTime=201608010858857;SB1-RS=1;SB2-RS=2&&

Send 格式 Send(strData,nRet )
用途 发送指定数据strData,并在数据上加上帧头帧尾及相关校验,并根据nRet判断发帧是否成功,发送帧前会对strData进行转码操作;strData和nRet都为变量
参数 执行结果 0 执行成功
-1 执行失败
例1 Send(strData,nRet)

其中:strData=”##0101 QN=20160801085857223;ST=32;CN=2021;PW=123456;MN=010000A8900016F000169DC0;Flag=5;CP=&&DataTime=201608010858857;SB1-RS=1;SB2-RS=2&&0AC2\r\n”

向上位机上传数据,其中strData为用户所组的数据,nRet返回值为0是发送成功,返回值为-1是发送失败
GetQueueSize 格式 GetQueueSize(size)
用途 获取当前收帧队列里的帧个数
参数 Size 获取当前收帧队列里的帧数据个数
例1 GetQueueSize(size)
Size=0,表示当前数据队列里没数据,size非零表示当前数据队列里有数据
GetData 格式 GetData(strData,nRet )
用途 获取当前收帧队列里的帧头数据,并移除队列
参数 strData 获取当前收帧队列的队列头数据,如果队列为空,会将strData置空,并将nRet置为-1
nRet 标志当前数据获取数据是否成功,当队列为空返回-1,当队列非空返回还剩余的帧个数
例1 GetData(strData,nRet)
执行之后,strData的值为”##0101 QN=20160801085857223;ST=32;CN=2021;PW=123456;MN=010000A8900016F000169DC0;Flag=5;CP=&&DataTime=201608010858857;SB1-RS=1;SB2-RS=2&&0AC2\r\n”而nRet=10表示帧队列里还有10条帧数据
GetValue 格式 GetValue(strData,Key,Value,nRet )
用途 strData之中的字符串做数据分解,根据Key值获取Value,但不存在时获取值为空
参数 strData 待分解的字符串,可为变量也可谓常量
Key 键值对的键值 Key的值只能为常量
Value 键值对的值 当未获取到数据时,Value置空nRet置为-1,成功时nRet置为0
例1 GetValue(strData,”PW”,value)
其中strData=”##0101 QN=20160801085857223;ST=32;CN=2021;PW=123456;MN=010000A8900016F000169DC0;Flag=5;CP=&&DataTime=201608010858857;SB1-RS=1;SB2-RS=2&&0AC2\r\n”这是value的值就为123456,如果key=”ABCD”则value的值为空,nRet为-1
     
GetCpValue 格式 GetCpValue(strData,Key,Value,nRet )
用途 strData之中的字符串的CP数据段做数据分解,根据Key值获取Value,但不存在时获取值为空,解决GetValue之中获取CP字段最后一个参数时出现错误
参数 strData 待分解的字符串,可为变量也可谓常量
Key 键值对的键值 Key的值只能为常量
Value 键值对的值 当未获取到数据时,Value置空nRet置为-1,成功时nRet置为0
例1 GetValue(strData,”SB1-RS”,value)
其中strData=”##0101 QN=20160801085857223;ST=32;CN=2021;PW=123456;MN=010000A8900016F000169DC0;Flag=5;CP=&&DataTime=201608010858857;SB1-RS=1;SB2-RS=2&&0AC2\r\n”这是value的值就为1,如果key=”ABCD”则value的值为空,nRet为-1
     

 

7、 错误标志:

故障现象 分析故障及处理方法
通讯状态为-1 分析 驱动文件缺失
处理方法 1重新安装驱动
通讯状态为-2 分析 通讯端口打开失败
处理方法 1检查父设备的IP地址信息是否正确

2检查通讯线是否正确连接

通讯状态为0 当前网络连接正常  
通讯状态为-5 设备命令格式错误 检查设备命令格式是否正确

驱动执行逻辑流程:

版权声明:本文内容来源于网络搜集无法获知原创作者,仅供个人学习用途,若侵犯到您的权益请联系我们及时删除。邮箱:1370723259@qq.com

发表评论