加工定制是 | 品牌Siemens/西门子 |
型号6ES7214-1AE30-0XB0 | 工作电压24V |
输出频率67kHz | 产品认证ISO90001 |
在s7-200的子程序中使用局部变量类型 out 和 temp 时需要注意什么?
由于本公司产品种类繁多,本产品信息并非一定正确(仅供参考),具体详情请与贵公司咨询:
联系人:张育华(销售工程师)
24小时销售热线:15216866445
电 话:021-31139792
传 真:021-6722 6033
手 机:15216866445
q q : 1287379777
地址:上海市金山区枫湾路500号
西门子(中国)上海代理朕锌电气设备有限公司
文献
涉及产品
说明:
s7-200有一类用作临时存储或传递形参的局部存储器。
局部存储器:
给主程序分配64字节局部存储器
给共8级的每一级子程序嵌套分配64字节局部存储器
给中断服务程序分配64字节局部存储器
注意:
如果使用 lad 或 fbd 编程,局部存储器的***后四个字节为 step 7 micro/win 保留。
如果在 step 7 micro/win 中的同一级嵌套里调用多个子程序,那么这些子程序使用相同的局部存储器。
当使用变量类型 out 和 temp 时,这些局部地址从相同嵌套级别的前一子程序取值。
预先定义的局部变量会生成正确的结果。如果不预先定义,相同嵌套级别的上一次被调用的子程序中的值会被保持。这样会导致问题,特别是在边沿信号检测时。
原因:
当子程序被调用时,局部数据类型 in 和 temp 不被初始化和删除。
但是,局部数据类型 in 和 in_out 在子程序开始调用时被定义为分配的值或全局变量。
措施:
将局部输出变量定义为 "in/out" ,而不是 "out" 或 "temp" 可以增加可靠性。在下一个循环选择全局变量做进一步测试。
为了评估这种行为,可以在开发程序时在每一嵌套级别的网络1中调用子程序。
通过检查程序功能,可以快速发现选错的变量类型。
下载:
下面的项目“local_data”是本主题的 step 7 micro/win 例子程序。
项目说明了当其它子程序在同一嵌套层定义相同本地存储区时选择“out”或“in_out”作为子程序的输出参数的变量类型的区别。
p ( 2 kb )
说明:
更多关于局部存储器和子程序使用方面的信息请参阅 s7-200 系统手册(条目号: 1109582)。