TIA博途SCL編程學(xué)習(xí)35_另類比大小

1?| 題目
定義一個FC或FB,比較兩個數(shù)(雙整數(shù))的大小,只需要判斷出小于或不小于(即大于等于即可)。判斷結(jié)果如果是小于則輸出TRUE,如果是不小于則輸出FALSE,注意不能使用大于、等于和小于運算符,也不能使用IF語句。
2 | 設(shè)計分析
雙整數(shù)的長度為32位,由兩部分組成:一部分是符號,另一部分是數(shù)值。第0位到30位表示數(shù)值。第31位為符號位,表示值的正負(fù)狀態(tài),值為0(FALSE)表示正值,為1(TRUE)表示負(fù)值。利用符號位進行兩個數(shù)的大小比較。
3?| 創(chuàng)建功能或功能塊
添加功能塊FB,命名為:“DIntCompare”。
4 | 定義接口變量
具體接口變量定義見下圖:

輸出變量(Output)是一種非常特殊的變量,建議變量命名時加以區(qū)分,我在命名時加了一個Q。后面有機會的話,可以和朋友們進行深入交流。
5 | 程序代碼
編寫程序代碼。如下圖:

博途SCL提供了訪問數(shù)據(jù)單元某一個位的簡潔方法“%X位號”,即片段訪問。
6 | 代碼測試
在循環(huán)OB中調(diào)用FB- “DIntCompare”,調(diào)用時會自動創(chuàng)建背景數(shù)據(jù)塊,命名為“InstDIntCompare”,本例不使用背景數(shù)據(jù)塊而是使用監(jiān)控與強制表的方式進行監(jiān)視和修改數(shù)據(jù),因為背景數(shù)據(jù)塊監(jiān)視不能進行顯示格式選擇。
轉(zhuǎn)至在線并監(jiān)控程序。如下圖:

999和888比較,999大于888,符號位為0,輸出結(jié)果為FALSE,即不小于。

666和888比較,666小于888,符號位為1,輸出結(jié)果為TRUE,即小于。
7 | 總結(jié)
變量定義時如果定義為臨時變量,在監(jiān)控和強制表中看不到;
片段訪問可以用X訪問位單元、B訪問字節(jié)單元、W訪問字單元、D訪問雙字單元。
西門子 1500 1200 PLC,位訪問, 字節(jié)訪問
訪問byte,word中的位
mybyte.%X1
myword.%X1
訪問word/dword中的byte
myword.%B0
myword.%B1
myDword.%B0
文中mybyte, myword, mydword請?zhí)鎿Q為自己的變量