新闻中心
PRESS CENTER
EP系列多协议可编程DTU/RTU,有两个产品形态:一个是“多协议”,一个是“可编程”。
多协议标准版内置
Modbus RTU/TCP、DLT645-2007等协议,支持协议本地解析后Json打包上传支持
主流物联网平台对接,开箱即用
支持数据本地预处理,降低云端负载,支持透传功能
工业级设计,-40℃~85℃工作范围,满足严苛环境需求
可编程开发板
基于移远提供的SDK开发套件,使用Python语言二次开发,支持自定义协议解析
多版本、多接口、多种资源可选
提供完善的API文档
工业级设计,-40℃~85℃工作范围,满足严苛环境需求
EP100系列两种形态均采用相同的硬件平台,用户可根据项目需求灵活选择标准产品快速部署或自主开发实现特殊功能需求。需要提醒的是,选择可编程开发板,需要您有较强的编程基础,基于移远SDK开发,我司不提供技术支持。
接线:使用USB转485工具连接EP1XX和电脑
插卡:EP1XX内置SIM卡,无需插卡(如果用户需要使用外置卡,请使用EP1XX上位机启用外置卡功能)
供电:EP1XX支持USB-TypeC供电和外部直流电源供电,电压范围为DC9~36V
配置:运行EP1XX上位机->选择端口号(默认参数:115200/1/8/无)->打开串口->点击搜索->开始配置


设备管理器可以查看USB转485端口号
修改配置前请务必先读取配置
参数 | 含义 |
POW | 上电后常亮 |
NET | 网络状态指示。 1.常亮:等待网络协议栈启动 2.1400ms灭 200ms亮 200ms灭 200ms亮(双闪):未检测到SIM卡 3.2000ms灭 2000ms亮(慢闪):等待网络激活中 3.1900ms灭 100ms亮(频闪):网络已就绪 |
LINK | 显示第N路连接状态。 1.常灭:未连接 2.常亮:已连接 |

参数 | 含义 |
SN | 设备唯一标识 |
软件名称 | 当前设备软件名称 |
软件版本 | 软件版本号 |
固件名称 | 当前固件名称 |
固件版本 | 当前固件版本 |
组网密码 | 纵横云组网密码 |
连接灯 | 指示某一路是否建立连接。 连接建立后常亮 |
重启策略 | 定时重启设备。 以逗号分隔,字段1为持续运行时间,字段2为指定的时间点 例:86400,14:53:05,含义为-->a:持续工作24h(86400s)后重启(最小值60);b:每天的14:53:05重启 |
OTA策略 | 定时获取OTA信息 |
日志使能 | 指定输出日志类型。 注意,日志输出会降低设备性能 |
重启 | 点击后设备会立即重启 |
恢复出厂 | 点击后设备清除所有配置 |

参数 | 含义 |
卡状态 | 当前选择的SIM卡状态。 参考 附录A |
卡号 | SIM卡号 |
简略信号 | 信号强度。0~31,值越大信号越好。99:未知 |
详细信号 | 信号强度。 参考 附录B |
注册信息 | SIM卡 注册网络信息 |
IP | 当前获取到的IP |
SIM卡选择 | 切换内、外置卡。 注意:切换后需要重启设备 |
无网络重置时间 | 无法获取IP时,重置网络。 最小值 60秒 |
APN接入点名称 | 名称 |
用户名 | 用户名 |
密码 | 密码 |
鉴权方式 | 鉴权方式 |

参数 | 含义 |
日期 | 当前日期 |
时间 | 当前时刻 |
NTP授时服务器 | 授时服务器 |
校时策略 | 定时校对时间,单位:分钟。 建议最小间隙一天一次,校时期间暂停设备运行 |

