寫在前面
傳說程序員之間存在語言鄙視鏈,學(xué)匯編語言的站在最頂端,鄙視一切,學(xué)C/C++的鄙視JAVA和C#,然后JAVA和C#互相鄙視,其實搞PLC的也有類似鄙視鏈,搞ST或者SCL的鄙視FBD和LAD,對于搞西門子PLC的工程師來說,或許SCL就是高級編程,今天我們就來講講SCL吧~
有很多朋友想學(xué)習(xí)SCL語言,其實不要把SCL或ST語言想的有多高大上。
首先看下什么是SCL語言:SCL語言是一種結(jié)構(gòu)化文本,類似于計算機高級語言的編程方式,他的語言規(guī)范解決計算機的語言。
S7-SCL( 結(jié)構(gòu)化控制語言) 具有以下特點:
· 1、是一種類似于的高級編程語言
· 2、符合國際標(biāo)準(zhǔn)IEC 61131-3
· 3、基礎(chǔ)級認(rèn)證
· 4、適用于 S7-300 (推薦以上), S7-400,S7-1200,S7-1500, C7 and WinAC
· S7-SCL 為 PLC 做了優(yōu)化處理,它不僅僅具有 PLC 典型的元素(例如 輸入/輸出,定時器,計數(shù)器,符號表),而且具有高級語言的特性, 例如:循環(huán), 選擇,分支,數(shù)組 ,高級函數(shù)。
S7-SCL 其非常適合于如下任務(wù):
· * 復(fù)雜運算功能
· * 復(fù)雜數(shù)學(xué)函數(shù)
· * 數(shù)據(jù)管理
· * 過程優(yōu)化
講這些概念的東西是很空洞的,只要了解下即可,那么關(guān)鍵問題來了,怎么學(xué)習(xí)呢?
我僅僅說下我自己的觀點,剛開始學(xué)就是要學(xué)習(xí)SCL的指令怎么使用,剛開始的時候我們可以以一些梯形圖實現(xiàn)的功能來用SCL來實現(xiàn),逐步熟悉SCL基本指令的使用。
本文就一些梯形圖中用的最多的起保停電路來熟悉SCL的條件執(zhí)行和賦值指令的使用:
我們常見的起保停梯形圖,如下圖所示:
上圖就是典型的梯形圖,當(dāng)信號為1,同時stop為0,則start為1。
那么用SCL怎么表示呢:
這個運算表達(dá)式是什么?
( 或 start)與stop的非 的運算結(jié)果為TRUE時,則start為true。
再換個方法理解:就是( 或 start)與stop的非的運算結(jié)果賦值給start。
在SCL中賦值指令是“:=”,(注意要使用英文)搞自動化要學(xué)計算機編程語言嗎,所以上面的表達(dá)式寫成SCL指令:
仿真如下:
那么用IF THEN語句怎么編寫程序呢?
If then語句是條件執(zhí)行指令,也就是說如果滿足該條件,則將執(zhí)行 THEN 后編寫的指令。如果不滿足該條件,則程序?qū)? 后的下一條指令開始繼續(xù)執(zhí)行。
在本例的起保停程序是不是可以理解成當(dāng)為TRUE,將start給置位為true,當(dāng)stop為true則復(fù)位start為false。
因為在SCL中沒有置位和復(fù)位,所以一般用if then條件執(zhí)行語句來實現(xiàn)置位和復(fù)位。
那么本例的程序用IF THEN 寫成如下程序:
仿真如下:
就是這么簡單。
對于很多小伙伴會覺得掌握了SCL也許就算工控水平不錯了,但是其實在小編看來,如今的自動化工程師,不掌握一門真正的諸如C++,java,C#等高級語言,不把網(wǎng)絡(luò)知識學(xué)扎實,那在工業(yè)物聯(lián)網(wǎng)這一波浪潮真正襲來的時候,措手不及的還是我們自己~
今天的下載彩蛋是西門子SCL手冊和官方培訓(xùn)PPT,具體看下圖
今天就到這里啦~ 有什么寫的不對的或者需要完善的地方希望各位大佬海涵,如果各位看官喜歡的話,歡迎點擊右下角的“在看”搞自動化要學(xué)計算機編程語言嗎,或轉(zhuǎn)發(fā)和收藏哦。(不要忘記文末彩蛋哦)
往期推薦
智能制造之家
聚焦數(shù)字化制造領(lǐng)域西門子,RA,PTC,達(dá)索,倍福等公司數(shù)字化制造軟硬件,旨在樂于分享,共同進(jìn)步.