1樓:匿名使用者
1子程式中是十六個模擬量程式,其中pv用的是vd0這個是什麼意思?雖然位址重複了,但沒理由vw0值寫不進去呀。還要看你這個設值按鈕是怎麼組態的。
2另外ac0在模擬量程式中不同的網路能不能重複使用。你是怎麼用的?3現有流量,壓力,電導率,電阻率要程式設計轉換,輸入都是4-20ma,編寫程式轉換是不是都是一樣?
2樓:匿名使用者
1、樓主,s7200中的記憶體編址規律,務必先搞清楚了,這是非常基礎的問題,在手冊中有圖有文說明;2、樓上,位址重複(重疊),無論是官方還是民間,都不反對使用,是絕對可以這樣做的。前提是你是有目的而且明白結果的,而不是意外。
3樓:匿名使用者
都是通用的,不知道你的子程式是怎麼做的,子程式應該是用區域性變數,然後外部通過引腳輸入實際外設位址。
西門子plc s7-200 主程式和子程式區域性變數佔用相同位址有什麼影響
4樓:網友
他們的影響在於:系統不會自動清除區域性(臨時)區域的內容,因此,當你在於主程式或者子程式中呼叫區域性資料時,如果不遵守以下原則,可能會讀到非正確的資料。
這個原則就是:對於臨時區資料,遵循先賦值,後使用的原則。
5樓:虎嘯
這是兩個空間,不存在影響。不過,區域性變數是系統中暫時儲存資料的地方,就是說主程式佔用的時候,主程式用,子程式佔用的時候,子程式用。兩者不同時使用的。
當你用區域性變數的時候,需要先進行初始化賦值。
西門子s7-200主程式,子程式,中斷程式分別如何理解?高手指點一下
6樓:信仰即吾遁
主程式只有乙個,cpu在執行掃瞄的時候也只掃瞄這個程式,其他程式想要被掃瞄就必須在主程式裡被呼叫。
子程式就是主程式後面的程式,不會被主動呼叫。其他功能和主程式一樣。
中斷程式是乙個功能塊,讓程式掃瞄過程中條件中斷。
求助~~:s7-200主程式裡多次呼叫同乙個子程式時遇到了問題
7樓:廣三春駒璣
我也遇到過類似問題,以個人理解認為是l區域性變數因之前程式呼叫後處於不確定值而導致出錯。解決方法是仔細分析哪些過程量是否需要用於下次程式呼叫,若存在的話,將它設為in_out型別。
8樓:首邵毋小雯
l是臨時變數沒錯,不過,在這個程式中,呼叫是在控制器執行時一直呼叫的,也就是說使用在呼叫這個子程式,這個l不會出現呼叫完成而析構的情況現在我讓裡面的l變數與乙個輸入輸出聯絡起來,兩次呼叫間沒有影響了,只是不知道這是為什麼。
s7-200的乙個模擬量輸入處理程式,放在主程式中可以正常執行而單獨作子程式 被主程式呼叫時,卻沒有用?
9樓:網友
應該是你用的plc版本太老的緣故,用cn版的就不存在這個問題了。老版本對於新的程式設計軟體有些地方不太相容。你把子程式中最後的乙個浮點數求和指令改為先將ac0和求和後賦值給ac0,然後再將ac0 movr給ld2試試。
要是還不行的話,你把第一句指令的lw2也換為ac0。
關於西門子s7-200plc 子程式區域性變數中的out變數和in_out變數區別的例子,我是搞不清
10樓:網友
in 只能是輸入。
temp 中間變數(中間運算存放的值)
out只是輸出(很重要)
in-out可以做輸入也可以做輸出。
以上的是區域性變數的哦,這個就是他們的區別。
打個out的比方:
# 區域性變數in , # 區域性變數out # 區域性變數in-out
ld # (常開指令)
# (輸出指令)
# (輸出指令)
按上面的例子把這些 ### 位置更換一下,更換1ld # (常開指令) 報錯 因為# 區域性變數out, # (輸出指令) 報錯 因為# 區域性變數in,不能它賦值。
# (輸出指令)
這時候程式 第1 和 2列 應該是報錯的,我記得是這樣的,更換2ld # (常開指令) 沒有錯誤 因為#是in-out變數。
# (輸出指令) 報錯 因為# 區域性變數in,不能它賦值。
# (輸出指令)
這時候程式 第2列 應該是報錯的,我記得是這樣的,你可以按照這個做法多試試幾下,你就更明白了!
我軟體沒有安裝沒有辦法給你程式圖。
在s7-200smart子程式中建立乙個帶引數的子程式,為什麼變數表中的符號正常的,程式中就變非法的?
11樓:匿名使用者
通俗的講,就像客房一樣,系統不會打掃乾淨給下乙個租客,所以下乙個租客直接使用的話會有問題。
因此,需要程式設計師遵守這樣一樣原則:臨時變數:先賦值後使用。
12樓:網友
你確定你是在當前子程式的區域性資料區建立並編譯了的?
s7-200 子程式第一次執行時temp型別變數如何清0?
13樓:流星
對於臨時暫存器不用清零,因為後面的子程式會接著用前面子程式用過的臨時暫存器,清零沒有用。
對於臨時暫存器堅持「先賦值再使用」的原則就可以了。
14樓:it與製藥
如果想清零就在後面加上清零的程式就行了、
西門子 s7-200 plc 帶引數子程式問題
15樓:w夢溪
你的程式這樣寫是不嚴謹的,臨時變數的暫態會引起程式的誤動作,這就是你看見程式出錯的緣故。
另外sr指令的運算元位你定義是,所以你取的輸出訊號標誌也是不可取的,你所取得輸入輸出訊號只是sr指令執行質量的檢測。
建議你程式將替換成#輸出(並將型別改為輸出型別(out),去掉線圈指令。
S7 200絕對值如何處理?
處理 step micro win 的標準庫函式中不包磨檔老括對資料值求絕對值 abs 和求負值 neg 的函式,但您可以用可整合的附加指令庫程式設計實現此功能。可以 sign operation 符號處理指令庫,並新增到step micro win 以上版中。sign operation 指令庫說明 ...
西門子s7 200的程式設計軟體怎麼改中文
安裝的時候是英文的 1 安裝完之後你只需要小小的設定就能轉換為中文版本tool option general language工具 選項 常規 語言 網路1網路2。一般一個網路實現一個功能 就是標籤而已 相當於書本的頁碼 註釋就像章節題目一樣 就是方便你快速準確查詢而已,沒別的意義 滿意請及時加分,...
s7 200指令前加是什麼意思比如AC
意思是將ac1變為一個指標。方法如下 輸入一個 和 符號 和需要編址的記憶體位置,將 地址編址 用傳送指令傳給ac1。之後在ac1前面加一個 號,則 ac1裡面儲存的資料為 地址編址 裡面的數值。看個例子 假如有一組資料。vb10 vb11 vb12 vb13裡面存的資料分別為1,5,6,7那麼 1...