Skip to content

UDP 通信例程 2:周期广播状态(JSON) ​

这一页只讲这一个例程。同组其余例程、以及这个库的函数说明都在 05-06-udp。

适用:同上 | 依赖模块:udp timer json plc | 难度:★☆☆

场景:设备每 5 秒把名称、温度打包成 JSON,广播到局域网,采集端监听即可。

完整代码(可直接下载运行):

lua
udps = udp.creat(6000, "0.0.0.0")
udps:start()

timer.start(5000, function()
    udps:send("192.168.1.255", 6000,
        json.encode({ name = plc.plc_name(), temp = plc.df(100) }))
end)

要点:

  • 广播地址如 192.168.1.255;周期上报用 timer.start,不在主线程阻塞。
  • 局域网单包建议 ≤1400 字节,避免 IP 分片。

验证方法:

  1. PC 上监听 UDP 6000,应每 5 秒收到一条 JSON。
  2. 改 D100 温度,下一条广播里的 temp 同步变化。

注意事项:

  • UDP 不保证送达、不保证顺序、不去重;要可靠传输换 TCP。
  • udp 无 is_linked,对端在不在只能"发查询 + 自己计时等回包"判断(见例程 3)。

LPPLC 工业物联网云平台 · 软硬件与云平台全栈自研