西门子STL间接寻址常见问题解析
需积分: 19 59 浏览量
更新于2024-09-06
收藏 173KB DOC 举报
"西门子STL间接寻址常问问题集"
西门子STL间接寻址是程序设计中的一个重要概念,特别是在S7-300和S7-400系列PLC中,它允许程序员通过指针访问存储器的不同区域。以下是关于STL间接寻址的详细说明:
1.1 指针和间接寻址
指针是STL编程中用于间接访问内存位置的关键工具。16位指针适用于定时器、计数器和程序块的寻址,而32位指针则广泛用于I/O、M、L和数据块的寻址。32位指针的结构包含位地址和字节地址,而Pointer和Any则是处理复杂数据类型的指针类型。Any扩展了Pointer的功能,提供更大的地址空间。
了解指针的工作原理和格式至关重要,这需要参考官方文档,如"SIMATIC Programming with STEP7 V5.5"中的参数类型、1008文档中的S7-300和S7-400的STL编程以及F0215文档中关于寻址的详细信息。
1.2 FC与FB中的指针使用差异
在函数FC中,由于指针变量会被复制到调用者的临时变量区,直接使用LAR指令访问P#指针是不允许的,因为这违反了MC7寄存器长度的规定。相反,在功能块FB中,这种操作是可行的。为了解决这个问题,FC中应使用累加器作为中转,如LP##PointerInput LAR1。
1.3 寄存器内容的影响
在STEP7编程中,某些操作可能会改变DB/DI寄存器或地址寄存器AR1/AR2的内容。例如,当使用DB路径(如L DB20.Val)或在调用FC/FB时将DB块作为参数,DB寄存器的内容会被覆盖。在OB1中调用FC1并传入DB块地址后,DB寄存器的值就会改变。因此,编程时必须谨慎处理这些操作,避免意外覆盖重要数据。
在使用间接寻址时,要特别注意指针的类型和其在不同上下文中的使用限制。在处理复杂数据类型时,如Date_and_Time、Array或String,要理解Pointer和Any的区别,并遵循相应的编程规则。此外,为了保持程序的稳定性和避免数据丢失,应当遵循STEP7的编译器规则,尤其是在FC和FB之间传递指针时。
西门子STL间接寻址是一个强大但需要精确操作的工具。正确理解和运用这些概念,能够提升程序的灵活性和效率,同时避免潜在的问题。对于编程新手来说,深入学习相关文档和实践经验是必不可少的。
2021-10-02 上传
2022-12-01 上传
2023-07-10 上传
230 浏览量
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
w461149386
- 粉丝: 14
- 资源: 124
最新资源
- rtl8761b_bluetooth5.0_linux_driver.7z
- STRIPE-INTEGRATION
- 3D Shepp-Logan Phantom:Matlab 的 phantom() 的 3D 扩展-matlab开发
- Clementine-Vulgate
- 区域业务周报表excel模版下载
- Batua:个人应用程序,用于跟踪和管理您的费用
- 中式餐厅包间模型设计
- platform_device_xiaomi_violet
- Valcolor:将颜色 CLR 应用于与值 VAL 相关的颜色图条目。 缩放或索引图。-matlab开发
- 517-面包房
- winform窗体、控件的简单封装,重做标题栏
- xaiochengxu-learn:小程序
- 企业-迪普科技-2020年年终总结.rar
- 工作日报excel模版下载
- MyLaya
- Regression_09.05.20:这是一系列代码,用于导入数据,进行回归分析,居中变量和可视化交互