-
1 # 控制研究控
-
2 # 笨澤貓
西門子PLC程式語言有以下五種:梯形圖LAD,功能塊圖FBD,語句表STL,結構控制語言SCL,順序功能圖Graph。下面我們組態演示如何在SCL中置位以及注意事項。
首先,SCL是西門子PLC的結構控制程式語言,在其他的品牌例如三菱PLC中叫ST結構化文字,說法不同,但都是符合IEC61131-3標準的程式語言。西門子SCL是一種跨平臺的語言,可移植性強,語法簡單易學。它是由Pascal計算機語言演變而來。
Simatic Manager中需要安裝獨立的軟體包才能組態SCL程式,而在TIA Portal中預設安裝就有有SCL語言環境。我們以TIA Portal軟體為平臺演示。
第一步,新建一個test1專案如下圖:
第二步,組態好硬體,建立PLC輸入輸出變數如下圖所示:
第三步,在OB1裡建立三段SCL程式(博途支援在梯形圖裡建立SCL程式段,但部分功能可能會受限,例如goto語句,可以在建立塊時選選擇SCL)。第一段程式表示I0.0為1時,Q0.0被置位;第二段程式表示I0.1為1時,Q0.1被置位,而I0.1為0時,Q0.1被複位;第三段程式表示將I0.3的值賦給Q0.3,效果和第二段程式一樣。見下圖:
第四步,啟動模擬並且啟用I0.0為1,I0.1為1,I0.2為1,見下圖:
第五步,開啟監視表,Q0.0,Q0.1,Q0.2都被置位為1,見下圖:
第六步,取消啟用I0.0,I0.1,I0.2,再檢視監視表,會發現Q0.0仍為1,Q0.1和Q0.2都變為0,見下圖:
總結以上可以看出,程式段1中當I0.0為1時,Q0.0被置位為1,如果想當I0.0為0時,Q0.0被複位,就要加else語句,見程式段2所示;如果想當I0.0為0且要滿足其他條件才對Q0.0復位,那就要加elsif或 else if語句。
回覆列表
說一點個人意見:
在西門子PLC中有STL語言和SCL語言,相對於STL語句表程式設計來說SCL語言使用更少,SCL是Structured Control Language的縮寫,也就是結構化控制語言的意思。在西門子PLC中SCL程式設計其實是建立了一個原始檔,然後利用原始檔去生成對應的資料塊,而後在響應的程式塊中呼叫生成後的這個程式!
就你這個問題,在SCL中如何置位其實是很簡單,就是IF 條件A成立 THEN 位B就被置位,這樣一句話就可以了,還是上圖來講一下。這個圖片就是我要生成FC1程式塊的SCL程式的源程式,這個程式編譯之後在STEP7軟體中就會生成一個FC1的程式塊。SCL程式設計是需要單獨的一個安裝元件安裝後集成到STEP7系列軟體中,因今天問題的主旨是SCL中的置位所以,我就不講SCL元件的安裝了。(前一段我寫了一篇文章說如何在STEP7安裝資料夾中找西門子的文件,裡邊我上傳了我安裝的軟體的切圖,不明白的可以去看看,或許你電腦就沒有安裝這個SCL安裝包。)
--總之,這個圖片就是SCL安裝包安裝後開啟才能編輯的一個原始檔編輯器,紅圈①處我定義了FC1的2個輸入點形參,紅圈②處我定義了2個輸出點形參。--當然輸入和輸出都是bool變數。
來看一下原始檔編譯後生成的FC1在OB1中呼叫的情況吧:這個圖片是我組合的圖片,上邊部分可以看到這個專案只有2個程式塊,OB1和FC1,OB1的建立語言就是LAD即梯形圖,FC1的建立語言就是SCL。
圖片的下邊部分是OB1中呼叫FC1兩次,可以看到FC1輸入引數2個是X1和X2,輸出引數是Q1和Q2還有一個返回值。上邊我的SCL中X1對應Q1,X2對應Q2。
再來看一下程式執行的動態圖,來看看Q1是否被置位了?M0.2和M0.3也是和前邊的狀態一樣,不過是第個FC1塊的實參而已,因此他們的動作和前邊的M0.0 M0.1一樣。
想必到這裡你已經知道SCL中置位程式的實現方法了,答題也就結束了。但是,還需要強調的是SCL中的符號, 如分號,冒號的錄入,大家一定要小心,和C語言一樣,如果少錄或者錄錯,都會引起編譯錯誤,我圖上最後是0錯誤和0警告,所以如果要自己實驗的朋友,如果有錯,請和我的圖片仔細對比,謝謝!