main.lua 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. PROJECT = "modbus_rtu"
  2. VERSION = "1.0.0"
  3. sys = require("sys")
  4. local uartid = 1 -- 根据实际设备选取不同的uartid
  5. --初始化
  6. local result = uart.setup(
  7. uartid,--串口id
  8. 9600,--波特率
  9. 8,--数据位
  10. 1,--停止位
  11. uart.None
  12. )
  13. sys.taskInit(function()
  14. uart.on(1, "recv", function(id, len)
  15. local data = uart.read(1, len)
  16. local _,addr,Instructions,reg,value,crc = pack.unpack(data,"<bbbHH")
  17. log.info("温度:", value.."℃" )
  18. end)
  19. local function modbus_send(uart_id,slaveaddr,Instructions,reg,value)
  20. local data = (string.format("%02x",slaveaddr)..string.format("%02x",Instructions)..string.format("%04x",reg)..string.format("%04x",value)):fromHex()
  21. local modbus_crc_data= pack.pack('<h', crypto.crc16("MODBUS",data))
  22. local data_tx = data..modbus_crc_data
  23. uart.write(uart_id,data_tx)
  24. end
  25. while 1 do
  26. modbus_send(1,0x01,0x03,0x01,0x01)
  27. sys.wait(2000)
  28. end
  29. end)
  30. -- 用户代码已结束---------------------------------------------
  31. -- 结尾总是这一句
  32. sys.run()
  33. -- sys.run()之后后面不要加任何语句!!!!!