電子開發(fā)網(wǎng)

電子開發(fā)網(wǎng)電子設(shè)計 | 電子開發(fā)網(wǎng)Rss 2.0 會員中心 會員注冊
搜索: 您現(xiàn)在的位置: 電子開發(fā)網(wǎng) >> 電子開發(fā) >> plc軟件使用 >> 正文

西門子S7-300 CPU寄存器狀態(tài)字的用法

作者:佚名    文章來源:本站原創(chuàng)    點擊數(shù):    更新時間:2019-12-15
1.引言
    CPU寄存器狀態(tài)字的各位給出了有關(guān)指令狀態(tài)或結(jié)果的信息以及所出現(xiàn)的錯誤,我們可以將二進制邏輯操作狀態(tài)位信號狀態(tài)直接集成到程序中,以控制程序執(zhí)行的流程。
2.狀態(tài)字寄存器
    先簡單介紹一下CPU中狀態(tài)字。
● 首次檢查位:狀態(tài)字的0位稱作首次檢查位,如果/FC 位的信號狀態(tài)為“0”,則表示伴隨著下一條邏輯指令,程序中將開始一個新的邏輯串。FC前面的斜杠表示對FC取反。
● 邏輯運算結(jié)果:狀態(tài)字的第1位為RLO 位(RLO= “邏輯運算結(jié)果”),在二進制邏輯運算中用作暫時存儲位。比如,一串邏輯指令中的某個指令檢查觸點的信號狀態(tài),并根據(jù)布爾邏輯運算規(guī)則將檢查的結(jié)果(狀態(tài)位)與RLO位進行邏輯門運算,然后邏輯運算結(jié)果又存在RLO位中。
● 狀態(tài)位:狀態(tài)位(第2位)用以保存被尋址位的值。狀態(tài)位總是向掃描指令(A,AN,O,…)或?qū)懼噶睿?,S,R,)顯示尋址位的狀態(tài)(對于寫指令,保存的尋址位狀態(tài)是本條寫指令執(zhí)行后的該尋址位的狀態(tài))。
● OR位:在用指令OR執(zhí)行或邏輯操作之前,執(zhí)行與邏輯操作的時候,就需要用到OR這一狀態(tài)位。OR位表示先前執(zhí)行的與邏輯操作產(chǎn)生的值為“1”,于是,邏輯操作或的執(zhí)行結(jié)果就已被確定為“1”。
● OV位:溢出表示算術(shù)或比較指令執(zhí)行時出現(xiàn)了錯誤。根據(jù)所執(zhí)行的算術(shù)或邏輯指令結(jié)果對該位進行設(shè)置。
● OS位:溢出存儲位是與OV位一起被置位的,而且在更新算術(shù)指令之后,它能夠保持這種狀態(tài),也就是說,它的狀態(tài)不會由于下一個算術(shù)指令的結(jié)果而改變。 這樣,即使是在程序的后面部分,也還有機會判斷數(shù)字區(qū)域是否溢出或者指令是否含有無效實數(shù)。OS位只有通過如下這些命令進行復(fù)位:JOS(若OS = 1,則跳轉(zhuǎn))命令,塊調(diào)用和塊結(jié)束命令。
● CC1及CC0位:CC1和CC0(條件代碼)位給出有關(guān)下列結(jié)果的相關(guān)信息:
• 算術(shù)指令結(jié)果
• 比較指令結(jié)果
• 字邏輯指令
• 在移位功能中,移出位相關(guān)信息。
可以用以下指令來檢查條件代碼CC1和CC0。
CC1 CC0 檢查完成后,如果:
0 0 A == 0 結(jié)果 =0 
1 0 A > 0  結(jié)果 > 0
0 1 A < 0  結(jié)果 < 0
● BR位:狀態(tài)字的第8位稱為二進制結(jié)果位。它將字處理程序與位處理聯(lián)系起來,在一段既有位操
    作又有字操作的程序中,用于表示字邏輯是否正確。將BR位加入程序后,無論字操作結(jié)果如何,都不會造成二進制邏輯鏈中斷。在梯形圖的方塊指令中,BR位與ENO位有對應(yīng)關(guān)系,用于表明方塊指令是否被正確執(zhí)行:如果執(zhí)行出現(xiàn)了錯誤,BR位為0,ENO位也為0;如果功能被正確執(zhí)行,BR位為1,
    ENO位也為1。在用戶編寫的FB/FC程序中,應(yīng)該對BR位進行管理,功能塊正確執(zhí)行后,使BR位為1,否則使其為0。使用SAVE指令將RLO存入BR中,從而達到管理BR位目的。
