寫在面前
大家好,我是李孟宦,號主小智前同事~
傳說程序員之間存在語言鄙視鏈,學彙編語言的站在最頂端,鄙視一切,學C/C++的鄙視JAVA和C#,然後JAVA和C#互相鄙視,其實搞PLC的也有類似鄙視鏈,搞ST或者SCL的鄙視FBD和LAD,對於搞西門子PLC的工程師來說,或許SCL就是高級編程,今天我們就來講講SCL吧~
有很多朋友想學習SCL語言,其實不要把SCL或ST語言想的有多高大上。
首先看下什麼是SCL語言:SCL語言是一種結構化文本,類似於計算機高級語言的編程方式,他的語言規範解決計算機的PASCAL語言。
S7-SCL(Structured Control Language 結構化控制語言) 具有以下特點:
· 1、是一種類似於PASCAL的高級編程語言
· 2、符合國際標準IEC 61131-3
· 3、PLCopen基礎級認證
· 4、適用於 S7-300 (推薦CPU314以上), S7-400,S7-1200,S7-1500, C7 and WinAC
· S7-SCL 爲 PLC 做了優化處理,它不僅僅具有 PLC 典型的元素(例如 輸入/輸出,定時器,計數器,符號表),而且具有高級語言的特性, 例如:循環, 選擇,分支,數組 ,高級函數。
S7-SCL 其非常適合於如下任務:
· * 複雜運算功能
· * 複雜數學函數
· * 數據管理
· * 過程優化
講這些概念的東西是很空洞的,只要瞭解下即可,那麼關鍵問題來了,怎麼學習呢?
我僅僅說下我自己的觀點,剛開始學就是要學習SCL的指令怎麼使用,剛開始的時候我們可以以一些梯形圖實現的功能來用SCL來實現,逐步熟悉SCL基本指令的使用。
本文就一些梯形圖中用的最多的起保停電路來熟悉SCL的條件執行和賦值指令的使用:
我們常見的起保停梯形圖,如下圖所示:
上圖就是典型的梯形圖,當enable信號爲1,同時stop爲0,則start爲1。
那麼用SCL怎麼表示呢:
這個運算表達式是什麼?
(enable 或 start)與stop的非 的運算結果爲TRUE時,則start爲true。
再換個方法理解:就是(enable 或 start)與stop的非的運算結果賦值給start。
在SCL中賦值指令是“:=”,(注意要使用英文),所以上面的表達式寫成SCL指令:
仿真如下:
那麼用IF THEN語句怎麼編寫程序呢?
If then語句是條件執行指令,也就是說如果滿足該條件,則將執行 THEN 後編寫的指令。如果不滿足該條件,則程序將從 END_IF 後的下一條指令開始繼續執行。
在本例的起保停程序是不是可以理解成當enable爲TRUE,將start給置位爲true,當stop爲true則復位start爲false。
因爲在SCL中沒有置位和復位,所以一般用if then條件執行語句來實現置位和復位。
那麼本例的程序用IF THEN 寫成如下程序:
仿真如下:
就是這麼簡單。
對於很多小夥伴會覺得掌握了SCL也許就算工控水平不錯了,但是其實在小編看來,如今的自動化工程師,不掌握一門真正的諸如C++,java,C#等高級語言,不把網絡知識學紮實,那在工業物聯網這一波浪潮真正襲來的時候,措手不及的還是我們自己~
對於想入門的朋友們,請關注今天的下載彩蛋:西門子SCL手冊和官方培訓PPT,具體看下圖
獲取方法見鏈接:如何輕鬆入門西門子 SCL(結構化控制語言) | 附官方教程下載