要通过上位机(如PC)向三菱FX3U PLC的FX3U-232ADP-MB模块(RS-232通信模块)写入数值,需结合PLC的串行通信协议和特殊缓存区(BFM)配置。以下是详细步骤和示例:
一、硬件与通信配置
硬件连接
将FX3U-232ADP-MB模块安装到FX3U PLC的扩展接口上。
使用RS-232电缆连接上位机(PC)的串口(或USB转RS-232适配器)与模块的RS-232端口(注意交叉接线:TXD↔RXD,RTS↔CTS等)。
模块参数设置
通过BFM配置通信参数(波特率、数据位、停止位等)。FX3U-232ADP-MB的BFM定义如下(参考手册):示例配置(9600bps, 8N1, 无流控):ladderTO K1 K0 K0 K6 // 模块地址K1,从BFM#0开始写入6个字D0: 0 // BFM#0=0(无协议)D1: 0 // BFM#1=0(9600bps)D2: 8 // BFM#2=8(数据位)D3: 1 // BFM#3=1(1停止位)D4: 0 // BFM#4=0(无校验)D5: 0 // BFM#5=0(无流控)
BFM#0:通信协议(0=无协议,1=FX系列,2=自定义)。
BFM#1:波特率(0=9600, 1=19200, 2=38400等)。
BFM#2:数据位(7/8位)。
BFM#3:停止位(1/2位)。
BFM#4:奇偶校验(0=无,1=奇,2=偶)。
BFM#5:控制线(如RTS/CTS使能)。
二、上位机通信协议
FX3U-232ADP-MB支持两种模式:
无协议模式(BFM#0=0)
上位机直接发送原始数据(如MODBUS RTU或自定义协议)。
PLC需通过
RS
指令或中断程序接收数据。FX协议模式(BFM#0=1)
使用三菱专用协议(如
FX Serial Communication
),需配置站号(BFM#6)。适合与三菱编程软件(如GX Works2)通信。
推荐无协议模式,灵活性更高。以下为无协议模式示例:
三、PLC程序配置
1. 接收上位机数据
使用RS
指令或RS2
指令(高速处理)接收数据到PLC的D寄存器。
ladderRS D100 K8 // 接收数据到D100开始的8个寄存器
D100
:接收缓冲区起始地址。K8
:接收字节数(16位×8=128位)。
2. 向上位机发送数据
使用DS
指令发送PLC数据到上位机。
ladderDS D200 K4 // 发送D200开始的4个寄存器(8字节)
3. 中断触发(可选)
配置通信完成中断(如M8161
)以实时处理接收数据。
ladderLD M8161 // 接收完成标志MOV D100 D0 // 将接收数据复制到D0
四、上位机程序示例(Python)
使用Python的pyserial
库发送数据到PLC:
python
import serial
# 配置串口 ser = serial.Serial('COM3', 9600, timeout=1)
# 发送数据(示例:写入数值1234到PLC的D10) data = [0x01, 0x02, 0x0D, 0x0A] # 自定义协议头+数据+结束符 ser.write(bytes(data))
# 接收PLC响应 response = ser.read(10) print("Received:", response)
ser.close()
五、关键注意事项
BFM配置顺序
必须在通信前通过TO
指令完成BFM参数写入,否则通信可能失败。数据格式匹配
上位机发送的数据格式(如ASCII/HEX)需与PLC程序一致。
例如:发送
0x000A
(16位)到PLC的D寄存器,需确保字节序正确。错误处理
检查
BFM#30
(模块错误代码)和M8063
(通信错误标志)。若通信超时,需重新初始化模块(通过
TO
指令重置BFM)。调试工具
使用串口调试助手(如Tera Term)验证物理连接。
在PLC中监控
D100
等接收缓冲区确认数据是否正确到达。
六、完整流程示例
PLC初始化
ladder
// 配置FX3U-232ADP-MB(模块地址K1) TO K1 K0 K0 K6 D0:0, D1:0, D2:8, D3:1, D4:0, D5:0 // 启用接收 RS D100 K8 上位机发送数据
发送
0x0001 0x0002
(2个16位数据)到PLC。PLC处理数据
ladderLD M8161 // 接收完成MOV D100 D0 // 数据1→D0MOV D101 D1 // 数据2→D1
PLC反馈
ladderDS D200 K2 // 发送D200-D201的内容
通过以上步骤,上位机可成功向FX3U PLC写入数据。实际应用中需根据具体协议(如MODBUS)调整数据格式和PLC程序逻辑。