EP系列终端内部分为多个模块(串口、TCP、MQTT、Modbus主机、DLT645主机、DO、DI、AI、AO),每个模块都有一个输入接口,多个输出接口。用户可通过配置这些输入输出实现各模块之间的数据流向。
注意:符合EP系列定义的数据(读写系统配置,通过JSON操作Modbus/DLT645)会被拦截解析,不会继续流向指定的模块
对于 远程连接(MQTT) 需要指定 数据流向 和 发布参数(topic,qos,retain)。对于 串口、Modbus主机、DO组网逻辑、DLT645主机、远程连接(TCP),仅需要指定数据流向即可。
配置数据流向后请检查流向逻辑,避免出现数据回环。
参数 | 含义 |
使能 | 是否启用当前连接 |
模式 | 工作模式 |
重连时间 | 重新连接的等待时间。 0:默认规则,从3开始递增到60,步长为3,到60后重置;>3:固定等待时长。单位秒 |
数据流向 | 网络数据流向 |
TCP参数:

参数 | 含义 |
地址 | TCP服务器地址。 |
端口 | TCP服务器端口 |
数据流向 | TCP接收到的数据向指定的模块(串口、Modbus主机...)流动 |
注册包模式 | 发送注册包的时机。 注册包主要用于身份识别 |
注册包内容 | 注册包数据内容 |
心跳包周期 | 心跳包发送循环周期。 0:关闭心跳包 |
MQTT参数:
上位机提供 纵横云、组网默认配置(组网配置连接 bridge.iotrouter.com,搭配 MQTT虚拟串口软件 可实现远程配置设备、监控设备)。

参数 | 含义 |
地址 | MQTT Broker 地址。 支持域名/IP |
端口 | MQTT Broke 端口 |
客户端ID | 客户端ID |
用户名 | 用户名 |
密码 | 密码 |
心跳时间 | keepAlive时间 |
清除会话 | 清除会话 |
消息主题 | 订阅主题:接收数据的消息主题 发布主题:用于返回数据(例如获取系统配置)的消息主题,支持+通配符,参考 附录D 数据流向:此topic接收到的数据向指定的模块发送 |
遗嘱 | 遗嘱消息。 |

参数 | 描述 |
波特率 | 范围:参考上位机中该项的枚举类型 |
数据位 | 范围:参考上位机中该项的枚举类型 |
校验位 | 范围:参考上位机中该项的枚举类型 |
停止位 | 范围:参考上位机中该项的枚举类型 |
接收分帧 | 范围:>=20。以此时间分割数据 |
发送分帧 | 范围:>=20。发送等待时间 |
数据流向 | 串口接收到的数据流向指定的模块 |

主要配置说明:
参数 | 含义 |
协议类型 | 读写modbus从机使用的协议 |
JSON周期上传接口 | 向指定的连接推送转换后的JSON数据 |
Modbus数据流向 | 向指定的模块发送Modbus指令。注意,接收Modbus指令的模块也应当有一个数据流向 Modbus主机,例如:
则串口处应配置:
|
超时时间 | 等待Modbus数据响应的时间 |
重试次数 | Modbus数据无响应后的重试次数 |
指令间隔 | 两条指令之间的间隔 |
时间戳 | 是否携带Unix时间戳 |
单独报 | 选中此项,一条指令解析完毕后,上报该指令的映射点位; 否则一条指令解析完毕后,上报所有点位 |
JSON格式 | JSON数据结构 扁平: { "1号车间温度":27.3, "1号车间湿度":43, "2号车间温度度":26.5, "2号车间湿度":51, "ts":1757412948 } 分组: { "1号车间温度监测": [ { "温度": 27.3 }, { "湿度": 43 } ], "2号车间温度监测": [ { "温度": 28.1 }, { "湿度": 50 } ], "ts": 1757412948 } 纵横云: { "sn": "0866558079547410", "sensorDatas": [ { "switcher": 1, "flag": "do_1" }, { "value": 4000, "flag": "ao_1" } ] } |
写完即读 | 下发写点位后是否立即读取上报 |
指令说明:

参数 | 含义 |
备注 | 指令备注。当JSON格式为"分组"时,以此作为数组的键。 |
周期 | 该命令采集间隔 |
地址 | Modbus站号/地址码。十进制 |
类型 | 寄存器类型 |
变化传 | 该指令下的任一点位发生变化才上传 |
变化范围 | 点位数据变化范围,勾选"变化报"有效。 布尔型和字符型数据仅判断是否变化。 数值型判断差值。 |
只写 | 该指令下的点位只写,会相应下发的写命令,不会周期读取 |
点位映射说明:

