下载
McgsPro_环保HJ212_Comm_从站_6.0.0.1_20210517.rar
1、 设备简介
本驱动构件用于MCGS软件,通过污染物在线监控(监测)系统数据传输标准协议与服务器进行数据交互与操作;
驱动类型 | 以太网子设备,须挂接在“通用串口父设备”下才能工作 |
通讯协议 | 污染物在线监控(监测)系统数据传输标准协议(HJ2012-2017) |
通讯方式 | 混合模式。 |
2、 硬件连接
McgsPro软件与设备通讯之前,必须保证通讯连接正确。
通讯连接方式:RS232或者RS485。
3、 设备通讯参数
“通用串口父设备”通讯参数设置如下:
4、 设备构件参数设置
“HJ212_Slave_tcp_shl”子设备参数设置如下:
l 内部属性:本驱动无内部属性。
l 最小采集周期(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