本次主要介紹ST的運算符,賦值方式,程序注釋等。
注:ST程序文必須是半角符,英文數字輸入,如果使用全角或漢字編譯将會報錯!
運算符是ST語言構成的主要部分,運算符指定了如何賦值,四則運算,比較關系,邏輯運算等作出規定,多個運算符在同組執行時,按優先權依次執行。接下來介紹運算符,按優先級别介紹。
一:代入語句
我們首先先了解ST語言的賦值方法,也叫代入語句
代入語句 “ := ” (冒号 等于号),在ST語言的賦值方法
上圖左邊代碼的意思是将X0的狀态賦值給Y0,右邊代碼的意思是将K5傳送級D0。可參考下列梯形圖,進行對比
ST語言常用的賦值方式,将右邊的值賦值給左邊,右邊可以是數值,寄存器,定時器,或者進行四則運算後再賦值都是可以的。
注意:但要求左右二邊最結果的類型必須一緻,如上圖賦值符号的右邊最終運行結果還是為16位,左邊D0也是16位,類型符合,下圖所示就是一個錯誤的示範
賦值符号右邊為位類型,左邊為字類型,賦值二邊類型不一緻,編譯不會通過,所在使用賦值符号時,注意二邊最終結果必須一緻!
二:分組符号 ; ( )
在ST語言需要對程序文進行分組可以使用分号”;”或使用括号“()”,
1)分号應用
分号是作為某一段或一組程序文的結束,代表這一段程序與下一段程序無關。
在上圖編寫了一行代碼,有三組程序,分别給D0,D2,D4進行賦值,使用分号進行分組。也可以使用下圖方法進行分組。看起來是不同的編寫方法,實質上是一樣的,因為編譯器是按分組符号定義,不是按行定義。
有時候因為沒有使用分組符号,那麼有時看起來是二行程序,也可能是一組程序。如下圖所示:
在上圖中,因為第一行代碼沒有使用分組号,編譯器默認認為與下行程序相連接。
2)括号應用
在編寫某些運算時我們希望一些運算優先處理時,可以使用括号進行處理,如:在下圖中默認會先執行D102乘以D104然後将相乘的積加上D100,最後将和賦值給D0。
如果希望先執行D100加D102,然後再乘以D104,則可以使用括号,優先處理括号内運算,參考下圖所示
三:程序注釋
在保證程序可讀性良好,注釋是少不了,ST語言的注釋方法可以參考下圖所示
ST語言的注釋方式就是使用 (* 注釋文 *) 格式,默認會顯示綠色,可以在程序尾部增加注釋,也可以在程序上行增加,或程序下行增加,在程序文中間也是可以,具體參考下圖:
可以對程序分類或分段定義,如下圖所示
運算符是ST語言構成的主要部分,運算符指定了如何賦值,四則運算,比較關系,邏輯運算等作出規定,多個運算符在同組執行時,按優先權依次執行。接下來介紹運算符,按優先級别介紹。
一:( ) 圓括弧式
優先權最高的運算符,在程序中隻要希望優先執行,運算就可以使用圓括弧式。注意必須成對使用,不可以單獨使用,否則編譯不通過。
例:将D100與D102括起來,優先執行D100加D102
二:函數( )
函數的參數列表是第二優先權運算符,程序在同組運算中會執行函數括号内的運算,同樣函數的特号也必須成對使用,不可以單獨使用,否則編譯不通過。函數可以系統自定義或自定義函數。
例:系統自帶的傳送函數(傳送指令)
三:** 指數(幂)
ST語言的指數幂運算符為“ ** ”,為連續二個星符号,可指定底數進行幂運算,一般應用複雜的公式計算。注意幂運算一般為小數類型。
例:指定底數為3,指數為4,進行幂運算
四:NOT 布爾補數(位取反)
在ST語言中沒有常開常閉概念,也就是說梯形圖中的常開觸點與常閉觸點,在ST語言是沒有的,如果想要實現類似功能可以使用位取反運算符NOT。在讀取位狀态之前将位狀态取反後再讀出。
例:将X0的狀态,取反後賦值給Y0,同行等于X0的常閉驅動Y0
五:* (乘) / (除) MOD (餘數)
梯形圖中的乘除用指令MUL與DIV表示,如果是小數另外需要加上EMUL與EDIV。
1) * 乘法
在ST語言使用運算符 * 表示乘法,自動根據自定義的标簽自動進行整數運算或小數運算,如果直接使用軟元件名使用,默認為16位整數運算,如下圖所示:
梯形圖的乘法運算,會存在16位整數乘以16位整數結果是32位整數,在ST語言則不會,如上圖所示,D2乘以K3,結果還是16位整數,然後存至D0中。
注意數據類似必須一緻才能運算,否則編譯不會通過,如下圖所示就是失敗例子,
直接使用D2就是使用16位整數,但E3.3為32位小數,數據類型不一緻,所以編譯不通過,輸出窗口提示:*的類型不一緻
小數乘法在GX Works2 比較麻煩,需要在全局标簽中設置小數類型,然後在程序文中使用标簽進行運算。
例:在全局标簽定義三個小數變量,分别命名為小數1,小數2,小數3,地址分配為D100,D102,D104,然後在程序中将,小數1乘以小數2,結果賦值給小數3,步驟如下圖所示
小數乘法在GX Works3 比較方便,不需要在全局标簽中設置小數類型,可以直接在程序文中直接使用軟元件,參考下圖所示
在軟元件名稱加上冒号然後輸入數據類型,具體定義如下圖所示
以上,歡迎動動手分享及收藏!
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!