参数 | 含义 |
键值 | 点位在JSON中的key |
地址 | 点位实际地址码(十进制,0地址为首地址) |
数据类型 | 将modbus采集到值转为对应的数据类型 |
字节序 | 按该字节序重新排列数据,主要用于大小端转换 |
缩放k | 线性计算参数 y=kx+b |
缩放b | 线性计算参数 y=kx+b |
远程读写说明
通过发送与设备上报相同格式的JSON报文即可完成读写。
写操作时携带值,读操作时值为NULL。
例:{"a1":[{"a":123},{"b":null}]}
则向a点位写入123,同时读取b点位

主要配置说明:
参数 | 含义 |
JSON周期上传接口 | 向指定的连接推送转换后的JSON数据 |
DLT645数据流向 | 参考 Modbus数据流向 说明 |
超时时间 | 等待Modbus数据响应的时间 |
广播时间 | 周期发送广播校时帧(使用设备时间)。 通过远程下发JSON报文也可指定时间。 在JSON报文中携带字段Synctime字段,格式为ssmmhhDDMMYY。 例如:{"Synctime":"035315010923"},表示 23年9月1号15点53分3秒。 注意,JSON格式为分组模式时,Synctime要下放到某一设备分组中,例如: {"a1":[{"b":null},{"Synctime":"035315010923"}],"a2":[{"d":null}]} |
重试次数 | Modbus数据无响应后的重试次数 |
指令间隔 | 两条指令之间的间隔 |
时间戳 | 是否携带Unix时间戳 |
单独报 | 选中此项,一个分组的点位解析完毕后,上报该分组的点位; 否则一个分组解析完毕后,上报所有点位 |
JSON格式 | 参考Modbus主机JSON格式 |
分组说明

参数 | 含义 |
备注 | 指令备注。当JSON格式为"分组"时,以此作为数组的键。 |
周期 | 该分组采集间隔 |
地址 | 12位表号,不足12位末尾请手动补0 |
变化传 | 该指令下的任一点位发生变化才上传 |
点位说明

所有点位按照DLT645-07规定的合适进行BCD编码。
当JSON格式不为纵横云模式时,对于有两个参数的点位(例如: XX.XXXX YYMMDDhhmm 正向有功总最大需量及发生时间 ),会自动增加一个key,格式为key_ts(例如:正向有功总最大需量及发生时间_ts);当JSON格式为纵横云模式时,点位值为XX.XXXX,YYMMDDhhmm
拉合闸状态:1闭合,0断开。
远程读写说明
通过发送与设备上报相同格式的JSON报文即可完成读写。
写操作时携带值,读操作时值为NULL。注意,写操作仅对"拉合闸"与"广播校时"有效,其它类型点位均只读,下发写操作命令会在当前分组点位读取结束后执行
例:{"a1":[{"拉合闸":"02563412015634121C00035315010923"},{"(当前)组合有功总电能":null}]}
拉合闸参数含义如下:
PA P0 P1 P2 C0 C1 C2 C3 N1 N2 N3~N8
PA P0 P1 P2:密码
C0 C1 C2 C3:操作代码
N1为拉合闸状态:1A跳闸 1B/1C合闸
N2为报警相关
N3~N8为命令有效截止时间
DO

DO配置:
参数 | 含义 |
主动上报 | DO状态上报(1.状态改变上报 2.周期性上报) |
上报周期 | 定时上报周期。状态改变上报会重置定时上报计数器 |
重启状态 | 重启后是否保持上一次记录的状态 |
JSON格式 | JSON上报格式 扁平: { "sn": "0866558079547410", "do_1": 0, "do_2": 1, "do_3": 1, "do_4": 1 } 纵横云模式: { "sn": "0866558079547410", "sensorDatas": [ { "switcher": 1, "flag": "do_1" }, { "switcher": 1, "flag": "do_2" }, { "switcher": 1, "flag": "do_3" }, { "switcher": 1, "flag": "do_4" } ] } |
数据流向 | 上报数据方向 |
输出保持时间 | 设置新的状态后,维持指定时间后翻转 |
定时翻转时间 | 周期性翻转 |
组网逻辑 | 多个EP101通过MQTT组网时,可配置 DO逻辑。 当设备接收到DI的JSON报文时,会根据 "模式" "DI通道" "SN"来执行DO操作。 例:
在上图配置下,设备需要接收到DI JSON报文 应为:
扁平模式: { "sn": "0866558079547410", "di_1": 0, "di_2": 1, "di_3": 1, "di_4": 1 } 或: 纵横云模式 { "sn": "0866558079547410", "sensorDatas": [ { "switcher": 1, "flag": "di_1" }, { "switcher": 1, "flag": "di_2" }, { "switcher": 1, "flag": "di_3" }, { "switcher": 1, "flag": "di_4" } ] } |
DI

