qwe2231695 发表于 2023-4-25 22:09:39

通过modbus tcp 和台达PLC通信测试记录

一, 准备工作
安装台达梯形图软件 “WPLSoft”
http://downloadcenter.delta-china.com.cn/DownloadCenter?v=1&q=WPL&sort_expr=cdate&sort_dir=DESC


2.硬件连接
2.1 电脑网卡 连接PLC以太网, IP设为192.168.1.x网段,PLC默认IP为192.168.1.5.
2.2 PLC 供电24V, S/S输入公共端接GND,UP0/ZP0输出驱动电源的端口接GND / 24V
2.3 在 PLC X0输入触点, 对地接一个测试按钮,用于逻辑测试。

二, 编写梯形图
确保PLC上电,网线插上,电脑IP正确,能ping通PLC:192.168.1.5,打开WPLSoft,按下图操作,连接。




扫描后会出现PLC,点击下载通信按钮,进入梯形图

写一个简单测程序,测试 X , Y , M , C 等功能,下一步进行Modbus TCP测试,获取这些数据。

三,使用 Modbus Poll 软件直接读取
打开 Modbus Poll 设置IP,端口是默认就行

台达DVP26SE 规格书内 通信地址如下:

设置后可以获取到 X , Y , M , C


四,使用 使用Python 的 pyModbusTCP 库读取
# 需要安装 pip3 install pyModbusTCP
from pyModbusTCP.client import ModbusClient

# PLC 默认IP是192.168.1.5,端口502
client = ModbusClient(host="192.168.1.5", port=502, auto_open=True,timeout = 2)

#读取物理输入触点X,地址400;输出触点Y,地址500
x = client.read_discrete_inputs(0x400,10)
y = client.read_coils(0x500,10)

#测试读写逻辑触点M,地址800
m_write = client.write_single_coil(0x800,0)
m_read = client.read_coils(0x800,bit_nb=1)

#测试读C数据寄存器
c = client.read_holding_registers(0xE00,10)

if x:
    print("X0~X9:",x)
else:
    print("x read error")

if y:
    print("Y0~Y9:",x)
else:
    print("Y read error")

if m_write:
    print("M0 Write Success")
else:
    print("M0 Write error")

if m_read:
    print("M0 Read:",m_read)
else:
    print("M0 Read error")

if c:
    print("C0~C9:",c)
else:
    print("C0~C9 read error")
运行, 打印输出 ,对比和软件实时监控一致。




完整图片内容: https://blog.csdn.net/cqy1028/article/details/129828634
页: [1]
查看完整版本: 通过modbus tcp 和台达PLC通信测试记录