目标要求:
三菱串行通信模块QJ71C24N跟FX5UPLC进行Modbus通信,读FX5U的输入点,写入FX5U输出点信号,写入数据到FX5U,读FX5U里的数据。
一,硬件配置:
1,主站PLC配置:
基板:Q35B。
电源:Q61P。
CPU:Q06H。
输入:QX40。
输出:QY41P。
串行通信模块:QJ71C24N。
2,从站PLC:FX5U-32M。
3,RS通信接线:
SDA一一一一一一一→SDA
RDARDA
□←终端电阻→□
SDB一一一一一一一→SDB
RDBRDB
SG←一一接屏蔽层一→SG
二,QPLC软件设置:
1,IO设置:
导航→工程→参数→PLC参数→I/O分配设置→模块添加→模块类型:输入模块:QX40→输出模块:QY41P→串行通信/调制解调器接口模块→模块型号QJ71C24N→设置结束。占32点,~F。
2,通信格式设置:
导航→工程→智能功能模块→:QJ71C24N→开关设置:
选择通道2(CH2),从下往上设置,先设置通信协议→再设置波特率bps→设置更改允许→RUN中写入允许→和校验代码无→停止位1→偶数校验→校验位有→数据位8→动作设置独立→确定。
导航→工程→智能功能模块→:QJ71C24N→各种控制指定:
通信控制指定用→CH2,1:字节单位。
通信控制指定用→CH2,1:响应返回禁止(半双工)。
3,建立协议:
工具→通信协议支持功能→串行通信模块:
MODBUS常用功能码:
01,读线圈状态(位)。
02,读输入状态(位)。
03,读一或多个保持寄存器(字)。
04,读一或多个寄存器(字)。
05,强置单线圈(位)。
06,把字写入保持寄存器。
08,回送诊断校验报告从站。
15,强置多线圈。
16,预置多个连续保持寄存器。
分别建立2、3、15、6,四个协议:
新建→协议号添加→类型:通信协议库→制造商:SchneiderElectric→型号:MODBUS→协议名(功能码):02读输入状态→确定。
删除ERR接收:右击协议号→更改为可编辑协议→是→右击ERR数据包名→删除→是。
添加协议:点击添加→类型:通信协议库→制造商:SchneiderElectric→型号:MODBUS→协议名(功能码):03读一或多个保持寄存器(字)→确定。
同样也要删除ERR接收:右击协议号→更改为可编辑协议→是→右击ERR数据包名→删除→是。
添加协议:点击添加→类型:通信协议库→制造商:SchneiderElectric→型号:MODBUS→协议名(功能码):15强置多线圈→确定。
同样也要删除ERR接收:右击协议号→更改为可编辑协议→是→右击ERR数据包名→删除→是。
添加协议:点击添加→类型:通信协议库→制造商:SchneiderElectric→型号:MODBUS→协议名(功能码):06把字写入保持寄存器→确定。
同样也要删除ERR接收:右击协议号→更改为可编辑协议→是→右击ERR数据包名→删除→是。
变量设置:
右击协议号1→软元件批量设置:设置协议号范围指定:1-4→起始软元件号:如D0。→是→确定。
点击工具栏红色箭头图标把协议写入模块。
变量配置元素名解释:
“02RD读数据”的发送包变量:
SlaveAddress:从站地址。D0
FunctionCode:功能代码。02
StartingAddress:开始地址。D1
QuantityofInputs:输入点数量D2
ErrorCheck:错误检查。
“02RD读数据”的接收包变量:
SlaveAddress:从站地址。D3
FunctionCode:功能代码。02
ByteCount:字节长度。
InputStatus:输入状态值。D4,D5~
ErrorCheck:错误检查。
D5.0~D5.F。→返回状态,16个输入点。
“03RD读数据”的发送包变量:
SlaveAddress:从站地址。D
FunctionCode:功能代码。03
StartingAddress:开始地址。D
QuantityofRegisters:寄存器数D
ErrorCheck:错误检查。
“03RD读数据”的接收包变量:
SlaveAddress:从站地址。D
FunctionCode:功能代码。03
ByteCount:字节长度。
RegisterValue:寄存器数值。D,D~←读的数量
ErrorCheck:错误检查。
“15,WR写数据”的发送包变量:
SlaveAddress:从站地址。D
FunctionCode:功能代码。0F
StartingAddress:开始地址。D
QuantityofOutputs:输出点数D
ByteCount:字节长度。1字节单位。
OutputsValue:输出点数值。D长度(字节数),D(数据值如HFFFF)~D
ErrorCheck:错误检查。
“15,WR写数据”的接收包变量:
SlaveAddress:从站地址。D
FunctionCode:功能代码。0F
StartingAddress:开始地址。D
QuantityofOutputs:输出数值。D
ErrorCheck:错误检查。
“06WR写数据”的发送包变量:
SlaveAddress:从站地址。D
FunctionCode:功能代码。06
RegisterAddress:寄存器地址。D
RegisterValue:寄存器数值。D
ErrorCheck:错误检查。
“06WR写数据”的接收包变量:
SlaveAddress:从站地址。D
FunctionCode:功能代码。06
RegisterAddress:寄存器地址。D
RegisterValue:寄存器数值。D
ErrorCheck:错误检查。
FX5UPLC设置:
打开GXWorks3软件,新建FX5UCPC工程。
导航→参数→FX5UCPC→模块参数→串口:
基本设置:
设置项目:
协议格式:MODBUS_RTU通信。
奇偶校验:偶数。
停止位:1bit。
波特率:bps。
固有设置:
设置项目:
本站号:1。
MODBUS软元件分配:
设置项目:
详细设置:
线圈Y0,起始地址0,分配点数。
输入X0,起始地址0,分配点数。
输入寄存器,起始地址0,分配点数0。
保持寄存器D0,起始地址0,分配点数。
起始地址值为0。
程序编写:
指令解释:
G.CPRTCLUnn1n2(S)(D)。
GP.CPRTCLUnn1n2(S)(D)加沿。
Un:模块的起始输入输出信号,如U03。
n1:通道选择1:CH1,2:CH2。
n2:协议的连续执行数(1~8)。
S:存储控制数据的软元件起始编号。
S+0:执行结果,0正常,0以外错误码。
S+1:执行协议数结果,1~8。
S+2~9:执行协议编号指定。
S+10~17:校验一致接收数据包编号。
D:执行完成时置为1的位软元件偏号。
线路跟踪:
点击工具栏“串行通信模块的线路跟踪图标”→选择模块→选择通道→开始跟踪。