电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

西门子STL间接寻址常问问题集

西门子STL间接寻址常问问题集_第1页
1/9
西门子STL间接寻址常问问题集_第2页
2/9
西门子STL间接寻址常问问题集_第3页
3/9
. . 西门子 STL 间接寻址常问问题集文献涉及产品1.1 如何获得指针或者间接寻址有关的信息? 指针的类型包括 16 位指针、 32 位指针、 Pointer(6Byte)和 Any(10Byte)。16位指针用于定时器、计数器、程序块的寻址;32 位指针用于 I/Q/M/L/ 数据块等存储器中位、字节、字以及双字的寻址,其中第0~2 位表示位地址( 0~7)、第3~18 位为字节地址,其余位未定义; Pointer 和 Any 一般应用在复杂数据类型 (比如 Date_and_Time /Array/String 等)在 FB、FC 之间的传递。而 Any 可以看做是对 Pointer 的延伸,因为由 10Byte 组成的 Any 中 Byte4~Byte9 就是一个 Pointer。了解指针的格式十分重要,为正确使用指针,应阅读如下内容:1、 "SIMATIC Programming with STEP 7 V5.5" 05/2010 第 27.3.4 章 参数类型2、文档: 1008 用于 S7-300 和 S7-400 的语句表 (STL)编程3、文档: F0215,S7-300 和 S7-400寻址1.2 为什么语句LAR1 P##PointerInput 在一个函数 (FC)中是无效的 ,然而,同样的语句在一个功能块 (FB)中是有效的 ? 在 FC 被调用时,复杂数据类型例如指针是被复制到调用者的临时变量区中,在FC 内部对此 V 区地址直接取址放入到地址寄存器AR1 或 AR2 是不被编译器规则接受的(导致 MC7 寄存器信息过长),也就是说在FC 内部通过 P#进行地址寄存器取址仅能支持Temp 临时变量。因此如果需要在FC 中操作指针等复杂输入输出变量地址需要使用累加器进行中转。考虑到程序的一致性、遵守编译器规则和STL 手册中 LAR1 指令说明,建议用户使用如下指令操作:L P##PointerInput LAR1 1.3 STEP 7 中哪些操作会覆盖DB/DI 寄存器或者地址寄存器AR1/AR2 的内容 ? 下面说明了可能引起DB/DI 寄存器或者地址寄存器AR1/AR2 内容改变的一些操作:DB 寄存器和 AR1 受到影响的操作1. 使用完整的 DB 路径(如 L DB20.Val )或者调用 FC/FB 时使用 DB 块完整地址作为其参数,则DB 寄存器内容被覆盖。例如在 OB1 中调用 FC1 后, DB 寄存器变成 20。OPN DB1 Call FC1 Input(bit):DB20.DBX0.2 因此在编程的时候, OPN 指令打开数据块, 通过 DBX x.y 的方式访问其中内容,但是如果在打开数据块后DB 寄存器的内容被修改了, 则 DBX x.y 的方式访问变量则 会访问到错误的地址。可以通过使用符号寻址的方式或者使用完整路径编...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

西门子STL间接寻址常问问题集

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部