新闻中心
PRESS CENTERIEC104 Client节点用于和符合 《IEC-60870-5-104 规约》的服务端/从站通信。借助变量表可实现快速"遥信"、"遥测"、"遥控"、"遥调"。支持使用"注入对象"的方式实现自由读写。
读命令
单点命令
双点命令
步调节命令
设点命令,归一化值
设点命令,标度化值
设点命令,浮点数值
设点命令,32位比特串
带CP56Time2a时标的 单点命令
带CP56Time2a时标的 双点命令
带CP56Time2a时标的 步调节命令
带CP56Time2a时标的 设点命令,归一化值
带CP56Time2a时标的 设点命令,标度化值
带CP56Time2a时标的 设点命令,浮点数值
带CP56Time2a时标的 设点命令,32比特串
总召唤
累计值召唤
时钟同步命令
测量值参数 归一化值
测量值参数 标度化值
测量值参数 短浮点数
准备工作
工程师已知晓目标 服务器/从机 IP、端口(默认2404)。
工程师已知晓要采集的点位信息。
将边缘网关接入到 服务器/从机 所在的局域网中。
配置网关
1.网关的网络配置请参考:《快速入门》https://iotrouter.yuque.com/org-wiki-iotrouter-rlzwv5/eg8000/ypspb089bww98dqi
2.进入"可视化编程"。
3.选择IEC104 Client节点,配置 IP、端口、连接参数及点位表
4.部署测试
5.遥控、遥调配置点位
6.外部注入测试
注入前,查看104服务端的变量值为False:
按照下图所示,发送遥控指令:
注入后,查看104服务端的变量值为True:
项目 | 说明 |
名称 | 节点在流程中显示的名称 |
服务端/从站 | 服务端(从站)IP地址端口 |
连接后立即执行总召唤 | 选中此项,当与服务端(从站)建立连接后立即进行一次总召唤 |
连接后立即执行计数量召唤 | 选中此项,当与服务端(从站)建立连接后立即进行一次计数量召唤 |
格式化浮点数 | 需要保留的小数位数 |
t0 | 连接建立的超时时间。单位:秒 |
t1 | 发送或测试APDU的超时。单位:秒 |
t2 | 无数据报文时确认的超时。单位:秒 t2 < t1 |
t3 | 空闲超时发送测试帧。单位:秒 t3 > t1 |
k | 发送方[I]帧 达到 k 个帧数未应答,断开连接 |
w | 接收方接收到 w 个报文后发送[S]帧 |
源发站地址 | 当前节点的地址 |
总召站地址 | 总召、累计量召唤 使用的站地址 |
重连时间(秒) | t0时间触发后,等待"重连时间"后再发起连接。 |
数据超时(秒) | 等待服务端(从站)返回数据的超时时间 |
时钟同步周期(秒) | 发送 时钟同步指令的间隔时间(连接成功后开始重置,连接断开后失效) |
总召唤周期(秒) | 发送 总召唤指令的间隔时间(连接成功后开始重置,连接断开后失效) |
召唤计数量周期(秒) | 发送 召唤计数量指令的间隔时间(连接成功后开始重置,连接断开后失效) |
有两种输入方式来控制IEC104 Client节点和服务端的通信:
方式1:以K-V键值对输入,其中Key为节点配置好的点位名称,Value为要写入的值(读取时Value无效)
方式2:以对象的形式输入固定格式报文从而实现固定的功能,类似于API。详细请参考功能自定义章节。
方式1要求在节点中已经配置好了相关点位,且只能执行点位读写操作,实现方便快速但是不够自由。方式2除了读写点位外,还可以控制各种104的通信流程,例如总召,时钟同步等等。
示例1:K-V格式读取遥信遥测
注入消息中携带遥信遥测点位信息,其中,数据点名称作为Key,Value填任意值,即可读取相应的数据点。
示例2:K-V格式遥控
注入消息中携带遥控点位信息,其中,数据点名称作为Key,Value为要写入值,即可实现遥控操作。
输出结果如下:
示例3:对象格式(功能自定义)读取/遥控
参考分割线下:功能自定义章节。
输出口1:符合点表的数据解析后从这里输出
输出口2:设定值命令类型的执行结果从这里输出
输出口3:调试出口
rspType字段 | 说明 |
connenctStatus | 连接状态 |
interrogationConnect | 连接后立即总召 |
counterInterrogationConnect | 连接后立即召唤计数量 |
intervalClockSync | 周期时钟同步 |
intervalIntegration | 周期总召 |
intervalCounterInterrogation | 周期召唤计数量 |
periodicReport | 周期上报 |
spontaneousReport | 突发上报 |
inputInterrogation | 外部触发 总召 |
inputCounterInterrogation | 外部触发 召唤计数量 |
inputRead | 外部触发 读单个 |
inputWriteClockSync | 外部触发 时钟同步 |
inputWriteSinglePoint | 外部触发 单点命令 |
inputWriteDoublePoint | 外部触发 双点命令 |
inputWriteStep | 外部触发 步调节命令 |
inputWriteNva | 外部触发 设定值命令 归一化值 |
inputWriteSva | 外部触发 设定值命令 标度化值 |
inputWriteFva | 外部触发 设定值命令 短浮点数 |
inputWriteBsi | 外部触发 设定值命令 32位比特串 |
inputWriteSinglePointTs | 外部触发 带时标CP56Time2a的 单点命令 |
inputWriteDoublePointTs | 外部触发 带时标CP56Time2a的 双点命令 |
inputWriteStepTs | 外部触发 带CP56Time2a 的 步调节命令 |
inputWriteNvaTs | 外部触发 带CP56Time2a 设定值命令 归一化值 |
inputWriteSvaTs | 外部触发 带CP56Time2a 设定值命令 标度化 |
inputWriteFvaTs | 外部触发 带CP56Time2a 设定值命令 浮点数 |
inputWriteBsiTs | 外部触发 带CP56Time2a 设定值命令 32位比特串 |
通过向IEC104 Client节点输入多格式数据,节点可动态适配不同场景的通信需求。在一些特殊场景下,当用户需要深度定制协议功能时,可参照以下标准化数据格式规范进行扩展开发:
1.读
字段 | 说明 |
type | 固定 102 |
param | 参数根节点 |
coa | 站地址 |
ioa | 元素地址 |
{ "type": 102, "param": { "coa": 1, "ioa": 1 } } |
2.单点命令
字段 | 说明 |
type | 固定 45 |
param | 参数根节点 |
coa | 站地址 |
ioa | 元素地址 |
scs | true / false |
se | 执行(false)/ 选择(true) |
qu | 0:无另外的定义1:短脉冲持续时间2:长脉冲持续时间3:持续输出 |
{ "type": 45, "param": { "coa": 1, "ioa": 322, "scs": true, "se": false, "qu": 1 } } |
3.双点命令
字段 | 说明 |
type | 固定 46 |
param | 参数根节点 |
coa | 站地址 |
ioa | 元素地址 |
dcs | 1:开 2:合 |
se | 执行(false)/ 选择(true) |
qu | 0:无另外的定义1:短脉冲持续时间2:长脉冲持续时间3:持续输出 |
{ "type": 46, "param": { "coa": 1, "ioa": 332, "dcs": 2, "se": false, "qu": 1 } } |
4,步调节命令
字段 | 说明 |
type | 固定 47 |
param | 参数根节点 |
coa | 站地址 |
ioa | 元素地址 |
rcs | 1:降一步 2:升一步 |
se | 执行(false)/ 选择(true) |
qu | 0:无另外的定义1:短脉冲持续时间2:长脉冲持续时间3:持续输出 |
{ "type": 47, "param": { "coa": 1, "ioa": 342, "rcs": 2, "se": false, "qu": 1 } } |
5.设点 归一化值
字段 | 说明 |
type | 固定 48 |
param | 参数根节点 |
coa | 站地址 |
ioa | 元素地址 |
nva | -1 ~ 1 |
se | 执行(false)/ 选择(true) |
ql | 0 |
{ "type": 48, "param": { "coa": 1, "ioa": 352, "nva": -0.2, "se": false, "ql": 0 } } |
6.设点 标度化值
字段 | 说明 |
type | 固定 49 |
param | 参数根节点 |
coa | 站地址 |
ioa | 元素地址 |
sva | -32768 ~ 32767 |
se | 执行(false)/ 选择(true) |
ql | 0 |
{ "type": 49, "param": { "coa": 1, "ioa": 362, "sva": 35, "se": false, "ql": 0 } } |
7.设点 浮点数值
字段 | 说明 |
type | 固定 50 |
param | 参数根节点 |
coa | 站地址 |
ioa | 元素地址 |
fva | 浮点数 |
se | 执行(false)/ 选择(true) |
ql | 0 |
{ "type": 50, "param": { "coa": 1, "ioa": 372, "fva": 35.888, "se": false, "ql": 0 } } |
8.设点 32位比特串
字段 | 说明 |
type | 固定 51 |
param | 参数根节点 |
coa | 站地址 |
ioa | 元素地址 |
bsi | 32位比特串 |
{ "type": 51, "param": { "coa": 1, "ioa": 385, "bsi": "00001111000011110000111100001111" } } |
9.单点命令 CP56Time2a
字段 | 说明 |
type | 固定 45 |
param | 参数根节点 |
coa | 站地址 |
ioa | 元素地址 |
scs | true / false |
se | 执行(false)/ 选择(true) |
qu | 0:无另外的定义1:短脉冲持续时间2:长脉冲持续时间3:持续输出 |
time | 时间字符串 |
{ "type": 58, "param": { "coa": 1, "ioa": 392, "scs": true, "se": false, "qu": 1, "time": "1534658027853" } } |
10.双点命令 CP56Time2a
字段 | 说明 |
type | 固定 59 |
param | 参数根节点 |
coa | 站地址 |
ioa | 元素地址 |
dcs | 1:开 2:合 |
se | 执行(false)/ 选择(true) |
qu | 0:无另外的定义1:短脉冲持续时间2:长脉冲持续时间3:持续输出 |
time | 时间字符串 |
{ "type": 59, "param": { "coa": 1, "ioa": 403, "dcs": 2, "se": false, "qu": 1, "time": "1534658027853" } } |
11.步调节命令 CP56Time2a
字段 | 说明 |
type | 固定 60 |
param | 参数根节点 |
coa | 站地址 |
ioa | 元素地址 |
rcs | 1:降一步 2:升一步 |
se | 执行(false)/ 选择(true) |
qu | 0:无另外的定义1:短脉冲持续时间2:长脉冲持续时间3:持续输出 |
time | 时间字符串 |
{ "type": 60, "param": { "coa": 1, "ioa": 413, "rcs": 2, "se": false, "qu": 1, "time": "1534658027853" } } |
12.设点 归一化值 CP56Time2a
字段 | 说明 |
type | 固定 61 |
param | 参数根节点 |
coa | 站地址 |
ioa | 元素地址 |
nva | -1 ~ 1 |
se | 执行(false)/ 选择(true) |
ql | 0 |
time | 时间字符串 |
{ "type": 61, "param": { "coa": 1, "ioa": 423, "nva": 0.6, "se": false, "ql": 0, "time": "1234658027853" } } |
13.设点 标度化值 CP56Time2a
字段 | 说明 |
type | 固定 62 |
param | 参数根节点 |
coa | 站地址 |
ioa | 元素地址 |
sva | -32768 ~ 32767 |
se | 执行(false)/ 选择(true) |
ql | 0 |
time | 时间字符串 |
{ "type": 62, "param": { "coa": 1, "ioa": 433, "sva": 2134, "se": false, "ql": 0, "time": "1234658027853" } } |
14.设点 浮点数值 CP56Time2a
字段 | 说明 |
type | 固定 63 |
param | 参数根节点 |
coa | 站地址 |
ioa | 元素地址 |
fva | 浮点数 |
se | 执行(false)/ 选择(true) |
ql | 0 |
time | 时间字符串 |
{ "type": 63, "param": { "coa": 1, "ioa": 443, "fva": 2134.1234, "se": false, "ql": 0, "time": "1234658027853" } } |
15.设点 32位比特串 CP56Time2a
字段 | 说明 |
type | 固定 64 |
param | 参数根节点 |
coa | 站地址 |
ioa | 元素地址 |
bsi | 32位比特串 |
time | 时间字符串 |
{ "type": 64, "param": { "coa": 1, "ioa": 453, "bsi": "00001111000011110000111100001111", "time": "1234658027853" } } |
16.总召唤
字段 | 说明 |
type | 固定 100 |
param | 参数根节点 |
coa | 站地址 |
qoi | 召唤限定词:20(全局召唤)~36(第16组召唤) 取整数 |
{ "type": 100, "param": { "coa": 65535, "qoi": 20 } } |
17.计数量召唤
字段 | 说明 |
type | 固定 101 |
param | 参数根节点 |
coa | 站地址 |
rqt | 1~4:召唤第n组 5:全部 |
frz | 0:读(无冻结或复位)1:计数量冻结不带复位(被冻结的值为累加值)2:计数量冻结带复位(被冻结的值为增量信息)3:计数量复位 |
{ "type": 101, "param": { "coa": 1, "rqt": 5, "frz": 0 } } |
18.时钟同步命令
字段 | 说明 |
type | 固定 103 |
param | 参数根节点 |
coa | 站地址 |
time | 时间字符串 |
{ "type": 103, "param": { "coa": 1, "time": "1234513490435" } } |
原文:https://iotrouter.yuque.com/zn3vdn/eg8000/os3dnhvi2ou6acgw#Az8bZ