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行,也是一样,直接屏蔽,手动添加。

  1. 添加地址。

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

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

  1. 添加代码测试程序。
bash 复制代码
if tcpGet = 1 then
  tcpGet := 0;
  
  ledSet := 1;
  gpioSet :=1;
  
  dacSet := 1024;
  
  qx100 := 1;
  qx100_1 := 1;
  qw100 := 45;
  qw101 := 45;
  
  gpioRead0 := gpioRead;
  adcRead0 := adcRead;
  ix100st := ix100;
  iw100st := iw100;
  {
    printf("/***/\n");
    printf("/**/\n");
    printf("/*/\n");
    printf("/*********gpio10=%d, adc=%f, ix100.0=%d*******/\n",GetFbVar(GPIOREAD0),GetFbVar(ADCREAD0)/100.0,GetFbVar(IX100ST));
    printf("/*********iw100=%d*******/\n",GetFbVar(IW100ST));
    printf("/*/\n");
    printf("/**/\n");
    printf("/***/\n");
  }
elsif tcpGet = 2 then
  tcpGet := 0;
  
  ledSet := 0;
  gpioSet :=0;
  
  dacSet := 3072;
  
  qx100 := 0;
  qx100_1 := 0;
  qw100 := 78;
  qw101 := 78;
  
  gpioRead0 := gpioRead;
  adcRead0 := adcRead;
  ix100st := ix100;
  iw100st := iw100;
  {
    printf("/***/\n");
    printf("/**/\n");
    printf("/*/\n");
    printf("/*********gpio10=%d, adc=%f, ix100.0=%d*******/\n",GetFbVar(GPIOREAD0),GetFbVar(ADCREAD0)/100.0,GetFbVar(IX100ST));
    printf("/*********iw100=%d*******/\n",GetFbVar(IW100ST));
    printf("/*/\n");
    printf("/**/\n");
    printf("/***/\n");
  }
end_if;
  1. modbus rtu从机设备测试。

下载 MThings-下载

配置串口信息

相关推荐
瑞克-桑切斯几秒前
13、DNS、DHCP 与 FTP 协议详解
linux·运维·云计算
程序员-Benothing4 分钟前
Linux性能分析方法论:USE、RED、火焰图与perf实战
linux·运维·服务器
云中双月16 分钟前
瑞芯微rv1106进入Loader模式转储emmc数据
linux·嵌入式·uboot·u-boot·emmc·rockchip·烧录·rv1106·瑞芯微
yunwei3716 分钟前
eBPF 入门实践教程:BPF Token,安全的委托式权限与程序加载
linux·后端·性能优化
不知语冰19 分钟前
达妙 Orin NX V2:JetPack 安装中文拼音输入法
linux
水饺编程28 分钟前
第2章:Linux 基础,echo 命令
linux·c语言·汇编
Lsetea40 分钟前
curl设置SSL_CERT_FILE仍报60:CURL_CA_BUNDLE与CA路径优先级排查
linux·https·ssl证书·openssl·curl
隐擎fox1 小时前
Linux eBPF 与 XDP 高性能网络出口架构:动态连接追踪、丢包诊断与住宅网关 QoS 调优实战
linux·网络·网络协议·tcp/ip·架构
xiaoliuliu123451 小时前
Linux 手动装毕昇 bisheng-jdk-8u432-linux-aarch64.tar.gz
linux
狂奔的sherry2 小时前
JRuby 多线程反引号偶发 127:GC 提前释放了 posix_spawn 的 argv
java·linux·ruby·gc·jruby