DI配置说明:
参数 | 含义 |
主动上报 | DI状态上报(1.状态改变上报 2.周期性上报) |
上报周期 | 定时上报周期。状态改变上报会重置定时上报计数器 |
JSON格式 | JSON上报格式 扁平: { "sn": "0866558079547410", "di_1": 0, "di_2": 1, "di_3": 1, "di_4": 1 } 纵横云模式: { "sn": "0866558079547410", "sensorDatas": [ { "switcher": 1, "flag": "di_1" }, { "switcher": 1, "flag": "di_2" }, { "switcher": 1, "flag": "di_3" }, { "switcher": 1, "flag": "di_4" } ] } |
数据流向 | 上报状态数据方向 |
AO

AO配置:
参数 | 含义 |
主动上报 | AO输出值上报(1.状态改变上报 2.周期性上报) |
上报周期 | 定时上报周期。状态改变上报会重置定时上报计数器 |
重启状态 | 重启后是否保持上一次记录的状态 |
JSON格式 | JSON上报格式 扁平: { "sn": "0866558079547410", "ao_1": 4000, "ao_2": 4000, "ao_3": 4000, "ao_4": 4000 } 纵横云模式: { "sn": "0866558079547410", "sensorDatas": [ { "value": 4000, "flag": "ao_1" }, { "value": 4000, "flag": "ao_2" }, { "value": 4000, "flag": "ao_3" }, { "value": 4000, "flag": "ao_4" } ] } |
数据流向 | 上报数据方向 |
输出保持时间 | 设置新的状态后,维持指定时间后翻转 |
默认输出 | 默认输出值 |
组网逻辑 | 多个EP102通过MQTT组网时,可配置 AO逻辑。 当设备接收到AI的JSON报文时,会根据 "模式" "AI通道" "SN"来执行DO操作。 例:
在上图配置下,设备需要接收到DI JSON报文 应为:
扁平模式: { "sn": "0866558079547410", "ai_1": 10000, "di_2": 11000, "di_3": 12000, "di_4": 13000 } 或: 纵横云模式 { "sn": "0866558079547410", "sensorDatas": [ { "value": 10000, "flag": "ai_1" }, { "value": 11000, "flag": "ai_2" }, { "value": 12000, "flag": "ai_3" }, { "value": 13000, "flag": "ai_4" } ] } |
AI

DI配置说明:
参数 | 含义 |
主动上报 | AI状态上报 |
上报周期 | 定时上报周期 |
JSON格式 | JSON上报格式 扁平: { "sn": "0866558079547410", "ai_1": 4000, "ai_2": 4000, "ai_3": 4000, "ai_4": 4000 } 纵横云模式: { "sn": "0866558079547410", "sensorDatas": [ { "value": 4000, "flag": "ai_1" }, { "value": 4000, "flag": "ai_2" }, { "value": 4000, "flag": "ai_3" }, { "value": 4000, "flag": "ai_4" } ] } |
数据流向 | 上报状态数据方向 |

