新浪博客

S7200SMART建立时间继电器子程序

2020-12-07 17:39阅读:
关于 S7200重复调用子程序的问题 1 子程序中不能有沿指令。
2子程序中变量不能使用TEMP 和Q 只能用IN_OUT 用IN 变量外面使用常数,IN_out不能输入常数。
3 子程序中不能用定时器和计数器
以下的网上官方的说明:
如果使用 LAD 或 FBD 编程,局部存储器的最后四个字节为 STEP 7 Micro/WIN 保留。
如果在 STEP 7 Micro/WIN 中的同一级嵌套里调用多个子程序,那么这些子程序使用相同的局部存储器。
当使用变量类型 OUT 和 TEMP 时,这些局部地址从相同嵌套级别的前一子程序取值。
预先定义的局部变量会生成正确的结果。如果不预先定义,相同嵌套级别的上一次被调用的子程序中的值会被保持。这样会导致问题,特别是在边沿信号检测时。
原因:
当子程序被调用时,局部数据类型 IN 和 TEMP 不被初始化和删除。
但是,局部数据类型 IN 和 IN_OUT 在子程序开始调用时被定义为分配的值或全局变量。
措施:
将局部输出变量定义为 'IN/OUT' ,而不是 'OUT' 或 'TEMP' 可以增加可靠性。在下一个循环选择全局变量做进一步测试。
为了评估这种行为,可以在开发程序时在每一
嵌套级别的网络1中调用子程序。
通过检查程序功能,可以快速发现选错的变量类型。
问题:
对子程序进行多重调用时,在 STEP 7-Micro/WIN 中尤其应当注意哪些问题?

解答:
可以被多次调用的子程序中不能包含任何边沿检测。

在边沿检测中,某个边沿位被置位并在一个程序周期内保持置位状态,直到被再次复位为止。
如果在一个被多次调用的子程序中访问同一个边沿标记,但是却使用不同的信号输入,则程序可能出现无法预料的响应。在任何情况下,您必须预料到这样的一个程序将不能提供期望的功能。
基本原理:如果要在一个主程序中多次调用一个子程序,则该子程序中不能包含任何边沿检测。
S7-200 SMART中断,子程序常见问题
http://www.ad.siemens.com.cn/productportal/Prods/s7-200-smart-portal/200SmartTop/SmartSMS/009.html
在S7-200的子程序中使用局部变量类型 OUT TEMP 时需要注意什么?
https://support.industry.siemens.com/cs/document/7116338
子程序中的边沿检测
https://support.industry.siemens.com/cs/document/7115899

我的更多文章

下载客户端阅读体验更佳

APP专享