什么是狀態字?狀態字的作用 ——西門子S7系列PLC
                      2022-02-07  來源:網絡或本站原創

                          狀態字用于表示CPU執行指令時所具有的狀態。一些指令是否執行或以何方式執行可能取決于狀態字中的某些位;執行指令時也可能改變狀態字中的某些位,也能在位邏輯指令或字邏輯指令中訪問并檢測他們。狀態字的結構如下:


                         31……………9     8    7    6    5    4    3     2    1    0

                       

                       

                      BR

                      CC1

                      CC0

                      OS

                      OV

                      OR

                      STA

                      RLO

                      (1)       首位檢測位(

                      狀態字的位0稱為首位檢測位。若位的狀態為0,則表明一個梯形邏輯網絡的開始,或指令為邏輯串的第一條指令。CPU對邏輯串第一條指令的檢測(稱為首位檢測)產生的結果直接保存在狀態字的RLO位中,經過首次檢測存放在RLO中的01被稱為首位檢測結果。位在邏輯串的開始時總是0,在邏輯串指令執行過程中位為1,輸出指令或與邏輯運算有關的轉移指令(表示一個邏輯串結束的指令)將0

                      (2)       邏輯操作結果(RLO

                      狀態字的位1稱為邏輯操作結果RLOResult of Logic Operation)。該位存儲邏輯指令或算術比較指令的結果。在邏輯串中,RLO位的狀態能夠表示有關信號流的信息。RLO的狀態為1,表示有信號流(通);為0,表示無信號流(斷)。可用RLO觸發跳轉指令。

                      (3)       狀態位(STA

                      狀態字的位2稱為狀態位。狀態位不能用指令檢測,它只是在程序測試中被CPU解釋并使用。如果一條指令是對存儲區操作的位邏輯指令,則無論是對該位的讀或寫操作,STA總是與該位的值取得一致;對不訪問存儲區的位邏輯指令來說,STA位沒有意義,此時它總被置為1

                      (4)       或位(OR

                      狀態字的位3稱為或位(OR)。在先邏輯“與”后邏輯“或”的邏輯串中,OR位暫存邏輯“與”的操作結果,以便進行后面的邏輯“或”運算。其它指令將OR位清0

                      (5)       溢出位(OV

                      狀態字的位4稱為溢出位。溢出位被置1,表明一個算術運算或浮點數比較指令執行時出現錯誤(錯誤:溢出、非法操作、不規范格式)。后面的算術運算或浮點數比較指令執行結果正常的話OV位就被清0

                      (6)       溢出狀態保持位(OS

                      狀態字的位5稱為溢出狀態保持位(或稱為存儲溢出位)。OV被置1OS也被置1OV被清0OS仍保持。所以它保存了OV位,可用于指明在先前的一些指令執行中是否產生過錯誤。只有下面的指令才能復位OS位:JOSOS=1時跳轉);塊調用指令和塊結束指令。

                      (7)       條件碼1CC1)和條件碼0CC0

                      狀態字的位7和位6稱為條件碼1和條件碼0。這兩位結合起來用于表示在累加器1中產生的算術運算或邏輯運算結果與0的大小關系;比較指令的執行結果或移位指令的移出位狀態。詳見表4.4.2.1和表4.4.2.2

                      4.4.2.1算術運算后的CC1CC0

                      CCl

                      CCO

                      算術運算

                      無溢出

                      整數算術運算

                      有溢出

                      浮點數算術運算

                      有溢出

                      0

                      0

                      結果=0

                      整數加時產生負范圍溢出

                      平緩下溢

                      0

                      1

                      結果<0

                      乘時負范圍溢出;加、減、取負時正溢出

                      負范圍溢出

                      1

                      0

                      結果>0

                      乘、除時正溢出;加、減時負溢出

                      正范圍溢出

                      1

                      1

                      在除時除數為0

                      非法操作

                      4.4.2.2 比較、移位和循環移位、字邏輯指令后的CC1CC0

                      CCl

                      CCO

                      比較指令

                      移位和循環指令

                      字邏輯指令

                      0

                      0

                      累加器2=累加器1

                      移位=0

                      結果=0

                      0

                      1

                      累加器2<累加器1

                      1

                      0

                      累加器2>累加器1

                      結果≠0

                      1

                      1

                      不規范

                      (只用于浮點數比較)

                      移出位=1

                      (8)       二進制結果位(BR

                      狀態字的位8稱為二進制結果位。它將字處理程序與位處理聯系起來,在一段既有位操作又有字操作的程序中,用于表示字操作結果是否正確(異常)。將BR位加入程序后,無論字操作結果如何,都不會造成二進制邏輯鏈中斷。在LAD的方塊指令中,BR位與ENO有對應關系,用于表明方塊指令是否被正確執行:如果執行出現了錯誤,BR位為0ENO也為0;如果功能被正確執行,BR位為1ENO也為1

                      在用戶編寫的FBFC程序中,必須對BR位進行管理,當功能塊正確運行后使BR位為1,否則使其為0。使用STL指令SAVELAD指令——SAVE),可將RLO存入BR中,從而達到管理BR位的目的。當FBFC執行無錯誤時,使RLO1并存入BR,否則,在BR中存入0

                        

                      广东11选5