SIM卡状态值说明
值 | 描述 |
-1 | API执行异常 |
0 | SIM卡不存在/被移除 |
1 | SIM已经准备好 |
2 | SIM卡已锁定,等待CHV1密码 |
3 | SIM卡已被阻拦,需要CHV1密码解锁密码 |
4 | 由于SIM/USIM个性化检查失败,SIM卡被锁定 |
5 | 由于PCK错误导致SIM卡被阻拦,需要MEP密码解除阻拦 |
6 | 需要隐藏电话簿条目的密钥 |
7 | 需要解锁隐藏密钥的编码 |
8 | SIM卡已锁定,等待CHV2密码 |
9 | SIM卡被阻拦,需要CHV2解锁密码 |
10 | 由于网络个性化检查失败,SIM卡被锁定 |
11 | 由于NCK不正确,SIM卡被阻拦,需要MEP解锁密码 |
12 | 由于子网络锁个性化检查失败,SIM卡被锁定 |
13 | 由于错误的NSCK,SIM卡被阻拦,需要MEP解锁密码 |
14 | 由于服务提供商个性化检查失败,SIM卡被锁定 |
15 | 由于SPCK错误,SIM卡被阻拦,需要MEP解锁密码 |
16 | 由于企业个性化检查失败,SIM卡被锁定 |
17 | 由于CCK不正确,SIM卡被阻止,需要MEP解锁密码 |
18 | SIM正在初始化,等待完成 |
19 | 有以下六种情况会导致此错误返回码。 1、由于CHV1、CHV2、通用的PIN的使用被阻拦,此三种情况。 2、由于使用代码解锁CHV1、CHV2、通用的PIN被阻拦,此三种情况。 |
20 | SIM卡无效 |
21 | 未知状态 |
详细信号强度格式和说明如下:
([rssi, bitErrorRate, rscp, ecno], [rssi, rsrp, rsrq, cqi, sinr])[rssi, bitErrorRate, rscp, ecno] 为 GSM/WCDMA 返回值
参数 | 含义 |
rssi | GSM和WCDMA网络下,该值表示接收电平,描述接收到信号强度,99表示未知或者无法检测到,该值的计算方式如下 rssi = RXLEV - 111,单位dBm,RXLEV 的范围是 0 ~ 63 |
bitErrorRate | 误码率,范围 0 ~ 7,99表示未知或者无法检测到 |
rscp | 接收信号码功率,范围 -121 ~ -25 dBm,255表示未知或者无法检测到 |
ecno | 导频信道,范围 -24 ~ 0,255表示未知或者无法检测到 |
[rssi, rsrp, rsrq, cqi, sinr]为LTE 返回值
参数 | 含义 |
rssi | 接收的信号强度,范围 -140 ~ -44 dBm,99表示未知或者无法检测到 |
rsrp | 下行参考信号的接收功率,范围 -140 ~ -44 dBm,99表示未知或者无法检测到 |
rsrq | 下行特定小区参考信号的接收质量,范围 -20 ~ -3 dB,值越大越好 ,255表示未知或者无法检测到 |
cqi | 信道质量,255表示未知或者无法检测到 |
sinr | 干扰信噪比,范围 -10 ~ 40 dB,255表示未知或者无法检测到 |
注册信息枚举值见下表:
参数 | 含义 |
0 | 没有注册,MT也没有再搜索 |
1 | 注册完成,本地网络 |
2 | 没有注册,但是MT在尝试搜索 |
3 | 拒绝注册 |
4 | 未知状态 |
5 | 注册完成, 漫游网络 |
6 | 注册为“仅限短信”,本地网络 (不适用) |
7 | 注册为“仅限短信”,漫游网络(不适用) |
8 | 紧急attach仅限紧急承载服务 |
9 | 注册为“CSFB不优先”,本地网络 (不适用) |
10 | 注册为“CSFB不优先”,漫游网络(不适用) |
11 | 仅限紧急承载服务 |
MQTT 通配符解析说明:

上图中设备订阅主题:v1/devices/me/rpc/request/+ ,表示该topic为动态字符串,设备会接收到以下消息主题的数据:
v1/devices/me/rpc/request/1
v1/devices/me/rpc/request/2
v1/devices/me/rpc/request/3
设备接收到这些topic的消息后,会截取+字符所在层级的字符串,装入v1/devices/me/rpc/response/$request_id 所在的位置,如下:
v1/devices/me/rpc/response/1
v1/devices/me/rpc/response/2
v1/devices/me/rpc/response/3
在这种情况下,如果是读写系统配置等命令,会直接使用当前最新的通配符返回:v1/devices/me/rpc/response/3
如果其它模块(串口)配置了数据流向如下图:

那么串口的接收到的数据会使用当前最新的通配符发送:v1/devices/me/rpc/response/3默认使用 v1/devices/me/rpc/response/1