博途scl語言提示未編譯
A. 在Step 7使用SCL語言的問題!
SCL語言是類PASCAL語言,並不是C,前些年比較風靡的DELPHI就是採用的PASCAL語言。
另外補充一下對SCL的感受:
1、CASE指令可實現STL的JL指令的功能,使用起來更直觀化,另外支持GOTO跳轉,對於程序實現步進控制同樣很方便。
2、SCL不僅可以在線調試,而且支持變數"參考數據"功能,並且變數符號與絕對地址無一疏漏。
3、對於SCL上升沿下降沿檢測的實現我並不同意4樓所說,同樣只需要像STL、LAD定義一個沿檢測位,
即可輕松實現沿檢測功能,下面舉一上升沿例子:
上升沿檢測原理: IF In AND NOT Mem THEN //沿檢測邏輯
執行語句部分;
END_IF;
Mem:=In;
註:Mem就是我們需要的中間存儲位、 In被檢測的變數
4、另外在西門子介紹SCl時著重強調了幾項功能:
5、SCL同樣支持多重背景調用功能。
6、對於STL能實現的復雜運算功能目前我還沒發現SCL不能支持的,在沒使用SCL之前的我程序基本都是用STL,使用了SCL之後同樣很方便。
具體細節還請翻看編程手冊.
B. 西門子博途SCL語言問題
OUT作為FC105,也就是SCALE的線性整定返回值。
而VAT則表明SCALE函數的執行狀態,相當於ENO。
C. 西門子PLC中,取反指令NOT
賦值的符號為 :=,注意一定要用英文半形的標點符號,變數可以中文變數,先看最簡單的一個觸點控制線圈輸出的語句:
常開觸點控制線圈
常閉觸點用取反指令NOT,其它的和常開觸點一樣
常閉觸點控制線圈
串聯觸點中間用AND或者符號&進行連接
串聯觸點的寫法
串聯中的常閉觸點,別忘了加NOT
一常開一常閉觸點
並聯觸點指令為OR
兩個常開觸點並聯
並聯觸點中用常閉依然要加NOT
一常閉一常開觸點並聯
串聯和並聯的混合輸入,可以加入括弧以區分,不然初學者會傻傻分不清邏輯
串聯和並聯的混合輸入,可以加括弧以區分
除了上面的,還有一種異或運算,符號為XOR,意思是兩個值做異或運算,當兩個值相同時,結果為0,當兩個值不同的,結果為1,與梯形圖比較可以寫成如下所示:
異或運算
SCL語言很簡單,如果有高級語言基礎,基本一天就可以學會,三天精通,五天就可以隨便寫程序了,關鍵在於在堅持。
在TIA博途軟體中,默認支持SCL語言,在建立程序塊時可以直接選擇SCL語言。
SCL語言類似計算機高級語言,如果你有C、Java、C++、Python這種高級語言的學習經歷,再學習SCL就會容易很多。
在用SCL語言編程時,主要用IF...THEN/FOR/WHILE語句去構造條件、循環、判斷這樣的結構,在這些結構中再次添加指令,去實現邏輯判斷。所有程序的編寫都是在純文本的環境下編輯,不像梯形圖那麼直觀。
能把SCL運用的比較靈活的,大多是從IT轉行過來做工控的人。本人就對SCL不太感冒,雖然一直在學習。
1、新建SCL語言功能塊
在TIA博途軟體中能直接建立SCL語言的功能塊,如下圖所示,只需要在語言下拉列表中選擇SCL即可。
新建好程序塊直接打開,會進入SCL的編輯環境,
2、SCL語言指令介紹
介紹指令之前先說一些,高級語言編寫基礎知識。
一行代碼結束後要添加英文分號,表示改行代碼結束。
所有代碼程序都為英文字元,在英文輸入法下輸入字元。
可以添加中文注釋,注釋前先添加雙斜杠,即://。這種注釋方法只能添加行注釋,段注釋要插入一個注釋段。
在SCL中變數需要在雙引號內,定義好變數後軟體能輔助添加。
每種高級語言的編寫都有各自基礎規則,建議大家多了解,不要在基礎知識上犯錯誤。
D. PLC的SCL語言疑問
DB1000.POOL_int[48] := WORD_TO_INT(INT_TO_WORD(DB1000.POOL_int[48] + 1) & 16#7FFF);
INT_TO_WORD(DB1000.POOL_int[48] + 1)將數組中的數據+1,然後數據類型強制轉換為WORD類型。
& 16#7FFF);將上述結果與16進制數據7FFF做與操作,實質就是將最高位置0.
最後將處理的數據轉換為整型保存到[48]數組單元中。
BEGIN作為語句塊的開始,後面跟個分號代表第一句語句為空語句,其等同於
BEGIN
;
SCL語言就是類似於Pascal的語言,其他品牌的PLC中稱作ST語言,因為西門子的語句表叫做STL,為了避免混淆,因此叫做SCL。
E. 博途v15中怎樣把scl程序轉換成lad程序
不是說所有的PLC編程語言都可以互相轉換
不要說SCL了,就算是STL都未必能轉換回去
舉個例子,你用LAD寫一段起保停的程序,然後轉換成STL,刪掉NOP行
這時候程序功能沒有發生任何改變,但是你會發現這段STL無法再轉換回LAD
SCL有點接近C語言的編寫習慣,就像IF語句就特別像,幾乎一樣
他和LAD不能互轉
F. SCL沒有源文件如何生成博途
SCL沒有源文件生成博途方法:
在TIA博途中點擊「項目移植」選項後,再選擇STEP7源項目打開就可以生成博途了。
SCL(Structured Control Language)語言,也就是結構化控制語言,它其實和IEC標准制定的ST語言是一樣的。S7-SCL 可以編譯成 STL, 雖然其代碼量相對於 STL 編程有所增加,但我們更關心的是程序結構和程序的總體效率。
類似於計算機行業的發展,匯編語言已經被舍棄,取而代之的是 C/C++等高級語言。S7-SCL 對工程設計人員要求較高,需要其具有一定的計算機高級語言的知識和編程技巧。
STL是STEP7時代推出的語言,它不是STRUCT TEXT LANGUAGE的縮寫,所以它和ST語言完全沒關系。
STL語言是一種匯編語言,是面向機器底層的語言,可以直接操作寄存器,可讀性不強,和80C51單片機的機器語言是一個層面。所以它是一種低級語言,而ST和SCL都是中高級語言。
SCL源文件支持的文件格式:
S7-SCL 支持如下 STEP7 的塊:OB,FC,FB,DB,UDT。在 S7 程序中,S7-SCL 塊可以與其它STEP7 編程語言生成的塊互相調用。
S7-SCL 可以被編譯成 STL, S7-SCL 生成的塊也可以作為庫文件被其它語言引用。由於 S7-SCL 程序由 ASCII 文本構成,所以它非常容易被導入或導出。
G. 初學西門子PLC的SCL語言編程,在幫助文件中復制了一段SCL語言,編譯後一直提示錯誤,求大神解答
FUNCTION_BLOCK FB20
VAR_INPUT
ENDVAL: INT;
END_VAR
VAR_IN_OUT
IQ1 : REAL;
END_VAR
VAR
INDEX : INT;
END_VAR
VAR_TEMP
CONTROL : BOOL;
END_VAR
BEGIN
CONTROL:=FALSE;
FOR INDEX:= 1 TO ENDVAL DO
IQ1:= IQ1 * 2;
IF IQ1 >10000 THEN
CONTROL = TRUE
END_IF
END_FOR
END