返回主站|会员中心|保存桌面

普洛菲斯触摸屏    

普洛菲斯触摸屏、Proface触摸屏

联系方式
  • 联系人:吴经理
  • 电话:18576370666
  • 邮件:18576370666@163.com
  • 传真:散热风扇
新闻分类
  • 暂无分类
站内搜索
 
首页 > 新闻中心 > FX3u-485ADP数据读取程序!
新闻中心
FX3u-485ADP数据读取程序!
发布时间:2025-09-06        浏览次数:3        返回列表

要实现三菱 FX3UPLC 通过 FX3U-485ADP 模块读取数据,核心是利用RS-485 通信协议(通常采用三菱专用的 MC 协议或通用 Modbus-RTU 协议),通过外部设备(如电脑、单片机)与 485 模块建立通信,进而读取 PLC 内部寄存器(如 D 寄存器、M 继电器)的数据。以下提供基于Modbus-RTU 协议(通用性强,支持多数上位机 / 单片机)和Python 串口通信的实现方案,包含硬件连接、PLC 参数设置、上位机 python 代码及调试步骤。

一、前期准备(硬件 + PLC 参数配置)

1. 硬件连接

FX3U-485ADP 是 FX3U 的扩展模块,需先完成物理连接:


  • 模块安装:将 FX3U-485ADP 模块插入 FX3UPLC 的扩展总线接口(右侧扩展槽),确保模块卡扣扣紧。

  • RS-485 接线:485 模块的通信端子为SDA(DATA+)、SDB(DATA-)、SG(信号地),需与上位机(如 USB 转 485 模块)的对应端子连接:

    • FX3U-485ADP 的SDA → USB 转 485 模块的A(或 +)

    • FX3U-485ADP 的SDB → USB 转 485 模块的B(或 -)

    • 两者的SG端子需共地(避免干扰)。

  • 电源:FX3U-485ADP 由 PLC 扩展总线供电,无需额外接电源。

2. PLC 参数设置(关键!需用 GX Works2/3 配置)

FX3U-485ADP 默认不启用 Modbus-RTU 协议,需通过编程软件配置通信参数:


  1. 打开 GX Works2/3,新建 “FX3U” 项目,连接 PLC 后进入 “参数设置”→“扩展模块参数”→“FX3U-485ADP”。

  2. 配置通信基本参数

    • 通信协议:选择 “Modbus-RTU”(或 “MC 协议”,此处以 Modbus-RTU 为例,通用性更强)。

    • 波特率:默认 9600bps(可设 4800/19200bps,需与上位机代码一致)。

    • 数据位:8 位。

    • 停止位:1 位。

    • 校验位:无校验(或偶校验,需与上位机一致)。

    • 从站地址:默认 1(可设 1-247,需与代码中 “slave_id” 一致)。

  3. 配置寄存器映射(Modbus 地址与 PLC 内部寄存器对应):
    三菱 PLC 内部寄存器与 Modbus 地址的默认映射关系(关键!):

    PLC 内部寄存器功能码Modbus 地址范围说明(读取示例)
    D 寄存器(数据寄存器)0x0340001~49999读取 D0→Modbus 地址 40001,D1→40002
    M 继电器(位寄存器)0x0100001~00999读取 M0→Modbus 地址 00001

二、Python 读取数据程序(基于 Modbus-RTU)

使用 Python 的pyserial(串口通信)和pymodbus(Modbus 协议解析)库,实现从 FX3U-485ADP 读取 D 寄存器数据(如读取 D0~D4 的 5 个数据)。

1. 环境安装

先安装依赖库(需 Python 3.7+):


bash

pip install pyserial pymodbus

2. 完整代码(读取 D 寄存器数据)

FX3U-485ADP Modbus-RTU数据读取Python程序

V1

创建时间:22:51

三、关键说明与调试步骤

1. 代码参数修改(必须与 PLC 一致)

  • SERIAL_PORT:需在电脑设备管理器中查看 “USB 转 485” 的端口(如 Windows 的 “COM3”,macOS 的 “/dev/tty.usbserial-xxx”)。

  • PLC_SLAVE_ID:与 GX Works 中配置的 “从站地址” 一致(默认 1)。

  • MODBUS_START_ADDR:读取的起始 Modbus 地址(如读取 D10→40011,需将该参数改为 40011)。

  • BAUDRATE:与 PLC 配置的波特率一致(默认 9600bps,若改 19200 需同步修改)。

2. 调试步骤(按顺序排查)

  1. 硬件检查

    • 确认 485 接线(SDA→A,SDB→B,SG 共地),避免接反(接反会导致通信失败,不会烧毁模块)。

    • 检查 PLC 是否上电,FX3U-485ADP 模块的 “PWR” 灯是否常亮(正常),“RD”/“SD” 灯是否在通信时闪烁(表示数据收发)。

  2. PLC 参数验证

    • 用 GX Works 连接 PLC,进入 “扩展模块参数”,确认 “Modbus-RTU” 已启用,波特率、校验位、从站地址与代码一致。

    • 先在 PLC 中给 D 寄存器赋值(如用 GX Works 的 “监控模式” 手动将 D0 设为 123,D1 设为 456),便于验证读取结果。

  3. 代码运行与问题排查

    • 若提示 “串口连接失败”:检查端口号是否正确(设备管理器中确认)、USB 转 485 模块是否插好、驱动是否安装(CH340/CP2102 芯片需装驱动)。

    • 若提示 “Modbus 协议异常”:检查从站地址是否与 PLC 一致、功能码是否正确(D 寄存器用 0x03,M 继电器用 0x01)、Modbus 地址是否计算正确(如 D0→40001,而非 0)。

    • 若读取值为 0 或错误值:确认 PLC 中 D 寄存器已赋值,检查 485 线路是否有干扰(可缩短接线距离,或在总线两端加 120Ω 终端电阻)。

3. 扩展功能(按需修改)

  • 读取 M 继电器:将function_code改为 1(读取离散输入寄存器),start_addr设为 00001(对应 M0),示例代码:

    python

    运行

    # 读取M0~M4(5个继电器状态,1=通,0=断)response = client.read_discrete_inputs(
        address=0,  # M0→Modbus地址00001,对应address=0
        count=5,
        slave=1,
        function_code=1)


  • 单次读取:删除主程序中的while Truetime.sleep(2),改为单次调用函数即可。

四、其他实现方式(可选)

  • 上位机软件:无需编程,可用 ModbusPoll(Windows)、QModMaster(跨平台)等工具,输入 PLC 从站地址、波特率、Modbus 地址,直接读取数据(适合快速测试)。

  • 单片机(如 Arduino):用 Arduino 的SoftwareSerial库模拟串口,搭配ModbusMaster库实现 Modbus-RTU 通信,代码逻辑与 Python 类似,适合嵌入式场景。


若调试中遇到具体报错(如 “timeout”“ModbusError”),可告诉我报错信息,进一步帮你定位问题!

收缩
  • QQ咨询

  • 电话咨询

  • 18576370666
  • 添加微信客服