http://support.automation.siemens.com/CN/llisapi.dll?func=cslib.csinfo&lang=zh&siteid=cseus&objid=7116338在S7-200的子程序中使用局部變量類型 OUT 和 TEMP 時(shí)需要注意什么?
說明:
S7-200有一類用作臨時(shí)存儲(chǔ)或傳遞形參的局部存儲(chǔ)器。
局部存儲(chǔ)器:
給主程序分配64字節(jié)局部存儲(chǔ)器
給共8級(jí)的每一級(jí)子程序嵌套分配64字節(jié)局部存儲(chǔ)器
給中斷服務(wù)程序分配64字節(jié)局部存儲(chǔ)器
注意:
如果使用 LAD 或 FBD 編程,局部存儲(chǔ)器的最后四個(gè)字節(jié)為 STEP 7 Micro/WIN 保留。
如果在 STEP 7 Micro/WIN 中的同一級(jí)嵌套里調(diào)用多個(gè)子程序,那么這些子程序使用相同的局部存儲(chǔ)器。
當(dāng)使用變量類型 OUT 和 TEMP 時(shí),這些局部地址從相同嵌套級(jí)別的前一子程序取值。
預(yù)先定義的局部變量會(huì)生成正確的結(jié)果。如果不預(yù)先定義,相同嵌套級(jí)別的上一次被調(diào)用的子程序中的值會(huì)被保持。這樣會(huì)導(dǎo)致問題,特別是在邊沿信號(hào)檢測時(shí)。
原因:
當(dāng)子程序被調(diào)用時(shí),局部數(shù)據(jù)類型 IN 和 TEMP 不被初始化和刪除。
但是,局部數(shù)據(jù)類型 IN 和 IN_OUT 在子程序開始調(diào)用時(shí)被定義為分配的值或全局變量。
措施:
將局部輸出變量定義為 "IN/OUT" ,而不是 "OUT" 或 "TEMP" 可以增加可靠性。在下一個(gè)循環(huán)選擇全局變量做進(jìn)一步測試。
為了評(píng)估這種行為,可以在開發(fā)程序時(shí)在每一嵌套級(jí)別的網(wǎng)絡(luò)1中調(diào)用子程序。
通過檢查程序功能,可以快速發(fā)現(xiàn)選錯(cuò)的變量類型。