Skip to content

SL651 驱动

dc3-driver-sl651 把 SL651-2014 水文遥测站接入 IoT DC3——它监听一个 TCP 端口,被动接收远端测站主动上报的遥测报文,按配置把报文体里指定位置的要素值转成位号值。

SL651-2014 是水利行业的《水文监测数据通信规约》。和 Modbus 那种"主站主动去读从站"的现场协议不同,SL651 是服务端协议:分散在各处的遥测站(如雨量站、水位站)按自己的时段,把采集到的遥测数据主动推送给一个中心服务器。本驱动就是那个中心服务器——它启动一个 SL651 TCP 服务监听端口,等测站连上来上报,解析报文体里的遥测要素,用测站地址匹配到对应设备,再把指定要素转成位号值

因为数据是测站异步、主动送上来的,这是一个监听型驱动,而不是轮询型:SDK 的 read/write 不参与采集(按设计 read 返回空、write 返回 false),定时读取被关闭(schedule.read.enable: false),只保留设备健康检查。

  • 驱动名 / codeSL651 Hydrological Telemetry Driver / Sl651Driver
  • 类型DRIVER_CLIENT

名词先解释

  • 测站地址(station address):SL651 报文头里标识上报方的地址,本驱动取其十六进制串,用来和设备的 deviceCodedeviceName 做匹配(不区分大小写)。
  • 遥测要素(element):一份上报报文体里按顺序排列的一组测量值(如水位、雨量、电压……),位号靠下标 index 取其中一个。

驱动配置(设备级 driver-attribute

接入一台 SL651 测站时,在设备上填这些属性

属性code类型默认值说明
Listen PortportINT5001SL651 服务监听的 TCP 端口
Auth PasswordpwdSTRING0000远端测站鉴权密码

端口是驱动级的,被同进程内所有测站共用

port 决定整个驱动进程监听哪个 TCP 端口,所有上报到这个端口的测站共用同一个服务。不同测站靠测站地址(即设备的 deviceCode/deviceName)区分,不是靠端口。改 port 会触发服务重启。

位号配置(point-attribute

每个采集位号上只需填一个属性——它在报文体要素列表里的下标:

属性code类型默认值说明
Element IndexindexINT0报文体要素列表的下标(从 0 开始)

驱动收到某测站的上报后,会把报文体里所有要素按顺序汇成一个列表;位号的 index 就是从这个列表里取第几个值(index=0 取第一个)。下标越界的位号本轮跳过。

采集与健康

  • 采集方式:被动监听,没有主动读取周期(schedule.read.enable: false)。驱动另有一个内部自定义调度 cron 0/5 * * * * ?,但采集本身由测站上报触发,不受该周期约束。
  • 健康/在线:设备健康检查默认 cron 0/15 * * * * ?,租约超时 45 秒——测站在超时内有上报即视为在线,机制见设备

最小接入示例

把一个测站地址为 12345678、上报到本机 5001 端口的水位站接进来:

  1. SL651 Hydrological Telemetry Driver 创建设备设备编码 deviceCode12345678(要和测站上报的地址一致),driver 属性填 port=5001pwd=0000
  2. 给设备绑定的物模型加一个水位位号(按上报要素的实际类型设 pointTypeFlagREAD_ONLY),point 属性填 index=0(取报文体第一个要素)。
  3. 启动驱动,让测站把数据推上来;测站一上报,匹配上的位号就会出现在位号值里。

易错点

设备编码必须等于测站地址,否则数据被丢弃

驱动用上报报文头里的**测站地址(十六进制串)**去匹配设备的 deviceCodedeviceName(不区分大小写)。两者对不上,这份上报就被静默丢弃——你会看到驱动在收报文,却没有任何位号值。接入前先确认测站实际上报的地址,并照抄到 deviceCode

index 是报文体要素的"第几个",不是寄存器地址

index 是驱动解析出的要素列表下标,从 0 开始,和测站报文里要素的排列顺序一一对应。它不是 SL651 的标识符编码,也不是任何寄存器地址。要素顺序由测站配置决定,接入前需对照测站的上报内容确认每个 index 对应哪个量。

这是只读监听驱动,不要配写命令

SL651 在本驱动里只接收上报、不下发——write 按设计返回 false,因此没有 command-attribute,给位号配写命令不会生效。需要远程控制测站请走测站自身的下行通道,不在本驱动职责内。

延伸阅读

Released under the AGPL-3.0 License · 基于 AGPL-3.0 协议发布