主题
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 分片。
验证方法:
- PC 上监听 UDP 6000,应每 5 秒收到一条 JSON。
- 改 D100 温度,下一条广播里的
temp同步变化。
注意事项:
- UDP 不保证送达、不保证顺序、不去重;要可靠传输换 TCP。
udp无is_linked,对端在不在只能"发查询 + 自己计时等回包"判断(见例程 3)。