西門子PLC組織塊與中斷處理是不是很多疑惑?

發(fā)布時(shí)間:2024-02-13
組織塊ob是操作系統(tǒng)與用戶程序之間的接口,組織塊由操作系統(tǒng)調(diào)用,組織塊中的程序是用戶編寫的。s7 plc的組織塊用來創(chuàng)建在特定的時(shí)間執(zhí)行的程序或相應(yīng)特定事件的程序,例如延時(shí)中斷ob、外部硬件中斷ob和錯(cuò)誤中斷ob等。
一、中斷的基本概念
1、中斷過程
中斷處理用來實(shí)現(xiàn)對特殊內(nèi)部事件或外部事件的快速響應(yīng),如果沒有中斷,cpu循環(huán)執(zhí)行組織塊ob1,因?yàn)槌吮尘敖M織塊ob90以外,ob1的中斷優(yōu)先級最低,cpu檢測到中斷源的中斷請求,操作系統(tǒng)在執(zhí)行完當(dāng)前程序的當(dāng)前指令(即斷點(diǎn)處)后,立即響應(yīng)中斷。cpu暫停正在執(zhí)行的程序,調(diào)用中斷源的中斷組織塊ob來處理,執(zhí)行完中斷組織塊后,返回被中斷的程序斷點(diǎn)處繼續(xù)執(zhí)行原來的程序。
有中斷事件發(fā)生時(shí),如果沒有下載相應(yīng)的組織塊,cpu將會進(jìn)入stop模式,即使生成和下載一個(gè)空的組織塊,出現(xiàn)相應(yīng)的中斷事件時(shí),cpu也不會進(jìn)入stop模式。
plc的中斷源可能來自i/o模塊的硬件中斷,或者來自cpu模塊內(nèi)部的軟件中斷,例如時(shí)間中斷、延時(shí)中斷、循環(huán)中斷和編程錯(cuò)誤引起的中斷。
一個(gè)ob的執(zhí)行被另一個(gè)ob中斷時(shí),操作系統(tǒng)對現(xiàn)場進(jìn)行保護(hù),被中斷的ob的局部數(shù)據(jù)壓入l堆棧(局部數(shù)據(jù)堆棧),被中斷的斷點(diǎn)處的現(xiàn)場信息保存在i堆棧(中斷堆棧)和b堆棧(塊堆棧)中。中斷程序不是由邏輯塊調(diào)用,而是在中斷事件發(fā)生時(shí)由操作系統(tǒng)調(diào)用,因?yàn)椴荒茴A(yù)知系統(tǒng)何時(shí)調(diào)用中斷程序,中斷程序不能改寫其他程序中可能正在使用的存儲器,中斷程序應(yīng)盡可能的使用局部變量。編寫中斷程序應(yīng)越短越好,減少中斷程序的執(zhí)行時(shí)間,減少對其他事件處理的延遲,否則可能引起主程序控制的設(shè)備操作異常。
2、組織塊的分類
組織塊只能由操作系統(tǒng)啟動(dòng),它由變量聲明表和用戶編寫的控制程序組成。
(1)啟動(dòng)組織塊:用于系統(tǒng)初始化,cpu上電或操作模式切換到run時(shí),s7-300執(zhí)行ob100,s7-400根據(jù)組態(tài)的啟動(dòng)方式執(zhí)行ob100~ob102中的一個(gè)。
(2)循環(huán)執(zhí)行ob1:需要連續(xù)執(zhí)行的程序放在ob1中,循環(huán)執(zhí)行。
(3)定期執(zhí)行的組織塊:包括時(shí)間中斷組織塊ob10~ob17,和循環(huán)中斷組織塊ob30~ob38,可以根據(jù)設(shè)定的日期時(shí)間或時(shí)間間隔執(zhí)行中斷程序。
(4)事件驅(qū)動(dòng)的組織塊:延時(shí)中斷ob20~ob23在過程事件出現(xiàn)后延時(shí)一定時(shí)間再執(zhí)行中斷程序,硬件中斷ob40~ob47用于需要快速響應(yīng)的過程事件,時(shí)間出現(xiàn)時(shí)馬上中止當(dāng)前正在執(zhí)行的程序,執(zhí)行對應(yīng)的中斷程序。diangon.com版權(quán)所有!異步錯(cuò)誤中斷0b80~ob87和同步錯(cuò)誤中斷ob121、ob122用來決定出現(xiàn)錯(cuò)誤時(shí)系統(tǒng)如何響應(yīng)。
3、中斷的優(yōu)先級:也就是組織塊的優(yōu)先級,如果在執(zhí)行中斷程序(組織塊)時(shí),又檢測到一個(gè)終端請求,cpu將比較兩個(gè)中斷源的中斷優(yōu)先級,如果優(yōu)先級相同,按照產(chǎn)生中斷請求的先后次序進(jìn)行處理。如果后者的優(yōu)先級比正在執(zhí)行的ob的優(yōu)先級高,將中止當(dāng)前的正在處理的ob,
4、對終端的控制:時(shí)間中斷和延時(shí)中斷有專用的允許處理中斷和禁止中斷的系統(tǒng)功能sfc。
sfc39“dis_int”用來禁止中斷和異步錯(cuò)誤處理,可以禁止所有中斷,有選擇的禁用某些優(yōu)先級范圍的中斷,或者只禁止指定的某個(gè)中斷;
sfc40“en_int”用來激活新的中斷和異步錯(cuò)誤處理,激活中斷是指允許處理中斷,做好了在中斷事件出現(xiàn)時(shí)執(zhí)行對應(yīng)的組織塊的準(zhǔn)備。可以全部允許或有選擇的允許。
sfc41“dis_airt”延遲處理比當(dāng)前優(yōu)先級更高的中斷和異步錯(cuò)誤,直到用sfc42允許處理中斷或當(dāng)前ob執(zhí)行完畢,sfc42“en_airt”用來允許立即處理被sfc41暫時(shí)禁止的中斷和異步錯(cuò)誤,sfc41和sfc42配對使用。
5、組織塊的變量聲明表:ob塊是操作系統(tǒng)調(diào)用的,ob沒有背景數(shù)據(jù)塊,也不能為ob聲明輸入、輸出參數(shù)和靜態(tài)變量,所以,ob的變量聲明表中只有臨時(shí)變量,ob的臨時(shí)變量可以是基本數(shù)據(jù)類型、復(fù)雜數(shù)據(jù)類型或數(shù)據(jù)類型any。ob塊包含ob的啟動(dòng)信息的20b的臨時(shí)局部變量temp,這些信息在ob啟動(dòng)時(shí)由操作系統(tǒng)提供,包括啟動(dòng)事件、啟動(dòng)日期和時(shí)間、錯(cuò)誤及診斷事件。聲明表中的變量的具體內(nèi)容與組織塊的類型有關(guān),參見下表
二、啟動(dòng)組織塊
1、cpu的啟動(dòng)模式和啟動(dòng)組織塊
400的cpu有3中啟動(dòng)方式,暖啟動(dòng)、熱啟動(dòng)和冷啟動(dòng),300cpu只能暖啟動(dòng),參見下圖:
用戶可以通過在啟動(dòng)組織塊中編寫程序,用來設(shè)置cpu的初始化操作,例如設(shè)置開始運(yùn)行時(shí)的某些變量的初始值和輸出模塊的初始值等。
1)暖啟動(dòng)過程映像數(shù)據(jù)以及非保持的存儲器位、定時(shí)器和計(jì)數(shù)器被復(fù)位。具有保持功能的存儲器位、定時(shí)器、計(jì)數(shù)器和所有的數(shù)據(jù)塊將保留原數(shù)值,執(zhí)行一個(gè)ob100后,循環(huán)執(zhí)行ob1,將模式選擇開關(guān)從stop切換到run,執(zhí)行一次暖啟動(dòng)。
2)熱啟動(dòng):400cpu在run模式下電源突然丟失,很快又重新上電,將執(zhí)行ob101,自動(dòng)完成熱啟動(dòng),從上次run模式結(jié)束時(shí)程序被中斷之處繼續(xù)執(zhí)行,不對計(jì)數(shù)器等復(fù)位。
3)冷啟動(dòng):所有系統(tǒng)存儲區(qū)均被清除,即復(fù)位為零,包括有保持功能的存儲區(qū)。調(diào)用ob102后循環(huán)執(zhí)行ob1。
2、循環(huán)中斷組織塊
循環(huán)中斷組織塊用于按精確時(shí)間間隔循環(huán)執(zhí)行中斷程序,例如周期性執(zhí)行閉環(huán)控制系統(tǒng)pid控制程序,間隔時(shí)間從cpu從stop切換到run開始計(jì)算。s7-300大多數(shù)只能使用ob35,其余cpu可以實(shí)用的循環(huán)中斷ob的個(gè)數(shù)和cpu型號有關(guān)。時(shí)間間隔不能小于5ms。時(shí)間間隔過短,還沒有執(zhí)行完循環(huán)中斷程序又開始調(diào)用它,將會產(chǎn)生時(shí)間錯(cuò)誤時(shí)間,調(diào)用ob80,如果沒有調(diào)用ob80,cpu將進(jìn)入stop。
舉例說明:
硬件組態(tài)如下:采用cpu315-2dp,雙擊硬件組態(tài)中的cpu,打開屬性對話框,由【周期性中斷】選項(xiàng)卡可知只能使用ob35。
默認(rèn)的循環(huán)周期為100ms,改成1000ms。
ob100程序
用move將mb0的初值置7,即低3位為1,此外用add_i將mw6加1.
ob35程序:每經(jīng)過1000ms,mw2被加1.如下圖
禁止和激活硬件中斷
sfc40“en_irt”和sfc39“dis_irt”分別是激活和禁止中斷和異步錯(cuò)誤的系統(tǒng)功能。參數(shù)mode的數(shù)據(jù)類型為byte,mode為2是激活ob_nr,采用16進(jìn)制數(shù)來設(shè)置。
編寫ob1程序如下:
仿真實(shí)驗(yàn)如下:進(jìn)入run模式后,可以看到mw6的值一直為1,表明只調(diào)用了一次ob100,mb0的低3為被置1,mw2每秒加1.用鼠標(biāo)模擬產(chǎn)生i0.1循環(huán)中斷被禁止,mw2不再加1,用鼠標(biāo)模擬產(chǎn)生i0.0,循環(huán)中斷被激活,mw2又開始加1.
3、時(shí)間中斷組織塊
300cpu只能使用ob10,400cpu可以使用ob10~17,可以設(shè)置在某一個(gè)特定的日期時(shí)間產(chǎn)生一次時(shí)間中斷,也可以設(shè)置從設(shè)定日期時(shí)間開始,周期性的重復(fù)產(chǎn)生中斷,可以用sfc28~sfc30設(shè)置、取消和激活時(shí)間中斷。
1)、基于硬件組態(tài)的時(shí)間中斷
要求在到達(dá)設(shè)置的日期和時(shí)間時(shí),用q4.0自動(dòng)啟動(dòng)某臺設(shè)備。具體如下:
硬件組態(tài):打開cpu屬性中的“時(shí)刻中斷”選項(xiàng)卡,設(shè)置執(zhí)行啟動(dòng)設(shè)備的日期和時(shí)間,執(zhí)行方式為“一次”。
生成ob10,編寫ob10程序如下,設(shè)置時(shí)間到時(shí),將需要啟動(dòng)的設(shè)備對應(yīng)的輸出點(diǎn)置為1:
ob1程序:用i0.0將q4.0復(fù)位
2)用sfc控制時(shí)間中斷
除了在硬件組態(tài)功能中設(shè)置和激活時(shí)間中斷外,也可以在用戶程序中調(diào)用sfc來設(shè)置和激活時(shí)間中斷,
在ob1調(diào)用sfc31來查詢中斷狀態(tài),讀取的狀態(tài)用mw16保存。如下圖。
在i0.0的上升沿調(diào)用sfc28和sfc30分別來設(shè)置和激活時(shí)間中斷ob10。用i0.1調(diào)用sfc29來禁止時(shí)間中斷。各sfc的參數(shù)中的ret_val是執(zhí)行時(shí)可能出現(xiàn)的錯(cuò)誤代碼,為0時(shí)無錯(cuò)誤,ob_nr是組織塊編號,sfc28用來設(shè)置時(shí)間中斷,它的參數(shù)sdt是開始產(chǎn)生中斷的日期和時(shí)間。period用來設(shè)置執(zhí)行方式,w#16#0201表示每分鐘產(chǎn)生一次中斷。
ob10程序如下:將mw2加1.
4、硬件中斷組織塊
ob40~47用于快速響應(yīng)信號模塊、通信模塊和功能模塊的信號變化,具有硬件中斷功能的上述模塊將中斷信號傳送給到cpu時(shí),將觸發(fā)硬件中斷,s7-300只能用ob40。
1)硬件組態(tài)
雙擊di/do模塊,在屬性對話框設(shè)置i0.0上升沿中斷,i0.1下降沿中斷。如下圖所示:
2)編寫ob40程序
判斷是哪個(gè)模塊的哪個(gè)點(diǎn)產(chǎn)生中斷,然后執(zhí)行相應(yīng)的操作。
3)禁止和激活硬件中斷
ob1程序在i0.2的上升沿調(diào)用sfc40激活ob40對應(yīng)的硬件中斷,i0.3的上升沿調(diào)用sfc39禁止ob40對應(yīng)的硬件中斷,sfc的mode為2時(shí),ob_nr為實(shí)參的ob的編號,程序如下:
5、延時(shí)中斷組織塊
plc的普通定時(shí)器的工作和掃描工作方式有關(guān),其定時(shí)精度較差,需要高精度的延時(shí),應(yīng)使用延時(shí)中斷ob,用sfc32啟動(dòng)延時(shí)中斷,延時(shí)時(shí)間1~60000ms,精度為1ms,
硬件組態(tài)
ob40程序:在i0.0的上升沿出發(fā)硬件中斷,cpu調(diào)用ob40,在ob40中調(diào)用sfc32啟動(dòng)延時(shí)中斷,延時(shí)10s,從ld12開始8b臨時(shí)局部變量是調(diào)用ob40的日期時(shí)間,用move指令講起中的后4個(gè)字節(jié)ld16保存到md20中。
10s延時(shí)時(shí)間到,cpu調(diào)用sfc32指定的ob20.在ob20中用move保存調(diào)用ob20的日期時(shí)間的后4個(gè)字節(jié),同時(shí)將q4.0置為,并通過pqb4立即輸出。
用i0.2將q4.0復(fù)位,在ob1調(diào)用sfc34來查詢延時(shí)中斷的狀態(tài)字,查詢結(jié)果用mw8保存,其低字節(jié)為mb9,ob_nr的實(shí)參是延時(shí)中斷ob的編號。ret_val為sfc執(zhí)行時(shí)的錯(cuò)誤代碼,為0時(shí)無錯(cuò)誤。
6、異步錯(cuò)誤組織塊
操作系統(tǒng)可以檢測下列錯(cuò)誤:不正確的cpu功能、操作系統(tǒng)執(zhí)行中的錯(cuò)誤、用戶程序中的錯(cuò)誤、i/o中的錯(cuò)誤。當(dāng)檢測到一個(gè)錯(cuò)誤,將啟動(dòng)相應(yīng)的組織塊如下圖:
用戶可以在組織塊中編程,對發(fā)生的錯(cuò)誤采取相應(yīng)的措施,以減少或消除錯(cuò)誤的影響,若沒有生成或下載處理錯(cuò)誤相應(yīng)的組織塊,當(dāng)出現(xiàn)錯(cuò)誤時(shí)cpu將進(jìn)入stop模式,即使下載一個(gè)空的ob,cpu也不會進(jìn)入stop。
利用系統(tǒng)功能sfc可以屏蔽、延遲或禁止各種ob的啟動(dòng)事件。
上一個(gè):保護(hù)地栽培大櫻桃的樹形改造
下一個(gè):LR2512H-23R050F2,旺詮合金2512 50mΩ ±1% 3W

土壤酸堿度檢測儀了解土壤的酸堿性狀
買賣合同中出賣人的義務(wù)以及合同無效的情形
域名的綁定是什么意思
救磚工具怎么用,oppor9s線刷救磚包怎么用
RTT12751JTP現(xiàn)貨庫存,最新價(jià)格
三級南京電力設(shè)施許可證申請條件有啥?
建筑工程造價(jià)與施工項(xiàng)目成本的控制
全站儀控制測量注意事項(xiàng)有哪些?
vivo手機(jī)怎么截屏
工程制圖筆記本電腦推薦,工程畫圖用什么樣的筆記本比較好
十八禁 网站在线观看免费视频_2020av天堂网_一 级 黄 色 片免费网站_绝顶高潮合集Videos