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

三菱电机服务商    

PLC、变频器、伺服驱动、触摸屏,机器人

联系方式
  • 联系人:吴经理
  • 电话:18576370666
  • 邮件:18576370666@163.com
新闻分类
  • 暂无分类
站内搜索
 
首页 > 新闻中心 > FX5U与欧姆龙温控表进行无协议通信!
新闻中心
FX5U与欧姆龙温控表进行无协议通信!
发布时间:2025-09-05        浏览次数:114        返回列表

三菱 FX5U 与欧姆龙温控表(如 E5CC、E5EC 系列)的无协议通信,核心是通过 FX5U 的串行通信端口(RS485/RS232) ,按欧姆龙温控表的 “无协议数据格式” 收发指令(如读取温度、设置目标值),无需依赖标准协议(如 Modbus),但需严格匹配双方的数据帧结构、波特率、校验位等参数。以下是分步骤实现方案,从硬件接线到软件编程全覆盖:

一、前期准备:明确核心参数与硬件接线

1. 确认双方通信参数(必须完全一致)

无协议通信的关键是 “参数匹配”,需先确定 FX5U 与温控表的通信参数,建议默认配置如下(可根据需求调整,但双方必须统一):


参数类型配置值说明
通信端口FX5U 的 RS485 端口(推荐)需 FX5U 本体带 RS485(如 FX5U-32MR/ES)或扩展 FX5-485-BD 模块,抗干扰强、传输远
波特率9600bps可选 19200bps,优先 9600bps 兼容性更好
数据位 / 停止位8 位数据位,1 位停止位欧姆龙温控表默认无协议格式的固定配置
校验位无校验避免校验位不匹配导致数据丢弃
通信方向全双工(FX5U 主动收发)FX5U 作为主站,主动向温控表发送指令、接收响应

2. 硬件接线(以 RS485 为例,最常用)

欧姆龙温控表(如 E5CC)的 RS485 端口与 FX5U 的 RS485 端口需 “同极性连接”,具体端子定义如下:


设备端子标识功能接线对应关系
FX5U(本体 / 模块)TXD+(A)RS485 发送 / 接收正极接欧姆龙温控表的 “+”

TXD-(B)RS485 发送 / 接收负极接欧姆龙温控表的 “-”

GND(可选)接地(抗干扰)接欧姆龙温控表的 “GND”
欧姆龙温控表+(端子 12)RS485 正极接 FX5U 的 A 端

-(端子 13)RS485 负极接 FX5U 的 B 端

GND(端子 14)接地接 FX5U 的 GND(可选)


注意


  • 若多台温控表组网(如 1 台 FX5U 连 3 台 E5CC),需按 “手拉手” 布线(FX5U→温控表 1→温控表 2→温控表 3),避免星型连接;

  • 通信距离>100 米时,需在总线两端(FX5U 和最后 1 台温控表)的 A/B 端子间并联 120Ω 终端电阻,减少信号反射。

二、第一步:配置欧姆龙温控表的无协议参数

需通过温控表的面板操作,将其通信模式设为 “无协议”,并匹配 FX5U 的通信参数,以欧姆龙 E5CC 为例(其他型号操作逻辑一致):


  1. 进入温控表参数设置模式:按面板 “SET” 键 3 秒,直到显示 “LEVEL 2”(二级参数);

  2. 找到 “通信模式” 参数(代码:C01):按 “△/▽” 键选择 “C01”,按 “SET” 进入,设置为 “0”(无协议模式,部分型号为 “UART”);

  3. 配置通信参数:

    • 波特率(代码:C02):设置为 “4”(对应 9600bps,不同型号代码可能不同,参考手册,需与 FX5U 一致);

    • 校验位(代码:C03):设置为 “0”(无校验);

    • 数据位 / 停止位(代码:C04):设置为 “0”(8 位数据位,1 位停止位);

  4. 保存参数:按 “SET” 键确认,再按 “ESC” 键退出设置模式,温控表重启后参数生效。


关键提醒:记录温控表的 “设备地址”(无协议模式下,部分型号默认地址为 “0” 或 “1”,若多台组网需设置不同地址,如温控表 1=1、温控表 2=2,通过参数 “C00” 设置)。

三、第二步:配置 FX5U 的通信端口参数

需在 GX Works3 中配置 FX5U 的 RS485 端口参数,确保与温控表一致,步骤如下:


  1. 打开 GX Works3,新建 FX5U 项目,进入 “参数”→“内置端口 / 扩展端口”→选择通信端口(如 “端口 1(RS485)” 或扩展模块端口);

  2. 配置 “基本通信参数”:

    • 通信方式:选择 “无协议通信”(或 “通用串行通信”,不同 GX Works3 版本表述可能不同);

    • 波特率:选择 “9600bps”(与温控表一致);

    • 数据位 / 停止位:选择 “8 位数据位,1 位停止位”;

    • 校验位:选择 “无校验”;

    • 通信方向:选择 “全双工”(FX5U 需同时发送和接收数据);

  3. 配置 “无协议通信细节”:

    • 发送延迟:设为 “10ms”(避免连续发送导致数据冲突,根据实际调整);

    • 接收超时:设为 “500ms”(超过 500ms 未收到响应则判定通信失败);

  4. 下载参数:点击 “写入参数”,将配置下载到 FX5U(需 PLC 处于 “停止” 状态,下载后重启 PLC 生效)。

四、第三步:编写无协议通信程序(GX Works3)

FX5U 通过 “无协议通信指令”(如RS指令、FROM/TO指令,优先用RS指令,更灵活)实现与温控表的 “指令发送” 和 “响应接收”。核心是按欧姆龙温控表的无协议数据帧格式组织发送指令,再解析接收的响应数据。

