首頁>Club>
西門子s7-200主程式同時呼叫多個子程式的話,子程式中相同的區域性變數會不會衝突?如何修改區域性變數地址?
6
回覆列表
  • 1 # 看球客

    不知道是否理解了你的問題,所以胡說八道幾句啊!……覺得可以考慮損失點“結構化”的完美,用最”土鱉”的解決方式,考慮程式修改相應“變數”為全域性變數,直接放在主程式中,讓迴圈掃描的執行順序自己去解決“優先順序”的衝突問題吧?

  • 2 # 控制研究控

    對於你這個問題,你已經說是區域性變量了,證明你還是瞭解一些概念!

    其實區域性變數也可以說是內部變數,就是你在子程式這個程式塊中定義的變數,它只在這個子程式塊的內部使用時有效,而在其他地方不能呼叫到這個變數,因此即便2個子程式中都有相同的內部變數名字,他們依然不會衝突!

    比如這個圖片就是西門子200PLC中,我做的一個很簡單的子程式,可以看到我建立了3個bool型的變數和1個int型的變數,他們的地址是L0.0--L0.2,LW1。---這裡的L區其實就是區域性儲存器區域的表示符號!---且這個地址是你建立變數符號和型別後,程式設計軟體根據你建立符號的先後順序自動分配的!

    再來看一個圖片:

    這個圖片我在SBR_1也就是子程式1中再次建立了3個變數,可以看到在SBR_1中地址也是L0.0-L0.2,也就充分說明了區域性變數只在本程式塊內部有效的特點!

    文中的圖片只是用來說明區域性變數的地址關係,所以我建立的全部都是IN型別的變數,實際做程式塊的時候,需要根據子程式塊的實際情況去分配,比如OUT應該建立在OUT型別中!

  • 中秋節和大豐收的關聯?
  • 為什麼頭髮長的比較快?