当前位置:   article > 正文

openplc Linux 使用modbus RTU 从机通讯

openplc Linux 使用modbus RTU 从机通讯

1.Linux 环境下,openplc 默认使用的是modbus tcp协议通信。

        想要使用串口 modbus rtu 通讯可以通过在runtime中添加SlaveDevices从机设备

 2.添加设备,分配地址。

        左边添加串口配置,右边是需要通讯的地址,从机地址都是从100开始,100以内是主机使用。地址最好连续分配使用。

         Discrete Inputs (%IX100.0):bit操作,离线输入,主机读从机。

        Coils (%QX100.0):bit操作,线圈状态,主机写从机。

        Input Registers (%IW100):16位数据,输入寄存器,主机只读从机。

        Holding Registers - Read (%IW100):16位数据,保持寄存器,主机读从机。

        Holding Registers - Write (%QW100):16位数据,保持寄存器,主机写从机。

3.COM port串口扫描不出来问题。

        串口比如 /dev/ttySTM2 有驱动但是在添加设备时扫描不出来。可以修改网页代码手动添加设备名就行了。 

        网页html源码在webserver.py中,

        3.1 先修改add-modbus-device 页面, 1133行,把 设备扫描屏蔽,手动添加串口名。

         3.2 修改modbus-edit-device编辑页面,1271行,也是一样,直接屏蔽,手动添加。

4. 添加地址。 

        如下:添加 QX100.0 主机bit写从机,IX100.0 主机bit读从机。

        IW100 主机16bit只读从机,QW100 主机16bit写从机,QW101主机16bit写从机。

 5. 添加代码测试程序。

  1. if tcpGet = 1 then
  2. tcpGet := 0;
  3. ledSet := 1;
  4. gpioSet :=1;
  5. dacSet := 1024;
  6. qx100 := 1;
  7. qx100_1 := 1;
  8. qw100 := 45;
  9. qw101 := 45;
  10. gpioRead0 := gpioRead;
  11. adcRead0 := adcRead;
  12. ix100st := ix100;
  13. iw100st := iw100;
  14. {
  15. printf("/***/\n");
  16. printf("/**/\n");
  17. printf("/*/\n");
  18. printf("/*********gpio10=%d, adc=%f, ix100.0=%d*******/\n",GetFbVar(GPIOREAD0),GetFbVar(ADCREAD0)/100.0,GetFbVar(IX100ST));
  19. printf("/*********iw100=%d*******/\n",GetFbVar(IW100ST));
  20. printf("/*/\n");
  21. printf("/**/\n");
  22. printf("/***/\n");
  23. }
  24. elsif tcpGet = 2 then
  25. tcpGet := 0;
  26. ledSet := 0;
  27. gpioSet :=0;
  28. dacSet := 3072;
  29. qx100 := 0;
  30. qx100_1 := 0;
  31. qw100 := 78;
  32. qw101 := 78;
  33. gpioRead0 := gpioRead;
  34. adcRead0 := adcRead;
  35. ix100st := ix100;
  36. iw100st := iw100;
  37. {
  38. printf("/***/\n");
  39. printf("/**/\n");
  40. printf("/*/\n");
  41. printf("/*********gpio10=%d, adc=%f, ix100.0=%d*******/\n",GetFbVar(GPIOREAD0),GetFbVar(ADCREAD0)/100.0,GetFbVar(IX100ST));
  42. printf("/*********iw100=%d*******/\n",GetFbVar(IW100ST));
  43. printf("/*/\n");
  44. printf("/**/\n");
  45. printf("/***/\n");
  46. }
  47. end_if;

6. modbus rtu从机设备测试。

        下载 MThings-下载 

配置串口信息

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/471718
推荐阅读
相关标签
  

闽ICP备14008679号