该函数使 MODBUS 主站系统可以向下面列出的 CPU 的 SIMATIC 存储器写入一个位。
ADDR | FUNC | coil_address | DATA 开/关 | CRC |
ADDR | FUNC | coil_address | DATA 开/关 | CRC |
MODBUS 位地址“coil_address”由驱动程序解释为如下内容:
驱动程序将检查“coil_address”是否位于参数分配过程中在对话框“FC 01、05、15 的 MODBUS 寻址的转换”(Conversion of MODBUS Addressing for FC 01, 05, 15) 中 输入的其中一个区域内(从/至:存储器位,输出,定时器,计数器)。
如果 | 则将访问 | |
从 aaaaa 到 bbbbb | 开始于存储器位 | M uuuuu.0 |
从 ccccc 到 ddddd | 开始于输出 | Q ooooo.0 |
访问地址(地址转换)的计算如下:
访问开始处(使用 SIMATIC) | 转换公式 | ||||
存储器字节 | = | ((coil_address | - aaaaa) | / 8) | + uuuuu |
输出字节 | = | ((coil_address | - ccccc) | / 8) | + ooooo |
当访问 SIMATIC“存储器位”区和“输出”区时,会计算剩余的 bit_number 并将其用于寻址存储器字节或输出字节内的相关位。
使用函数代码 FC 05 不允许访问 SIMATIC 定时器区和计数器区,此类访问将被驱动程序拒绝,并输出错误消息帧。
在 DATA 开/关时允许以下两个值:
FF00H -> 设置位。
0000H -> 删除位。
参数分配示例:
列表: 函数代码 FC 01、05、15 的 MODBUS 寻址的转换
| SIMATIC 存储区 |
|
---|---|---|
从 0 到 2047 | 开始于存储器位 | M 1000.0 |
从 2048 到 2559 | 开始于输出 | Q 256.0 |
05H | 从站地址 ADDR |
05H | 函数代码 FUNC |
08H | coil_address“高字节” |
09H | coil_address“低字节”A257.1 |
FFH | DATA 开/关“高字节” |
00H | DATA 开/关“低字节” |
xxH | CRC 校验和“低字节” |
xxH | CRC 校验和“高字节” |
05H | 从站地址 ADDR |
05H | 函数代码 FUNC |
08H | coil_address“高字节” |
09H | coil_address“低字节”A257.1 |
FFH | DATA 开/关“高字节” |
00H | DATA 开/关“低字节” |
xxH | CRC 校验和“低字节” |
xxH | CRC 校验和“高字节” |
MODBUS 地址“coil_address”0809 十六进制(2057 十进制)位于“输出”区中:
输出字节 | = | ((coil_address | - ccccc) | / 8) | + ooooo |
| = | ((2057 | - 2048) | / 8) | + 256 |
| = | 257 ; |
|
|
|
剩余的其他 bit_number 的结果如下:
其他 bit_no. | = | ((coil_address | - ccccc) | % 8) | [模数为 8] |
| = | ((2057 | - 2048) | % 8) |
|
| = | 1 ; |
|
|
|
访问输出 Q 257.1。
有关访问存储器位和输出的更多示例,请参见 FC 01。
产品推荐