Modbus主设备协议每次扫描都需要少量的时间来执行MBUS_CTRL指令。MBUS_CTRL初始化Modbus主设备(首次扫描)需要大约1.11毫秒的时间,以后扫描需要大约0.41毫秒。
当MBUS_MSG子程序执行请求时,将执行扫描时间。大多数时间用于计算Modbus CRC的请求和应答。CRC (循环冗余检验)确保通讯消息的完整性。对于请求和应答中的每个字,扫描时间会延长约1.85毫秒。最大请求/应答(读取或写入120个字)使扫描时间延长约222毫秒。当在从站中接收应答并至少发出请求时,主要是读取请求在延长扫描时间。当将数据发送到从站并至少收到应答时,主要是写入请求在延长扫描时间。
Modbus从站协议的初始化和执行时间 返回顶端
Modbus通讯使用CRC (循环冗余检验)确保通讯消息的完整性。Modbus从站协议使用预先计算数值的表格减少处理消息的时间。该CRC表初始化约需240毫秒。初始化在MBUS_INIT子程序中进行,通常在进入RUN模式后用户程序首次扫描时执行。如果
MBUS_INIT子程序和任何其它初始化程序要求的时间超过500微秒扫描监视时间,您需要复原监视定时器,并将输出保持在启用状态(如果扩展模块要求)。输出模块监视定时器可用向模块输出写入的方法复原。请参阅监视复原指令。
当MBUS_SLAVE子程序执行请求时,扫描时间会延长。由于大多数时间用于计算Modbus CRC,对于请求中和应答中的每个字节,扫描时间会延长约420微秒。最大请求/应答(读取或写入120个字)使扫描时间延长约100毫秒。
Modbus主设备寻址 返回顶端
Modbus地址通常写作包含数据类型和偏移量的5个字符的数值。第一个字符决定数据类型,最后四个字符在数据类型中选择适当的数值。然后,Modbus主设备指令将地址映射至正确的功能,以便发送到从站。Modbus主设备指令支持下列Modbus地址:
00001至09999是离散输出(线圈) 10001至19999是离散输入(触点)
30001至39999是输入寄存器(通常是模拟量输入)
40001至49999是保持寄存器
所有Modbus地址均以1为基位,表示第一个数据值从地址1开始。有效地址范围将取决于从站。不同的从站将支持不同的数据类型和地址范围。
Modbus 从站寻址 返回顶端
Modbus地址通常被写为包含数据类型和偏移量的5个字符的数值。第一个字符决定数据类型,最后四个字符在数据类型中选择适当的数值。然后,Modbus主设备将地址映射至正确的功能。Modbus从站指令支持下列地址: 00001至00128是映射至Q0.0 - Q15.7的离散输出 10001至10128是映射至I0.0 - I15.7的离散输入
30001至30032是映射至AIW0至AIW62的模拟输入寄存器
40001至4xxxx是映射至V存储器的保持寄存器。
所有Modbus地址均以1为基位。下表显示映射至S7-200地址的Modbus地址。
Modbus地址 S7-200地址 00001 Q0.0 00002 Q0.1 00003 Q0.2 ... ...
00127 Q15.6 00128 Q15.7 10001 I0.0 10002 I0.1 10003 I0.2 ... ...
10127 I15.6 10128 I15.7 30001 AIW0 30002 AIW2 30003 AIW4 ... ...
30032 AIW62 40001 Hold Start 40002 HoldStart+2 40003 HoldStart+4 ... ...
4xxxx HoldStart+2 x (xxxx-1)
Modbus从站协议允许您限制Modbus主设备可存取的输入、输出、模拟输入和保持寄存器(V存储器)数量。
MBUS_INIT指令的MaxIQ参数指定Modbus主设备允许存取的离散输入或输出(I或Q)的最大数目。
MBUS_INIT指令的MaxAI参数指定Modbus主设备允许存取的输入寄存器(AIW)的最大数目。
MBUS_INIT指令的MaxHold参数指定Modbus主设备允许存取的保持寄存器(V存储器字)的最大数目。
请参阅MBUS_INIT指令说明,了解有关为Modbus从站设定存储器限制的进一步详情。
因篇幅问题不能全部显示,请点此查看更多更全内容