狀態(tài)字的9-15位未使用。
3.具體使用
    下面我們結(jié)合STEP7中的指針編程來具體介紹條件碼CC0/CC0的用法。
    不同的指令在CPU中執(zhí)行時間是不同的。浮點數(shù)比定點數(shù)執(zhí)行時間要長;字邏輯指令比位邏輯指令執(zhí)行時間要長;在某些程序中適當(dāng)使用狀態(tài)字來進行編程可以減少CPU程序的執(zhí)行時間。
例1:比如說要比較一個DB中塊的DBBO-DBB99這100個字節(jié)是正數(shù)是負數(shù)還是0,正數(shù)用1來表示;負數(shù)用-1來表示;0用0來表示。并且將對應(yīng)結(jié)果存入MB200開始的100個字節(jié)中。我們通常的做法可能為:
如果利用條件碼來進行編程,既可以減少程序的大小還會減少一定的指令執(zhí)行時間,我們只需要將
中間的比較程序加以優(yōu)化,即可以達到目的。
   例2:根據(jù)狀態(tài)位C0和CC1的狀態(tài)而跳轉(zhuǎn)的跳轉(zhuǎn)功能指令JZ不改變?nèi)魏螤顟B(tài)位的狀態(tài),而且邏輯操作結(jié)果RLO值也會“隨著”該跳轉(zhuǎn)功能帶到跳轉(zhuǎn)程序段中,供用戶程序其它邏輯操作之用(不改變/FC狀態(tài))。
示例 兩個整數(shù)相減并需進行連續(xù)判斷:
    L MW2
    L MW8
    -I
    JZ ZERO // 如果結(jié)果等于“0”,則跳轉(zhuǎn)至標號ZERO處
             // 結(jié)果不等于“0”時所執(zhí)行的指令
    ZERO:   // 結(jié)果等于“0”時,所要執(zhí)行的指令
  如果用戶不熟悉JZ指令和狀態(tài)位C0和CC1的具體含義,編程時就需要通過比較指令將比較結(jié)果存入一個二進制位中,再根據(jù)這個二進制位通過JC/JCN指令來控制程序的執(zhí)行了。
