通过 P_SND_RK (CP 341) 从 CPU 到通信模块的数据传输

2021-07-30 浏览次数:483
通过 P_SND_RK (CP 341) 从 CPU 到通信模块的数据传输

激活

通过指令 P_SND_RK 在输入 REQ 处的边沿信号来激活 MODBUS 函数代码的执行。

为 SEND 在 SF 参数处输入“S”。

在 LADDR 处输入逻辑模块地址。

必须为扩展数据块输入“X”,作为伙伴 CPU 的区域类型。 不必为伙伴 CPU (R_...) 的其他参数*值。

这样就确保了将执行函数代码所需要的参数传送到驱动程序。

数据源

当激活 P_SND_RK 时,通过参数 DB_NO 和 DBB_NO *的源数据区传送到通信模块,长度为 LEN

长度指示

长度 LEN 取决于所使用的函数代码。

函数代码

长度 LEN(以字节为单位)

01

6

02

6

03

6

04

6

05

6

06

6

07

2

08

6

11

2

12

2

15

>6

16

>6


如果传送的数据数量与上面列出的各个函数代码的数据数量不同,则不会执行作业,P_SND_RK 通过输出 ERROR 处的边沿来拒绝该作业。

SEND 源 DB

执行函数代码所需要的参数必须作为用户数据,输入到源数据区中。

“函数代码”部分的相应函数代码说明中详细描述了各个 P_SND_RK 源 DB。

生成消息帧

到从站的请求消息帧是根据传送的 P_SND_RK 源数据生成的,并由通信模块发送。

首先,驱动程序检查在 P_SND_RK 处*的长度 LEN 是否与此函数代码的长度相符。

如果不是,则不会执行作业,同时在 P_SND_RK 的输出 ERROR 上生成一个边沿信号作为结束。

当使用上面列出的函数代码之外的其他函数代码时,也不会执行激活的作业,而是通过 P_SND_RK 上的 ERROR 来结束该作业。

请求消息帧中的“字节计数器”和“CRC 校验”元素是由通信模块生成的;不需要 P_SND_RK 源 DB 中的条目。

写入函数的作业完成

对于写入函数代码,在接收到响应消息帧且无错误后,激活的 P_SND_RK 完成。 这通过 P_SND_RK 的输出 DONE 上的边沿信号传送到 SIMATIC 用户程序。

如果在消息帧通信过程中检测到错误,或者从站发送了错误代码响应消息帧,则通过输出 ERROR 的边沿信号报告这一情况。

读取函数的作业完成

对于读取函数,在接收到响应消息帧且无错误,并且将接收的数据完全传送到 CPU 之后,激活的 P_SND_RK 完成。

这通过 P_SND_RK 的输出 DONE 上的边沿信号传送到 SIMATIC 用户程序。

此时,接收的数据已经在 CPU 中可用。

如果在消息帧通信过程中检测到错误,或者从站发送了错误代码响应消息帧,则通过输出 ERROR 的边沿信号报告这一情况。

在这种情况下,不会传送任何接收数据到 CPU。

作业完成时的 STATUS 条目

对于这些实例,在作业完成时通过 P_SND_RK 上的 ERROR 进行指示,同时在状态参数中输入附加的错误代码。

可以通过此错误代码确定错误的确切原因


shtxjd.cn.b2b168.com/m/
top