MODBUS与高速指令说明手册.docx
《MODBUS与高速指令说明手册.docx》由会员分享,可在线阅读,更多相关《MODBUS与高速指令说明手册.docx(12页珍藏版)》请在冰豆网上搜索。
MODBUS与高速指令说明手册
MODBUS指令使用说明
一、指令形式(都为16位指令):
功能码
功能
MODBUS指令
操作数
01H
读线圈指令
COLR
OP0:
从站站号
OP1:
MODBUS线圈地址
OP2:
线圈个数
OP3:
本地线圈地址
02H
读输入线圈指令
INPR
OP0:
从站站号
OP1:
MODBUS线圈地址
OP2:
线圈个数
OP3:
本地线圈地址
03H
读出寄存器内容
REGR
OP0:
从站站号
OP1:
MODBUS寄存器地址
OP2:
寄存器个数
OP3:
本地寄存器地址
04H
读出输入寄存器内容
INRR
OP0:
从站站号
OP1:
MODBUS寄存器地址
OP2:
寄存器个数
OP3:
本地寄存器地址
05H
写单个线圈指令
COLW
OP0:
从站站号
OP1:
MODBUS线圈地址
OP2:
本地线圈地址
06H
写单个寄存器指令
REGW
OP0:
从站站号
OP1:
MODBUS寄存器地址
OP2:
本地寄存器地址
10H
写多个寄存器指令
MRGW
OP0:
从站站号
OP1:
MODBUS寄存器地址
OP2:
寄存器个数
OP3:
本地寄存器地址
0FH
写多个线圈指令
MCLW
OP0:
从站站号
OP1:
MODBUS线圈地址
OP2:
线圈个数
OP3:
本地线圈地址
注:
当从站站号填写0时,以广播模式进行发送。
二、MODBUS通讯协议:
RTU格式
三、通讯变量的地址分配:
位元件
Modbus地址(16进制)
M0~M1535
0000H~05FFH
X0~X377
4000H~40FFH
Y0~Y377
4800H~48FFH
S0~S999
5000H~53E7H
M8000~M8255
6000H~60FFH
T0~T255(线圈)
6C00H~6CFFH
C0~C255(线圈)
6E00H~6EFFH
T0~T255(触点)
6D00H~6DFFH
C0~C255(触点)
6F00H~6FFFH
字元件
Modbus地址(16进制)
D0000~D7999
1000H~2F3FH
D8000~D8255
3000H~30FFH
T0~T255
3C00H~3CFFH
C0~C199
3E00H~3EC7H
C200~C255(32位)
3F00H~3F37H
四、MODBUS指令占用寄存器:
自由协议相关寄存器被占用。
D7000~D7099:
报文发送区。
D7100~D7199:
报文接收区。
D7994:
通讯状态编码显示
00H:
正常状态
01H:
功能码错误
02H:
非法变量地址
03H:
错误数据
04H:
变量个数越界(从站反馈)
11H:
发送校验错误
81H:
从站号错误
82H:
变量个数越界
83H:
超时
84H:
接收校验错误
D7998:
本站站号设置(000-为主站,001-254为从站)
当前报文为广播模式时,以下寄存器不会被更新:
D7995:
从站正确返回的报文个数
D7996:
从站错误返回/超时的报文个数
D7997:
最后一个不能正常通讯的从站地址
M8128:
成功通讯状态位
M8129:
失败通讯状态位
五、使用MODBUS指令需知:
1.在第一个扫描周期对通讯参数进行设置(D8120)—选择自由协议、发送转接收,波特率设置为9600,停止位、奇偶位和数据位(总数据位必须设置为9位或者10位,总数据位=数据位+校验位(奇偶校验=1Bit,无校验=0Bit)+停止位),对本站站号进行设置(D7998)。
主站设置示意图:
从站设置示意图:
2.在第一个扫描周期所有MODBUS指令均不会被执行。
3.变量个数限制:
位型变量200个,字型变量32个。
4.若用户使用MODBUS功能,梯形图禁止使用:
1梯形图自由协议功能函数及其资源区;
2RS485通讯协议网络;
3MODBUS接收区/发送区。
如不遵循以上规则,可能导致MODBUS通讯出错。
5.推荐采用步序指令来进行MODBUS指令编程,通过M8128/M8129的状态来确认当前MODBUS指令是否执行完毕(读取状态后复位M8128/M8129),如下示例:
刷新、高数计数、脉冲指令使用说明
高速处理
助记符
功能
REF
输入/输出刷新
DHSCS
比较置位(高速计数器)
DHSCR
比较复位(高速计数器)
DHSZ
区间比较(高速计数器)
SPD
脉冲密度
PLSV
可变速脉冲输出
PMW
脉冲调制
DPLSR
带加减速的脉冲输出
DPLSY
脉冲输出
ZRN
原点回归
DRVA
绝对定位
DRVI
相对定位
PLSNEXT/PLSNT
脉冲段切换
STOP
脉冲停止
PLSMV
脉冲数立即刷新
PLSA
绝对位置多段脉冲控制
注意:
MP1一体机无上面蓝色与绿色部分字体指令,只包含有黑色字体指令。
MP2一体机具备以上所有指令功能。
输入输出刷新
FNC50
16位指令REF(连续执行型)
REF
●
:
输入/输出刷新点数。
:
指定起始软元件号。
功能和动作 该可编程控制器采用输入输出批次刷新方式。
输入端信息在0步运算前存入输入映像存储区。
输出端在执行END指令后,由输出映像存储区通过锁存存储器输出。
但是,在运算过程中,需要最新的输入信息以及希望立即输出运算结果时,可以使用该输入输出刷新指令。
程序范例一:
输入刷新
当X0=ON时,PLC会立即读取X000~X007,X010~X017输入点状态,输入信号更新,并没有输入延迟。
程序范例二:
输出刷新
当X0=ON时,PLC会立即读取Y000~Y007输入点状态,输出信号立即更新,不必等到END指令才输出。
● n可指定为K1~K184之间的任何数,但是只对X0-X7,X10,X11,Y0-Y7作处理。
● 在FOR~NEXT指令之间、标号(新步号)~CJ(老步号)之间,一般需要REF指令。
● 在有输入输出动作的中断处理被执行中,在中断子程序中进行输入输出刷新,获取最新的输入信息并且及时输出运算结果。
● 输出刷新中的输出接点将在输出继电器或晶体管应答时间后动作。
继电器输出型的应答滞后时间为10ms,晶体管输出型约为0.2ms以下。
高速计数器的编号
MP1系列可编程控制器的内置高速计数器如下表所示,按计数器的编号C分配在输入X000、X001X004、X005,X000~X005不可重复使用。
不作为高速计数器使用的输入端口可以作为普通口使用。
不作为高速计数器使用的高速计数器编号可以作为数值存储用的32位数据存储器使用。
U:
增计数输入 A:
A相输入
D:
减计数输入 B:
B相输入
高速计数器编号
单相单计数输入
AB相计数输入
C235
C236
C251
C252
X000
U/D
A
X001
U/D
A
X004
B
X005
B
方向标志
M8235
M8236
M8251
M8252
功能
1.对于单项单计数输入,用户通过启动前对M8235M8236置位来改变C235-C236的计数方向。
例如:
setM8235或强制M8235=ON时,C235减计数。
2.对于AB计数,用户可以通过监控M8251M8252,知道计数方向。
例如:
如果M8251=ON,则得知C251为减计数,输入端为A相为X0,B相为X4。
最高响应频率
当两个高速计数器同时使用情况下,合计的处理频率不得超过总计数频率数60K。
单项计数器(C235~C236):
1路最高60K;2路同时计数,则每一路最高30K
双相计数器(C251~C255):
1路最高30K;2路同时计数,则每一路最高15K
单独使用SPD指令单路输入最高80K,两路同时输入,每一路最高40K
比较置位(高速计数器用)
FNC53
32位指令DHSCS(连续执行型)
D
HSCS
●
:
比较值。
:
高速计数器编号。
:
比较结果。
机能和动作
● 当由DHSCS指令
所指之高速计数器产生加1或减1变化时,DHSCS指令会立即比较动作,当高速计数器现在值等于由
所指定的比较值时,由
所指定之软元件会变为ON,之后即使比较结果变成不相等,该软元件仍然保持ON状态。
● 高速计数器是根据计数输入的OFF→ON以中断方式计数。
计数器的当前值等于设定值时,输出触点立即工作,不受扫描周期的影响。
● 支持比较值
在线更改。
● 支持C235,C236单项单计数方向启动前更改M8235、M8236。
● 输出:
Y:
Y2Y3
I:
计数器序号为C235/C251时,中断指定为I010;计数器序号为C236/C252时,中断指定为I020.
M,S:
任意
程序范例一:
● DHSCS指令的比较结果
可以指定为I□0(□=1~2),□不可使用重复编号,计数器到达计数值时,发生中断,执行该中断服务程序。
● M8059为I10~I20高速计数器中断禁止标志,即:
当M8059=ON时,I10~I20的中断被全部禁止。
注意事项
● 该指令为32位指令,必须作为DHSCS指令输入。
● 使用这些指令时,计数器必须为高速计数器表格中的计数器,否则报警。
并且最多同时有两路输入,所以在使用时,要选对相应的计数器。
● 每路输入最多支持三个指令(最多两条DHSCS/DHSCR,一条DHSZ),否则出错。
● 若一路使用多个指令,则这多条指令使用的计数器必须为同一计数器,否则出错。
● 在任何时候,每一路DHSZ指令只能使用一次,否则出错。
● DHSCS指令不仅有置/复位功能,还有高速计数中断功能。
● DHSCS/DHSCR/DHSZ指令的输出执行,都是实时进行的。
● DHSCS/DHSCR/DHSZ指令可以与计数器C235/C251C236/C252任意匹配,当选中某个计数器后,就决定了它的计数方式。
● 对任一个输入口(X0/X4),SPD和高速计数(DHSCS/DHSCR/DHSZ)不可同时使用。
● 计数过程中,不能修改计数器的值,如用DMOV指令送数是不允许的。
指令中的比较输出,都随计数输入的当前值寄存器的变化而动作,因此,即使通过传送指令改变当前值,只要没有计数输入,比较输出就不会发生变化。
若要修改成功,必须先断开相关指令的线圈。
● 计数器具有掉电保持功能,即断电后再上电时,计数器以上一次的值为起点开始计。
● 这些指令在脉冲输入时比较结果动作。
因此,即使使用DMOV指令等改写作为比较对象的字软元件的内容,以及将计数器的当前值在程序上复位,使作为比较结果的输出,内置ON或OFF的条件,但是单纯驱动指令不能改变比较结果。