DB TestCopyData

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

DB TestCopyData

TestCopyData DB 的结构

TestCopyData DB 的区域

TestCopy 功能的 DB 分为以下区域(在 DB 中的偏移 后):

0 ... 27:用户界面

用于设置 TestCopy 模式和功能的界面。此区域分为:

- 1 ... 13
RecvCopy 功能的过滤器设置和已计数接收帧的数量

- 15 ... 25
SendCopy 功能的过滤器设置和已计数发送消息帧的数量

28:错误显示

31 ... 39:内部管理指针

40 ...(默认值:523):缓冲区范围

用于存储符合过滤条件的帧的缓冲区。

此缓冲区必须组态为 WORD 的数组 [0...xxxx]。

下表列出了 DB TestCopyData 的结构:

数据类型/(偏移)

变量名称

格式

说明

用户界面

DBB

0

OperationMode

BYTE

模式

DBW

12

Recv_TgramCounter

INT

已复制的接收帧数目

DBW

26

Send_TgramCounter

INT

已复制的发送帧数目

RecvCopy 功能

DBB

1

Recv_TgrmType

BYTE

接收过滤器:消息类型 (MT)

DBW

2

Recv_DestSubscr

INT

接收过滤器:目标用户编号

DBW

4

Recv_DestObject

INT

接收过滤器:目标对象编号

DBW

6

Recv_SourceSubscriber

INT

接收过滤器:源用户编号

DBW

8

Recv_SourceObject

INT

接收过滤器:源对象编号

DBW

10

Recv_StartIndex

INT

接收过滤器:启动索引编号

DBB

14

SpareDBB14

BYTE

保留

SendCopy 功能

DBB

15

Send_TgrmType

BYTE

发送过滤器:消息类型 (MT)

DBW

16

Send_DestSubscr

INT

发送过滤器:目标用户编号

DBW

18

Send_DestObject

INT

发送过滤器:目标对象编号

DBW

20

Send_SourceSubscriber

INT

发送过滤器:源用户编号

DBW

22

Send_SourceObject

INT

发送过滤器:源对象编号

DBW

24

Send_StartIndex

INT

发送过滤器:启动索引编号

错误显示

DBB

28

FC_RetVal

BYTE

错误信息:

0 = 无错误

1 = DB TestCopyData 太短

10 = 未知模式

DBB

29

SpareDBB29

BYTE

保留

DBB

30

SpareDBB30

BYTE

保留

内部管理指针

DBB

31

TestCopyStatus

BYTE

TestCopy 操作状态字节

DBB

32

TestCopyCmdByte

BYTE

TestCopy 操作命令字节

DBB

33

TestCopyDelCount

BYTE

TestCopy 删除功能的循环计数器

DBW

34

NextFreeCopyByte

INT

下一个空闲 TestCopyBuffer 字节的地址

DBD

36

StartTimeSFC64

DINT

复制程序开始时的 SFC64 时间

缓冲区范围

DBB

40

TestCopyBuffer[0]

BYTE

复制区域,字节 0

DBB

41

TestCopyBuffer[1]

BYTE

复制区域,字节 1

DBB

42

TestCopyBuffer[2]

BYTE

复制区域,字节 2

DBB

43

TestCopyBuffer[3]

BYTE

复制区域,字节 3

DBB

n

TestCopyBuffer[n]

BYTE

复制区域,字节 n

已复制消息块的结构

帧块可包含多个帧。帧根据以下规则保存在 DB TestCopyData 中:

    自上次选择的操作模式 > 0 后,**个条目指示时间差(以毫秒为单位)(7 个十进制 BCD 加符号)。

    随后是发送消息的分隔信号 AAAA,接收消息的信号 EEEE。

    从帧块存储**条消息。

    分隔标识符 AAAA 或 EEEE:

    从消息块中存储上一个帧。

    块结束标识符 FFFF。

示例

所有接收的帧都将存储在 DB TestCopyData 中。

通过 X 块进行通信,即每个接收块较多 76 个字节。

DB XComData 的接收缓冲区是 FC TestCopy 的源。

当前接收块包含 3 个消息。


图片: 填写 DB TestCopyData 的示例

长度计算

FC TestCopy 使用以下参数确定 DB TestCopyData 的较小长度:

参数

参数名称

长度

通信缓冲区长度

LenComBuffer

76 或 202 个字节 *

较小帧长度

LenMinTgrm

14 个字节

偏移管理区域

Offset

40 个字节

时间差的长度

Lendt

4 个字节

块分隔符的长度

LenTrenner

2 个字节

* X 通信长 76 个字节,B 通信长 202 个字节

用于实际计算的公式与用于 X 通信和 B 通信的公式相同。结果不同仅因为 X 和 B 通信的通信缓冲区长度不同:

X 通信长度

LenMin_Xcom=LenComBuffer + Offset + Lendt + (LenComBuffer / LenMinTgrm + 1) * LenTrenner
 = 76 + 40 + 4 + (76/14 + 1) * 2
 = 120 + 12 = 较小 132 个字节

B 通信长度

LenMin_Bcom=LenComBuffer + Offset + Lendt + (LenComBuffer / LenMinTgrm + 1) * LenTrenner
 = 202 + 40 + 4 + (202/14 + 1) * 2
 = 236 + 40 = 较小 276 个字节

如果 FC TestCopy 确定 DB TestCopyData 不具有计算出的较小长度,则在数据字节 DBB28 中出现一条此结果的错误消息。


http://shtxjd.cn.b2b168.com

上一篇:冗余 备用

产品推荐