例3:我們實際應(yīng)用中可能要利用某些協(xié)議轉(zhuǎn)換網(wǎng)關(guān)(比如說Hilscher公司的NTTAP系列網(wǎng)關(guān))來和某些串口協(xié)議的儀表進行通信時,會遇到CRC校驗的問題,關(guān)于CRC校驗時需要判斷溢出位是否為1的問題來進行程序的進一步計算。我們以EURO2408的MODBUS通信時需要的CRC校驗為例說明CRC校驗的步驟:
1、裝載16#FFFF到一個16位CRC寄存器;
2、將CRC寄存器的高8位字節(jié)與信息中的第一個8位字節(jié)相異或,結(jié)果返回到CRC寄存器中;
3、將CRC寄存器數(shù)據(jù)向右移動一位;
4、如果溢出的位等于1,則將CRC寄存器與16#A001相異或,結(jié)果返回到CRC寄存器中;
4、如果溢出的位等于0,則重復(fù)第3步;
5、重復(fù)第3、4步驟,直到已經(jīng)移位了8次;
6、將CRC寄存器的高8位字節(jié)與信息中的下一個8位字節(jié)相異或,結(jié)果返回到CRC寄存器中;
7、重復(fù)第3步到第6步,直到信息中所有字節(jié)都與CRC寄存器相異或,并都移位了8次;
8、最后的CRC寄存器中的結(jié)果即為CRC校驗碼,最后被添加到信息(數(shù)據(jù))的末尾(交換!低8位
在前,高8位在后;)
在第4步中需要判斷溢出的位是否為1,如何判斷對于整個程序有著重要的影響。我們可以用A>0指令來判斷這個條件,具體代碼的編寫,有興趣時大家可以根據(jù)上面的步驟編寫一個自己的CRC程序。
4.結(jié)束語
在一般情況下,我們不必考慮這些狀態(tài)位,但在某些情況下,利用這些狀態(tài)位并結(jié)合一定的指令,可以給我們的編程帶來更大的靈活性,同時對于進一步提高自己的編程水平也有一定的作用。
Tags:西門子plc,寄存器狀態(tài)  
責(zé)任編輯:admin
  • 上一篇文章:
  • 下一篇文章: 沒有了
  • 相關(guān)文章列表
    西門子plc 如何通過整數(shù)運算顯示小數(shù)
    西門子PLC中變量的關(guān)系
    PLC編程中功能塊FB與功能FC的區(qū)別
    西門子plc功能塊圖程序示例
    西門子PLC模擬量問題 EM231/EM235
    西門子plc 水塔水位控制的模擬 梯形圖實例
    STEP 7中操作數(shù)的表示法
    西門子S7-200 PLC在恒溫水箱控制中的應(yīng)用 梯形圖實例
    西門子PLC在三相異步電動機模擬量處理中的應(yīng)用梯形圖實例
    西門子PLC編程之符號的基本概念
    西門子PLC梯形圖的結(jié)構(gòu)特點
    西門子PLC模擬量線性變換子程序的編寫
    西門子PLC的功能塊編制
    西門子PLC功能和功能塊的區(qū)別
    西門子S7200四則運算指令表詳解
    西門子s7 200清除密碼,plc清除密碼
    西門子PLC設(shè)置系統(tǒng)時鐘的兩種方法
    西門子PLC的主要故障表現(xiàn)以及處理辦法
    西門子PLC程序上載出現(xiàn)紅色
    西門子PLC與三菱PLC的區(qū)別
    西門子plc梯形圖中的脈沖定時器
    西門子PLC簡單程序:單按扭實現(xiàn)啟停,單按鈕啟停,CTU
    西門子S7-200PLC自由口與PPI通訊的區(qū)別
    西門子S7-300PLC最為簡單的單按鍵啟停如何寫
    西門子PLC程序的上傳和下載
    西門子plc s7-200怎么和電腦連接編程
    西門子plc進行PID編程方法圖解
    用西門子plc控制多個模擬量輸入信號,該怎么編程?
    NPN和PNP傳感器在西門子PLC中的接線方法
    歐州的PLC產(chǎn)品介紹——世界PLC產(chǎn)品三大流派PLC的分類
    請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
    1分 2分 3分 4分 5分

    還可以輸入 200 個字
    [ 查看全部 ] 網(wǎng)友評論
    關(guān)于我們 - 聯(lián)系我們 - 廣告服務(wù) - 友情鏈接 - 網(wǎng)站地圖 - 版權(quán)聲明 - 在線幫助 - 文章列表
    返回頂部
    刷新頁面
    下到頁底
    晶體管查詢
    玉蒲团2之玉女心经| avtt在线播放| 老太bbwwbbww高潮| 最近更新中文字幕第一电影| 天海翼被施爆两个小时| 国产一区二区精品久久91| 亚洲人成影院77777| 99久久精品免费观看国产| 玩乡下小处雏女免费视频| 成人毛片一区二区| 国产亚洲情侣久久精品| 亚洲av无码一区二区三区不卡| 97久久精品人人澡人人爽| 武则天一边上朝一边做h| 小仙女app2021版最新| 国产69久久精品成人看| 久久伊人精品热在75| 野外三级国产在线观看| 日韩激情视频在线| 国产欧美国产精品第一区| 亚洲国产成人精品无码区二本| 99久无码中文字幕一本久道| 欧美综合第一页| 欧美性狂猛bbbbbxxxxx| 在线视频亚洲一区| 交换韩国伦理片| a级在线观看视频| 欧美日韩视频在线第一区| 国产高清一级伦理| 亚洲精品成人片在线播放| eeuss影影院www在线播放| 色综合综合色综合色综合| 最好的最新中文字幕8| 国产性猛交╳XXX乱大交| 中文字幕乱码人妻综合二区三区 | 久久无码人妻一区二区三区| 成人美女黄网站视频大全| 一边摸一边叫床一边爽| 国内精品久久久久精品| 黑人3p波多野结衣在线观看| 国产交换配偶在线视频|