产品描述
西门子孝感PLC模块总代理
在使用Modbus协议的时候,经常会遇到诸如40001、30001,10001之类的地址,这些数字代表什么含义呢?这其实是Modbus协议的数据模型和地址模型。
数据模型是对从站设备可访问的数据进行抽象,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。这是完全可以接受的,并且通过异常来处理无效的访问。
虽然规范将不同的数据类型定义为存在不同的区块中,并为每种类型分配一个本地地址范围,但这并不一定会转化为用于记录或理解给定设备的Modbus可访问内存的直观编址方案。
为了简化数据模型与设备存储区的对应关系,又引入了地址模型的概念,通过编号的方式对不同类型数据进行区分,也就是通过特定的编号作为前缀加到所讨论的数据地址中。如表中所示,通过0,1,3,4分别表示线圈,离散量输入,输入寄存器,和保持寄存器。
因此理论上,
线圈地址范围:000001~065536
离散量输入地址范围:100001~165536
输入寄存器地址范围:300001~365536
保持寄存器地址范围:400001~465536
由于65536是比较大的数值,实际应用一般不需要这么大的存储区,因此设备厂家普遍采用的是10000以内的地址范围,即:
线圈地址范围:00001~09999
离散量输入地址范围:10001~19999
输入寄存器地址范围:30001~39999
保持寄存器地址范围:40001~49999
有了该地址模型,我们就可以从Modbus寄存器的地址判断要访问的区块的类型。譬如常见到的寄存器地址40001/400001,较的4表明它是一个保持寄存器,后面的0001或者00001都是指**个保持存储器,并且它的地址是0。寄存器30004表明它是输入寄存器,地址是3。寄存器10008表明它是离散量输入,地址是7。
要注意的是,保持寄存器和输入寄存器中的数值是2个字节,而线圈和离散量输入中数值大小仅为1bit (位
使用说明:
1、对位元件来说一旦被置位,就保持在接通状态,除非对它复位;而一旦被复位就保持在断电状态,除非再对它置位。
2、S、R指令可以互换次序使用,但由于plc采用扫描工作方式,所以写在后面的指令具有**权。如在图7.24中,若I0.0和I1.1同时为1,则Q0.0、Q0.1肯定处于复位状态而为0。
3、如果对计数器和定时器复位,则计数器和定时器的当前值被清零。
4、N的范围为1~255,N可为:VB、IB、、MB、SMB、SB、LB、AC、常数。
5、S、R指令的操作数为:I、Q、M、SM、T、C、V、S和L。
西门子PLC 置位和复位指令下的那个数字是什么?
西门子PLC 置位和复位指令下的那个数字表示要复位或置位从首地址开始的连续的几个地址。
比如M0.0下面是4,表示置位和复位从M0.0开始的4个位,即M0.0,M0.1,M0.2,M0.3都同时复位或置位。
西门子plc如何设置复位指令?
复位寄存器v1000.2位,复位就是置0
置位寄存器v1000.3位,置位就是置1。
这两个指令下面的1可以是n,如果n=16
则指令 R v1000.0 16的意思就是把v1000.0~v1001.7的16个寄存器位全部复位,置0。
西门子s7-200 plc置位和复位指令与梯形图举例
西门子s7-200置位和复位指令:
执行S(Set,置位或置1)或R(Reset,复位或置0)指令时,从*的位地址开始的N个位地址都被置位(变为1)或复位(变为0),N=1~255。
立即置位SI和立即复位RI指令 执行SI或RI指令时,从*的位地址开始的N个连续的物理输出点将被立即置位或复位,N=1~128,线圈中的I表示立即。
STEP 7-MICro/WIN的帮助文件描述:
设置、复原(N 位)
输入/输出 操作数 数据类型
位 I, Q, M, SM, T, C, V, S, L 布尔
N VB, IB, , MB, SMB, SB, LB, AC, 常数, *VD, *AC, *LD 字节
设置(S)和复原(R)指令设置(打开)或复原*的点数(N),从*的地址(位)开始。电工技术之家
可以设置和复原1至255个点。如果"复原"指令*一个定时器位(T)或计数器位(C),指令复原定时器或计数器位,并清除定时器或计数器的当前值。
置位指令(S)就是往*的存储区位里写“1”,复位指令(R)就是将*的存储区位里的“1”写成“0”。
一般在程序里置位指令(S)和复位指令(R)成对使用,举个例子:你可以用置位指令(S)将M0.0置“1”,或再用复位指令(R)将M0.0置“0”,然后用它的常开、常闭触点去做控制用途。
在一个程序中可以对一个或多个位多次置位和复位,但是在编程时要注意:在一个程序中多次对一个或多个位多次置位和复位后,较终这个(或多个)位到底是“1”,是“0”,取决于CPU在一个扫描周期结束时最后一个指令是“置位”还是“复位”,以免程序运行时出现错误。
产品推荐