- {{item.name}}
在 S7-SCL 中如何进行 SFC14 和 SFC15 ANY 参数的编程?
- 0
- 1850
- 5883
在 S7-SCL 和 LAD/FBD/STL 编辑器中,要在 UDT 或 DB 中声明一个 ANY 数据类型的变量是不可能的,因为 ANY 变量是一个参数类型。但是,可以声明 ANY 变量是一个临时变量。
操作指南
当调用 SFC14 或 SFC15 时,应确保通过 ANY 变量“记录”被参数化的用户数据区的长度必须与 HW Config 中的模块组态中的用户数据区长度相同(例如 3 字节)。这就是为什么建议要在 STL 中调用这些块,目的是可以定义 ANY 指针到精确的字节上(例如 DB100.DBX0.0 BYTE 3)。如果在符号编程过程中,在 SCL 或 LAD/FBD/STL中,传送 STRUCT 或 ARRAY 到 ANY 类型的块参数时,编译器传送适当的 ANY 指针。
如果直接调用 SFC14 或 SFC15 并通过“STRUCT”或“ARRAY”类型的变量用符号提供“记录”参数,若从站组态的字节数是奇数,则 SFC14/15 报告错误代码 80B1。
这个动作的原因是 STEP 7 中的 STRUCT 与 ARRAY 总是按字的边界储存在存储器中,所以总是传输的是偶数长度。
如果在 S7-SCL 中调用 SFC14 或 SFC15 并要动态地提供 ANY 指针,建议在 SCL “变量区域声明视图”中使用“AT” 结构。
图. 01
程序描述
"CALL_SFC14_15" 功能块提供了 SFC14读取和SFC15写一致性的数据到一个标准的从站。数据被储存在"DB_Number"所指的DB块中"DB_Byte_Addr"所指的地址开始的地址区中。 字节的长度(“BYTE_COUNT”) 一定要与 STEP 7 组态所选模块的长度相同。如果 "SFC15_Select"参数的状态指示未 "1" (True), 用SFC15传输数据到从站,若指示为 "0" (False), 用SFC14从从站读取数据。“LADDR”参数和返回值“RET_VAL”在 STEP 7 SFC14/15 在线帮助中有描述。
用户创建数据区拷贝功能注意事项
例如,在"WORD_TO_BLOCK_DB(DBNo).DBB[Index]"形式下,用户需自定义两个索引标签, 数据区拷贝和索引的直接访问是不允许的。原因是数据块号和此数据块的地址仅可以在运行的过程中被访问。除此之外系统是禁止访问的。
下载
附件下载包括有 S7-SCL 功能 FC10 的 STEP 7 项目。复制 “NY_SCL.zip”文件到一个单独的文件夹,然后双击打开文件。STEP 7 V5.4 项目及所有相关子目录就会自动解包。可以使用 SIMATIC 管理器打开和处理解压缩项目。
此处有STEP 7 项目中的两个相同的 S7 程序。
- “S7-Prog_d”包括德文注释的 S7-SCL 功能。
- “S7-Prog_e”包括英文注释的 S7-SCL 功能。
ANY_SCL.zip ( 48 KB )
相关信息
关于带AT功能的ANY 指针的结构的更多信息可在条目号21946854获得。
关键字
ANY pointer
https://support.industry.siemens.com/cs/cn/zh/view/10625180
剩余80%未阅读,请登录后下载/查看文档
- 评论
-
分享
扫码分享
- 收藏 收藏
- 点赞 点赞
- 纠错 纠错
- 在 STEP 7 (TIA Portal) 的一个 S7-SCL 项目中如何定义常数?
- 在PROFIBUS中,主站在读取和写入从站连续数据时(大于4个字节)需要使用SFC14和SFC15。那么在PROFINET中控制器读取或写入IO设备连续数据时又需要怎么处理?
- FC中如何传递ANY指针
- B.Data系统中如何进行用户权限管理
- S7-SCL编程
- 通过调试器如何在线测试S7-SCL 源代码?
- 在S7-SCL中,如何将“BCD”类型的变量与“INTEGER”类型相互转换?
- S7-SCL - 可用于从给定日期或者 CPU 硬件时钟的当前日期确定日历日和日历周的工具
- 如何计算ANY 型指针的偏移量或改变指针?
- PCS 7 中“用户组态消息类型”提供了哪些新功能?如何进行组态?
{{item.nickName}}