函数码 05 — 写单个线圈

时间:2021-08-02点击次数:102

函数代码 05 — 写单个线圈

函数

该函数使 MODBUS 主站系统可以向下面列出的 CPU 的 SIMATIC 存储器写入一个位。

请求消息帧

ADDR

FUNC

coil_address

DATA 开/关

CRC

响应消息帧

ADDR

FUNC

coil_address

DATA 开/关

CRC

coil_address

MODBUS 位地址“coil_address”由驱动程序解释为如下内容:

驱动程序将检查“coil_address”是否位于参数分配过程中在对话框“FC 01、05、15 的 MODBUS 寻址的转换”(Conversion of MODBUS Addressing for FC 01, 05, 15) 中 输入的其中一个区域内(从/至:存储器位,输出,定时器,计数器)。

如果
MODBUS 位地址
coil_address
位于该区域

则将访问
SIMATIC 存储区

从 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 开/关

在 DATA 开/关时允许以下两个值:

FF00H -> 设置位。

0000H -> 删除位。

应用示例

参数分配示例:

列表: 函数代码 FC 01、05、15 的 MODBUS 寻址的转换


消息帧传输中的 MODBUS 地址

SIMATIC 存储区

 

从 0 到 2047

开始于存储器位

M 1000.0

从 2048 到 2559

开始于输出

Q 256.0

请求消息帧 FUNCTION 05:

05H

从站地址 ADDR

05H

函数代码 FUNC

08H

coil_address“高字节”

09H

coil_address“低字节”A257.1

FFH

DATA 开/关“高字节”

00H

DATA 开/关“低字节”

xxH

CRC 校验和“低字节”

xxH

CRC 校验和“高字节”

应答消息帧 FUNCTION 05:

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。


http://shtxjd.cn.b2b168.com

上一篇:冗余 备用

产品推荐