内容发布更新时间 : 2024/12/23 14:02:54星期一 下面是文章的全部内容请认真阅读。
PROFIBUS教程(十三)——系统功能SFC14与SFC15 作者: PLC-CNC , 发表于:现场总线 共有0人回复,320次点击 QQ留言 收藏此帖 在STEP7中的I/O存取命令不允许用单字节、单字或双字命令去存取具有3个或大于4字节的相连续的DP数据区域(模块)。为了存取这种封闭结构的相连续的数据区域,使用系统功能DPRD_DAT和DPWR_DAT。 一、系统功能SFC14 DPRD_DAT 为了读一个DP从站的相连续的输入数据区域,使用系统功能SFC14 DPRD_DAT,每个读存取涉及一个专用输入模块。如果一个DP从站有若干个相连续的输入模块,则必须为所要读的每个输入模块分别安排一个SFC14调用。表1列出了你必须定义的SFC14的输入和输出参数。 表1 SFC14 DPRD_DAT的参数 参数 LADDR 说明 INPUT 数据类型 存贮器区域 WORD I,Q,M,D,L (不变的) 从站的输入模块开始地址规定 (十六进制格式) RET_VAL OUTPUT RECORD OUTPUT 描述 用HW Config组态的DPINT ANY I,Q,M,D,L I,Q,M,D,L SFC的返回值 所读用户数据的目的区域 参数描述 RECORD 参数RECORD描述在S7 CPU上用于从DP从站读取的相连续输入数据的目的区域。在这里你定义的长度必须与用HW Config程序为DP从站的输入模块所定义的长度相一致。请注意,RECORD参数属于数据类型ANY-Pointer。对于ANY-Pointer只允许的数据类型是BYPE。 RET_VAL 表2 中指出了系统功能SFC14的参数RET_VAL的出错代码。 表2 SFC14 DPRD_DAT的参数RET_VAL返回值 出错代码 W#16#… 0000 8090 说明 无错误发生 对于指定的逻辑基本地址没有模块被组态或超出对于连续的数据所允许的长度 8092 8093 在数据类型ANY-Pointer参数中指出类型不是BYPE 由LADDR指定的逻辑地址,不存在可以从中读取连续的数据的模块 80A0 80B0 80B1 所选择的模块有缺陷 在外部DP接口上从站故障 指定的目的区域的长度与通过HW Config指定的用户数据长度不一致 808x 80B2 80B3 80C0 对于外部DP接口系统出错 对于外部DP接口系统出错 ‥ ‥ ‥ ‥ 80C2 80Fx 87xy ‥ ‥ ‥ ‥ ‥ ‥ 二、系统功能SFC15 DPWR_DAT 从S7 CPU传送一个连续的输出数据到DP从站,使用系统功能SFC15 DPWR_DAT。每个写存取涉及一个专用的输出模块。如果DP从站有若干个连续的数据输出模块,则对每个要写入的输出模块必须分别安排一个SFC15调用。表3指出了必须定义的SFC15的输入和输出参数。 表3 SFC15 DPWR_DAT的参数 参数 LADDR 说明 数据类型 存贮器区域 描述 INPUT WORD I,Q,M,D,L(不用HW Config组态的DP变的) 从站的输出模块开始地址的规定(十六进制格式) RECORD OUTPUT ANY I,Q,M,D,L 所要写的用户数据的源区域 RET_VAL OUTPUT INT I,Q,M,D,L SFC的返回值 参数描述 RECORD 参数RECORD描述要从S7 CPU写入DP从站的连续的输出数据的源区域。在这里指定的长度必须与用HW Confi组态的DP从站的输出模块的长度相一致。请注意,参数RECORD属于数据类型ANY-Pointer,对于ANY-Pointer只允许是数据类型BYTE。