1. 明确欧姆龙温控表的无协议数据帧格式

欧姆龙无协议通信采用 “ASCII 码格式”,指令帧由 “起始符、地址、指令码、数据、校验和、结束符” 组成,常用指令(读取当前温度、设置目标温度)的帧格式如下:


指令类型发送帧格式(ASCII 码)说明响应帧格式(ASCII 码)
读取当前温度@ + 地址 + R + 0 + 0 + 0 + 校验和 + * + CR例:读取地址 1 的当前温度,帧为@1R00003*CR@ + 地址 + 0 + 0 + 温度值(4位) + 校验和 + * + CR
设置目标温度@ + 地址 + W + 0 + 0 + 目标值(4位) + 校验和 + * + CR例:设置地址 1 的目标温度为 25℃,帧为@1W0025C*CR@ + 地址 + 0 + 0 + 0 + 0 + 校验和 + * + CR(成功)


帧格式详解


  • @:起始符(固定);

  • 地址:温控表设备地址(1 位 ASCII 码,如 “1”“2”,对应参数 C00);

  • 指令码:R= 读取,W= 写入(固定);

  • 数据位:读取时为 “000”(固定),写入时为 4 位目标值(如 25℃=“0025”,单位:0.1℃则 25℃=“0250”,需按温控表精度调整);

  • 校验和:从@到数据位的所有字符的 ASCII 码之和的 “低 2 位”(十六进制,大写);

  • *:分隔符(固定);

  • CR:结束符(ASCII 码 0x0D,固定)。


校验和计算示例(以 “读取地址 1 的当前温度” 为例):


  • 发送帧前半部分:@1R000(字符依次为 @、1、R、0、0、0);

  • 各字符 ASCII 码:@=0x40,1=0x31,R=0x52,0=0x30(3 次);

  • 求和:0x40+0x31+0x52+0x30+0x30+0x30=0x183;

  • 低 2 位:0x83 → 转换为 ASCII 码 “83”? 不对!欧姆龙校验和是 “十进制和的低 2 位”? 纠正:实际欧姆龙无协议校验和为 “从 @到数据位的所有字符的十进制 ASCII 码之和,取个位数 + 十位数的和,再取个位数”(不同型号可能有差异,建议参考对应温控表手册,此处以 E5CC 为例):
    重新计算:@(64) + 1 (49) + R (82) + 0 (48)*3 = 64+49+82+48+48+48=339 → 3+3+9=15 → 取个位数 5? 实际需以手册为准,建议用欧姆龙官方工具或手册中的示例帧验证,避免校验和错误导致通信失败。

2. FX5U 程序编写(用RS指令实现)

RS指令(无协议通信指令)的功能是 “从指定缓冲区发送数据” 和 “将接收数据存入缓冲区”,需配合 “发送缓冲区”“接收缓冲区”“控制位” 实现完整通信流程,程序逻辑如下:

(1)定义寄存器分配(便于管理)

在 GX Works3 的 “软元件注释” 中定义以下寄存器,明确功能:


软元件地址功能描述
发送缓冲区D100~D105存储发送给温控表的无协议帧(每 D 寄存器存 2 个 ASCII 码)
接收缓冲区D200~D205存储温控表返回的响应帧
控制位M0发送触发(M0=1 时,RS指令发送数据)
状态位M1发送完成(RS指令发送成功后 M1=1)
状态位M2接收完成(RS指令接收成功后 M2=1)
温度存储D300存储解析后的当前温度值(十进制,单位℃)
(2)编写RS指令程序(梯形图)

ladder

// 1. 发送触发:M0=1时,将发送帧写入D100~D105,触发RS指令发送
LD M0
MOV K40161 D100  // D100:高8位=0x40(@),低8位=0x31(1) → 对应ASCII码“@1”
MOV K52480 D101  // D101:高8位=0x52(R),低8位=0x30(0) → 对应ASCII码“R0”
MOV K48480 D102  // D102:高8位=0x30(0),低8位=0x30(0) → 对应ASCII码“00”
MOV K48515 D103  // D103:高8位=0x30(0),低8位=0x33(3) → 对应ASCII码“03”(校验和,需按实际计算调整)
MOV K4242 D104   // D104:高8位=0x2A(*),低8位=0x0D(CR) → 对应ASCII码“*CR”
RST M0           // 发送后复位M0,避免重复发送

// 2. RS指令:无协议通信,发送缓冲区D100,接收缓冲区D200,长度6字节(发送6字节,接收6字节)
RS K100 K200 K6 Y0 M1 M2  // K100=发送缓冲区起始D100,K200=接收缓冲区起始D200,K6=数据长度,Y0=端口选择(根据实际端口调整),M1=发送完成,M2=接收完成

// 3. 接收解析:M2=1时,解析D200~D205中的响应帧,提取温度值存入D300
LD M2
// 假设响应帧为“@100255*CR”(当前温度25.5℃,4位数据“255”→25.5℃),提取D202的低8位(5)、D203的高8位(2)、低8位(5)
MOV D202 K300    // D202:假设存“02”(ASCII码“0”“2”),取低8位“2”→K300=2
MOV D203 K301    // D203:存“55”(ASCII码“5”“5”),取高8位“5”→K301=5,低8位“5”→K302=5
MUL K100 K300 D300  // 2*100=200
MUL K10 K301 D301   // 5*10=50
ADD D300 D301 D300  // 200+50=250
ADD D300 K302 D300  // 250+5=255 → D300=255(对应25.5℃,若单位为0.1℃,需除以10)
DIV D300 K10 D300   // 255/10=25.5 → 最终温度值存入D300
RST M2           // 解析后复位M2,等待下次接收
收缩
  • QQ咨询

  • 电话咨询

  • 18576370666
  • 添加微信客服