
价格:面议
0
联系人:
电话:
地址:
03 读保持寄存器
40001-49999
字操作
单个或多个
不应该是只能读的吗?
在使用Modbus协议的时候,经常会遇到诸如40001、30001,10001之类的地址,这些数字代表什么含义呢?这其实是Modbus协议的数据模型和地址模型。
通常授权如五轴转换或主从功能只需勾选相应的授权进行就可以,但有些特殊功能如RDCC(冗余分布式笛卡尔坐标系)属于编译循环(.ELF),除了必须勾选相应的授权,还需要进行其他的操作。
一般购买了相应的编译循环后,西门子家会提供一个专门的文件夹里面装有编译循环的说明文件,对应的报警文件和***重要的编译循环。
1.首先需要将对应编译循环(xxx.ELF)拷入到调试-系统数据-NC数据-编译循环目录下
2.N26授权(RDCC)
3.重启PO
4.重启完成后通用机床数据会出现60900的新参数,勾选60900[0] $MN_CC_ACTIVE_IN_CHAN_RDCC bit0 ,即1H
5.再次重启后就会在通道机床数据中出现新的6开头的变量了
这样就可以按照相应的功能说明设置参数,使用了。
注:
装了编译循环时,备份除标准的MMC/PCLC/NC/补偿外,会多一项编译循环选项,若选择备份,可以用记事本打开查询到CCOEM目录及ELF文件。故备份的时候须勾选编译循环,保留所有的参数设置,才可用sinutrain完整仿真。
数据模型是对从站设备可访问的数据进行抽象,Modbus协议的数据模型定义了四种可访问的数据:
数据区块 | 数据类型 | 访问类型 |
---|---|---|
线圈(Coils) | 布尔 | 读/写 |
离散量输入(Discrete Input) | 布尔 | 只读 |
输入寄存器(Input registers) | 无符号2字节整型 | 只读 |
保持寄存器(Holding registers) | 无符号2字节整型 | 读/写 |
其中,离散量输入和线圈数据类型是布尔量,因此只支持以位(bit)的方式进行访问,输入寄存器和保持寄存器数据类型是无符号2字节整型,因此支持以字的方式进行访问。当主设备访问从设备的这些数据模型时,离散量输入和输入寄存器只支持以只读的方式进行访问,而线圈和保持寄存器既可以读也可以写。
地址前缀编号 | 编号范围 (1~65536) | 编号范围 (1~9999) | 数据区块 | 数据类型 | 访问类型 |
---|---|---|---|---|---|
0 | 000001~065536 | 00001~09999 | 线圈(Coils) | 布尔 | 读/写 |
1 | 100001~165536 | 10001~19999 | 离散量输入 (Discrete Input) | 布尔 | 只读 |
3 | 300001~365536 | 30001~39999 | 输入寄存器(Input registers) | 无符号2字节整型 | 只读 |
4 | 400001~465536 | 40001~49999 | 保持寄存器(Holding registers) | 无符号2字节整型 | 读/写 |
数据模型中的每一种数据区块都最多允许有65536(2^16)个元素,Modbus定义了每个数据元素的地址,范围从0到65,535。但是每个数据元素的编号从1开始,范围从1到65,536。
需要说明的是:65536只是协议允许的最大元素范围,并不要求全部实现。Modbus协议允许设备根据自己的实际情况实现部分元素,甚至不要求实现模型中全部四种数据模型。譬如设备可能会选择不执行线圈、离散输入或输入寄存器,而只使用保持寄存器150至175和200至225。这是完全可以接受的,并且通过异常来处理无效的访问。