一、 A5作为MODBUS从机
正航A5系列PLC(以下简称A5)有1~2个RS232/RS485通讯口,默认为MODBUS-RTU从机,可直接使用MODBUS-RTU协议访问。
A5通讯口的默认设置:MODBUS地址:1;波特率:9600;数据位:8位;停止位:1位;校验位:无校验。
若您没有对A5的通讯进行任何设置,则可以直接按照上面所述的配置与A5进行通讯。
|
0x寄存器 |
1x寄存器 |
3x寄存器 |
4x寄存器 |
|
A5内部
寄存器 |
MODBUS
地址 |
A5内部
寄存器 |
MODBUS
地址 |
A5内部
寄存器 |
MODBUS
地址 |
A5内部
寄存器 |
MODBUS
地址 |
|
数字量输出 |
Q0.0 |
1 |
数字量输入 |
I0.0 |
1 |
模拟输入 |
AIW0 |
1 |
中间寄存器 |
VW0 |
1 |
|
Q0.1 |
2 |
I0.1 |
2 |
AIW2 |
2 |
VW2 |
2 |
|
… |
… |
… |
… |
… |
… |
… |
… |
|
Q0.7 |
8 |
I0.7 |
8 |
AIW14 |
8 |
VW14 |
8 |
|
Q1.0 |
9 |
I1.0 |
9 |
AIWX |
对应X/2+1 |
VW16 |
9 |
|
Q1.1 |
10 |
I1.1 |
10 |
模拟输出 |
AQW0 |
9 |
VW18 |
10 |
|
Q1.2 |
11 |
I1.2 |
11 |
AQW2 |
10 |
VW20 |
11 |
|
Q… |
18 |
I… |
… |
AQWX |
对应X/2+9 |
V… |
… |
|
Q15.7 |
19 |
I15.7 |
128 |
|
|
VW1998 |
1000 |
|
QA.B |
对应A*8+B+1 |
IA.B |
对应A*8+B+1 |
|
|
VWX |
对应 X/2+1 |
|
中间继电器 |
M0.0 |
129 |
|
|
|
|
|
|
|
|
|
|
M0.1 |
130 |
|
|
|
|
|
|
|
|
|
M… |
… |
|
|
|
|
|
|
|
|
|
M15.7 |
256 |
|
|
|
|
|
|
|
|
|
MA.B |
对应A*8+B+129 |
|
|
|
|
|
|
|
|
使用MODBUS协议时,A5内部的地址与MODBUS协议规定的地址如上表所示。
需要注意的是,MODBUS协议规定的地址,和实际在总线上传输的地址相差1。例如,MODBUS协议访问一个3X寄存器,MODBUS协议地址号是16,但实际在总线上传输时,地址字节的内容是15。
二、 A5作为MODBUS主机
A5可以作为MODBUS主机访问其它MODBUS设备,当然也可以访问其它A5。
使用A5作为主机时,需要用到MODX指令及SMB95、SMB96和SMB97三个寄存器。
MODX指令的作用是发出用户指定的MODBUS命令,若收到从机发回的命令,则将收回的内容放置在用户制定的区域。
SMB95寄存器的0位表示MODBUS是否空闲,1位表示接收的命令是否校验正确,2位表示是否超时。
SMB96是用户设定的超时寄存器,以100ms为单位。若值为0,则没有超时设置。
SMB97表示从A5发出命令到目前为止过了多长时间,以100ms为单位。当SMB97> SMB96时,SMB95的2位置1,0位清0,结束本次MODBUS通讯。
使用A5作为MODBUS主机的具体用法及过程如下:
1、 创建一个参数表,包括MODBUS命令的主要内容
可以使用MOVB指令,也可以使用表指令来构建参数表。
参数表的第一个字节表示此参数表有几个字节(不包括本字节)。从第二个字节开始是MODBUS指令,具体可以参见MODBUS协议的内容。您可以不必做CRC校验,MODX指令会自动为您添加CRC校验字节。
下面是一个参数表的举例:
|
地址 |
值 |
含义解释 |
备注 |
|
VB0 |
6 |
本表中有6个字节 |
|
|
VB1 |
1 |
从机地址 |
参见MODBUS协议规定 |
|
VB2 |
3 |
MODBUS命令3(读4x寄存器) |
|
VB3 |
0 |
开始地址的高位 |
(是实际传输的物理地址,比MODBUS地址少1) |
|
VB4 |
10 |
开始地址的低位 |
|
VB5 |
0 |
个数的高位 |
|
VB6 |
8 |
个数的低位 |
参数表第一个字节表明本参数表有6个字节,从VB1~VB6。具体的值根据不同的命令会有所变化。
第2个字节开始都是由MODBUS协议规定的。本例中的MODBUS命令表示向地址为1的从机读取从MODBUS地址为11(实际传输10)地址开始的8个保持寄存器(4x寄存器)。
以上内容放在子程序0中,具体的指令如下:
l 梯形图:

l 语句表
NETWORK 0
//首先创建一个表,MODBUS主机命令。
//本例中,创建了一个命令,访问地址为1的从机
//MODBUS命令为3(读中间寄存器),从MODBUS地址为11(实际传输10)开始,8个寄存器。
LD SM0.0
MOVB 6,VB0
MOVB 1,VB1
MOVB 3,VB2
MOVB 0,VB3
MOVB 10,VB4
MOVB 0,VB5
MOVB 8,VB6
2、 设定通讯参数
为A5设定波特率、奇偶校验等通讯参数。需注意的是,当作为MODBUS主站时,是不需要设定地址的。具体设定方法请参见第三节。
3、 设定超时时间
当A5作为主机发送命令给从机后,等待从机回答。若一定时间没有回复,则主机可以认为从机接收错误或从机故障。等待时间可以由SMB96设置,时间单位为100ms,因此等待时间可以从0.1秒(100ms)至25.5秒调整。若SMB96=0,则没有超时限制。
l 梯形图:

l 语句表
NETWORK 1
//设定超时时间为2S(100ms为单位),如果2S内没有反馈,则失败
LD SM0.1
MOVB 20,SMB96
4、 使用MODX指令通讯
准备好通讯内容和设置好通讯后,就可以使用MODX指令进行通讯了。MODX指令包含三个参数:参数一表示使用哪个通讯口(目前A5系列只有0口支持MODBUS主机),参数二表示发送内容参数表,参数三表示接收内容放置位置。例如:
l 梯形图:

上面的语句表示,A5从0号通讯口发送VB0开始的参数命令,并将接收到的从机回复内容放置在VB101开始的地址区域,而VB100表示接收到的字节个数。
5、