秦皇西門子SMART200系列代理商潯之漫 智控技術有限公司 上海詩慕自動化設備有限公司本公司銷售西門子自動化產品,*,質量保證,價格優勢西門子PLC,西門子觸摸屏,西門子數控系統,西門子軟啟動,西門子以太網西門子電機,西門子變頻器,西門子直流調速器,西門子電線電纜我公司大量現貨供應,價格優勢,*,德國*
更新時間:2020-06-18
廠商性質: 總代理商
在線留言秦皇西門子SMART200系列代理商 秦皇西門子SMART200系列代理商
潯之漫 智控技術有限公司 上海詩慕自動化設備有限公司
本公司銷售西門子自動化產品,*,質量保證,價格優勢
西門子PLC,西門子觸摸屏,西門子數控系統,西門子軟啟動,西門子以太網
西門子電機,西門子變頻器,西門子直流調速器,西門子電線電纜
我公司大量現貨供應,價格優勢,*,德國*
西門子S7-300/400比較指令
比較指令用于比較累加器1與累加器2中的數據大?。ㄒ姳?/span>3-7),被比較的兩個數的數據類型應該相同,數據類型可以是整數、雙整數或浮點數(即實數)。如果比較的條件滿足,則RLO為1,否則為0。狀態字的CC0和CC1位用來表示兩個數的大于、小于和等于關系。
比較指令影響狀態字,用指令測試狀態字的有關位,可以得到更多的信息。
整數比較指令用來比較兩個整數字的大小,指令助記符中用I表示整數。
雙整數比較指令用來比較兩個雙字的大小,指令助記符中用D表示雙整數。
浮點數比較指令用來比較兩個浮點數的大小,指令助記符中用R表示浮點數。
表3-7 比較指令
語句表 | 梯形圖 | 描述 |
?I | CMP?I | 比較累加器2和累加器1低字中的整數是否==,<>,>,<,>=,<=,如果條件滿足,RLO=1 |
?D | CMP?D | 比較累加器2和累加器1中的雙整數是否==,<>,>,<,>=,<=,如果條件滿足,RLO=1 |
?R | CMP?R | 比較累加器2和累加器1中的浮點數是否==,<>,>,<,>=,<=,如果條件滿足, RLO=1 |
表3-7中的“?”可以取==、<>、>、<、>=和<=。
下面是比較兩個浮點數的例子:
L MD 4 //MD4中的浮點數裝入累加器1
L 2. 345E+02 //累加器1的值裝入累加器2,浮點數常數裝入累加器1
>R //比較累加器1和累加器2的值
= Q 4.2 //如果MD4>234.5,則Q4.2為1
梯形圖的方框比較指令用來比較兩個同類型的數,與語句表的比較指令類似,可以比較整數(I)、雙整數(D)和浮點數(R)。在使能輸入信號為1時,比較IN1和IN2輸入的兩個操作數。方框比較指令在梯形圖中相當于一個常開觸點,可以與其他觸點串聯和并聯。如果被比較的兩個數滿足指令的大于、等于、小于等條件,比較結果為“真”,等效觸點閉合,指令框才有可能有能流流過。如果圖3-54中I0.6的常開觸點閉合,且MW2<=MW4,Q4.1被置位為1。
圖3-54 比較指令
梯形圖中比較指令框的輸入和輸出均為BOOL變量,可以取I、Q、M、L和D;被比較數IN1和IN2的數據長度與指令有關,可以取整數、雙整數和浮點數。數據類型為I、Q、M、L、D或常數。
1)使用SFC 20“BLKMOV”(塊移動),可將源存儲區的內容復制到目標存儲區。源區域與目標區域不能交叉。下面是使用SFC 20傳送20個字節的例子。
CALL "BLKMOV” //調用SFC 20
SRCBLK :=P#M 54.0 BYTE 20 //源存儲器區
RET_VAL:=MW10 //執行SFC 20出錯時的錯誤代碼
DSTBLK :=P#DB2.DBX0.0 BYTE 20//目標存儲器區
2)使用SFC 21“FILL”,可以將源數據區的數據填充到目標數據區。假設MB20和MB21的值為7和5,執行下面的例程后DB2的DBB30~DBB34的值分別為7、5、7、5和7。源區域與目標區域不能交叉。
CALL "FILL" //調用SFC 21
BVAL :=P#M 20.0 BYTE 2 //源存儲器區
RET_VAL:=MW12 //執行SFC 21出錯時的錯誤代碼
BLK :=P#DB2.DBX30.0 BYTE 5 //目標存儲器區
3) SFC 81“UBLKMOV”(不間斷的塊移動)與SFC 20的功能和使用方法基本上相同,SFC 81的復制操作不會被其他操作系統的任務打斷。
梯形圖的傳送指令(見圖3-53)只有一條MOVE指令,它直接將源數據傳送到目的地址,不需經過累加器中轉。輸入變量和輸出變量可以是8位、16位或32位的基本數據類型。同一條指令的輸入變量和輸出變量的數據類型可以不相同,例如可以將MB0中的數據傳送到MW2。如果將MW4的數據傳送到MB6時,MW4中的數據超過255,只是將MW4的低位字節(MB5)中的數據傳送到MB6,應避免出現這種情況。
被尋址地址中位的編號(0~7),第3~18位為被尋址地址的字節的編號。第24~ 26位(rrr)為被尋址地址的區域標識號(見表3-6),第31位x為0則為區域內的間接尋址,為1則為區域間的間接尋址。
表3-6 區域間寄存器間接尋址的區域標識號
區域標識符 | 存儲區 | 二進制數rrr |
I | 過程映像輸入 | 001 |
Q | 過程映像輸出 | 010 |
M | 位存儲區 | 011 |
DB | 共享數據塊 | 100 |
DI | 背景數據塊 | 101 |
L | 局部數據(L堆棧) | 110 |
V | 上一級賦值的局部數據 | 111 |
如果要用寄存器指針訪問一個字節、字或雙字,必須保證指針的位地址編號為0。
*種地址指針格式包括被尋址數值所在的存儲單元地址的字節編號和位編號,存儲區的類型在指令中給出。這種指針格式適用于在某一存儲區內尋址。第24~26位(rrr)和第31位應為0。下面是區域內間接尋址的例子:
L P#5.0 //將間接尋址的指針裝入累加器1
L AR1 //將累加器l的內容送到地址寄存器1
A M[ AR1,P#2.3] //AR1中的P#5.0加偏移量P#2.3,對M7.3進行操作
= Q[ AR1,P#0.2] //邏輯運算的結果送Q5.2
L DBW[AR1,P#18.0] //將DBW23裝入累加器1
指針常數#P5.0對應的二進制數為2#0000 0000 0000 0000 0000 0000 0010 1000。
第二種地址指針格式的第24~26位還包含了說明數值所在存儲區的存儲區域標識符的編號rrr,這種指針格式用于區域間寄存器間接尋址。下面是區域間間接尋址的例子:
L P#M6.0 //將存儲器位M6.0的雙字地址裝入累加器1
LAR1 //將累加器1的內容送到地址寄存器1
L W[ AR1,P#50.0] //將存儲器字MW56的內容傳送到累加器l
P#M6.0對應的二進制數為2#1000 0011 0000 0000 0000 0000 0011 0000。因為地址指針P#M6.0已經包含有區域信息,使用間接尋址的指令“L W[AR1,P#50]”時沒有必要再使用地址標識符M。