技術(shù)文章
軟PLC運(yùn)行系統(tǒng)的任務(wù)劃分及實(shí)現(xiàn)
閱讀:134 發(fā)布時(shí)間:2020-8-123.2軟PLC運(yùn)行系統(tǒng)的任務(wù)劃分及實(shí)現(xiàn)
由2.4節(jié)可知,本軟PLC運(yùn)行系統(tǒng)由通信接口模塊、系統(tǒng)管理模塊、程序執(zhí) 行模塊、存儲(chǔ)模塊和I/O接口模塊五個(gè)模塊組成,每個(gè)模塊用于完成功能。 根據(jù)軟PLC運(yùn)行系統(tǒng)的工作原理對(duì)每個(gè)模塊的任務(wù)進(jìn)行了劃分:
與軟PLC開(kāi)發(fā)系統(tǒng)的通訊任務(wù)、與軟CNC的通訊任務(wù)、與HMI界面的通 訊任務(wù)、普通程序執(zhí)行任務(wù)、快速程序執(zhí)行任務(wù)、用戶程序存儲(chǔ)任務(wù)、指令存儲(chǔ) 任務(wù)、數(shù)據(jù)存儲(chǔ)任務(wù)和I/O讀、寫(xiě)任務(wù)以及系統(tǒng)管理任務(wù),軟PLC運(yùn)行系統(tǒng)任 務(wù)組成如圖3.1所示。
系統(tǒng)管理模塊是軟PLC系統(tǒng)的“控制核心”。軟PLC運(yùn)行系統(tǒng)啟動(dòng)后首先
進(jìn)入系統(tǒng)管理模塊,利用InitialPLCObjectsG函數(shù)定義并初始化PLC全局對(duì)象, 接著創(chuàng)建任務(wù)管理線程JobSchedulerThread和其它任務(wù)線程,在任務(wù)管理線程 JobSchedulerThread調(diào)度下各任務(wù)線程順序執(zhí)行。當(dāng)用戶程序循環(huán)結(jié)束后,系統(tǒng) 管理模塊刪除所有任務(wù)對(duì)象、事件句柄、釋放內(nèi)存空間等計(jì)算機(jī)資源,對(duì)應(yīng)工作 流程如圖3.3所不。
程序執(zhí)行模塊通過(guò)解釋和執(zhí)行PLC指令函數(shù)完成相應(yīng)的邏輯運(yùn)算,分為快 速程序執(zhí)行和普通程序執(zhí)行兩個(gè)子模塊。前者用于處理實(shí)時(shí)性要求較高的信號(hào), 如急停信號(hào)、限位開(kāi)關(guān)信號(hào)等等,執(zhí)行周期5ms;后者則用來(lái)處理一般的循環(huán)掃 描任務(wù),執(zhí)行周期20ms。它們是兩個(gè)獨(dú)立的任務(wù)線程,執(zhí)行指令函數(shù)的流程相 同:先從指令存儲(chǔ)模塊讀取PLC指令、判斷指令類型,接著調(diào)取軟PLC指令函 數(shù)進(jìn)行運(yùn)算,后將運(yùn)算結(jié)果保存在數(shù)據(jù)存儲(chǔ)模塊,然后循環(huán)執(zhí)行指令,當(dāng)執(zhí)行 END指令后退出循環(huán),完成一次用戶掃描程序,執(zhí)行流程如圖3.4所示。
通訊接口模塊是數(shù)控應(yīng)用程序之間通訊的通道,用于軟PLC運(yùn)行系統(tǒng)與開(kāi) 發(fā)系統(tǒng)、軟CNC、人機(jī)界面HMI以及其它第三方程序的數(shù)據(jù)交換。其中軟PLC
運(yùn)行系統(tǒng)與開(kāi)發(fā)系統(tǒng)采用COM^COM方式進(jìn)行通訊,即開(kāi)發(fā)系統(tǒng)作為客戶端向 運(yùn)行系統(tǒng)發(fā)送用戶程序,運(yùn)行系統(tǒng)作為服務(wù)器端接收用戶程序并反饋軟PLC的 運(yùn)行狀態(tài)。
軟PLC運(yùn)行系統(tǒng)與軟CNC、人機(jī)界面HMI是數(shù)控程序中的三個(gè)進(jìn)程,它們 通過(guò)訪問(wèn)軟PLC運(yùn)行系統(tǒng)創(chuàng)建的共享內(nèi)存區(qū)PLC_CNCBuffer、PLC_HMIBuffer 進(jìn)行數(shù)據(jù)交換。由于軟PLC運(yùn)行系統(tǒng)和軟CNC都是運(yùn)行在RTSS環(huán)境下兩個(gè)進(jìn) 程,所以利用RTX提供的IPC (進(jìn)程通訊對(duì)象)可實(shí)現(xiàn)數(shù)據(jù)通訊任務(wù);而人機(jī) 界面HMI是運(yùn)行在Win32環(huán)境下的非實(shí)時(shí)應(yīng)用程序,它與軟PLC運(yùn)行系統(tǒng)是不 同控制內(nèi)核下的兩個(gè)進(jìn)程,由于Win32進(jìn)程優(yōu)先級(jí)低于任何一個(gè)RTX進(jìn)程,所 以在軟PLC運(yùn)行系統(tǒng)啟動(dòng)后人機(jī)界面HMI進(jìn)程無(wú)法獲得CPU資源將數(shù)據(jù)寫(xiě)入 共享內(nèi)存PLC_HMffiuffer,因此需要解決Win32程序與RTX程序CPU資源的 分配問(wèn)題,通常有以下兩種方法:
定時(shí)分配CPU資源
定時(shí)分配CPU資源是一個(gè)事件,一旦觸發(fā)該事件RTX子系統(tǒng)就中斷在 正在運(yùn)行的軟PLC任務(wù)線程,將CPU資源讓給Win32環(huán)境下的應(yīng)用程序,使人 機(jī)界面進(jìn)程將數(shù)據(jù)寫(xiě)入共享內(nèi)存PLC_HMffiuffer中。中斷事件對(duì)象由軟PLC運(yùn) 行系統(tǒng)利用函數(shù)RtCreateEvent〇創(chuàng)建,中斷等待的時(shí)間由用戶設(shè)置。
使用互斥體對(duì)象
互斥體對(duì)象是操作系統(tǒng)內(nèi)核的一種數(shù)據(jù)結(jié)構(gòu),只允許獲得該對(duì)象的任務(wù)線程 訪問(wèn)共享資源。利用互斥這一特性,首先在人機(jī)界面HMI程序中利用函數(shù) RtCreateMutexG創(chuàng)建一個(gè)互斥體對(duì)象,雖然軟PLC運(yùn)行系統(tǒng)的優(yōu)先級(jí)高于人機(jī) 界面HMI進(jìn)程,但軟PLC任務(wù)線程無(wú)法訪問(wèn)共享內(nèi)存PLC_HMIBuffer中數(shù)據(jù), 必須等待HMI線程調(diào)用RtCloseHandleO函數(shù)釋放掉互斥對(duì)象句柄 h_mutexHMIPLC后才能訪問(wèn)該區(qū)域,在等待的這個(gè)時(shí)間片內(nèi)Win32應(yīng)用程序獲 得CPU資源,人機(jī)界面HMI線程將數(shù)據(jù)寫(xiě)入共享內(nèi)存PLC_HMIBuffer,并讀取 軟PLC給人機(jī)界面的數(shù)據(jù),顯示在人機(jī)界面上。
相比較定時(shí)分配CPU資源,使用互斥體對(duì)象等待的時(shí)間由操作系統(tǒng)分配, 占用軟PLC循環(huán)掃描的時(shí)間較少,因此本軟PLC運(yùn)行系統(tǒng)采用互斥體對(duì)象實(shí)現(xiàn) 軟PLC與人機(jī)界面HMI之間的通訊任務(wù)。
由于通訊過(guò)程類似,這里僅以軟PLC運(yùn)行系統(tǒng)與人機(jī)界面HMI的通訊為例 說(shuō)明其執(zhí)行流程,如圖3.5所示。
I/O接口模塊是軟PLC系統(tǒng)與外部I/O輸入輸出模塊進(jìn)行數(shù)據(jù)交換的通道, 用于將I/O輸入輸出模塊采集到的機(jī)床信號(hào)讀入軟PLC輸入映像區(qū),同時(shí)將輸 出映像區(qū)中狀態(tài)輸出給I/O端口。其執(zhí)行過(guò)程分為兩步:第一,根據(jù)軟PLC數(shù) 據(jù)存儲(chǔ)區(qū)中I/O端子分配表與對(duì)應(yīng)物理節(jié)點(diǎn)變量建立映射關(guān)系,完成端口配置; 第二,調(diào)用I/O接口模塊的讀寫(xiě)任務(wù)線程,在輸入刷新和輸出刷新階段完成與外 部I/O輸入輸出模塊的數(shù)據(jù)交換。
軟PLC系統(tǒng)采用SoftSERCANS被動(dòng)式主站卡作為作為數(shù)控系統(tǒng)的接口,所 以I/O輸入輸出模塊先將采集到的數(shù)據(jù)信息存儲(chǔ)在SERCOS I/O從站,由從站向 主站發(fā)送中斷請(qǐng)求,將數(shù)據(jù)包發(fā)送給主站,軟PLCI/0接口模塊通過(guò)讀寫(xiě) SoftSERCANS被動(dòng)式主站卡雙口存儲(chǔ)區(qū)中數(shù)據(jù)與外部I/O模塊進(jìn)行數(shù)據(jù)交換, 本文第四章對(duì)軟PLC控制系統(tǒng)接口進(jìn)行了詳細(xì)的分析,這里只給出它們數(shù)據(jù)傳遞過(guò)程。
存儲(chǔ)模塊存儲(chǔ)了軟PLC運(yùn)行系統(tǒng)中所有的數(shù)據(jù)、操作指令和數(shù)據(jù)地址,可 表示為:存儲(chǔ)模塊=數(shù)據(jù)地址+數(shù)據(jù)+操作指令,因此分為:用戶程序存儲(chǔ) 區(qū)、數(shù)據(jù)存儲(chǔ)區(qū)和指令存儲(chǔ)區(qū)。
在執(zhí)行用戶程序前,程序執(zhí)行模塊將每一個(gè)軟元件的信息存儲(chǔ)到指令鏈表中 供執(zhí)行程序時(shí)調(diào)用。
數(shù)據(jù)存儲(chǔ)區(qū)
數(shù)據(jù)存儲(chǔ)區(qū)保存了所有軟元件的狀態(tài),按照數(shù)據(jù)的來(lái)源分為:輸入映像區(qū)(I)、 輸出映像區(qū)(Q)、軟PLC內(nèi)部存儲(chǔ)區(qū)(R)、定時(shí)器區(qū)(T)、計(jì)數(shù)器區(qū)(A)、本地通訊 存儲(chǔ)區(qū)(L)、HMI通訊存儲(chǔ)區(qū)(P)和CNC通訊存儲(chǔ)區(qū)(C),每個(gè)區(qū)域所包含的信息 見(jiàn)表3.1。
表3.1軟PLC運(yùn)行系統(tǒng)數(shù)據(jù)存儲(chǔ)區(qū) Table 3.1 Data store of SoftPLC running system
|
軟PLC運(yùn)行系統(tǒng)以結(jié)構(gòu)體的形式為每個(gè)存儲(chǔ)區(qū)域分了配內(nèi)存空間,除軟PLC 內(nèi)部存儲(chǔ)區(qū)、輸入映像區(qū)、輸出映像區(qū)外,其余每個(gè)存儲(chǔ)區(qū)域有256個(gè)軟邏輯位供外部的物理元件使用。以本地通訊存儲(chǔ)區(qū)為例,它存儲(chǔ)了軟PLC與Sercos的 通訊數(shù)據(jù)。
(3)指令存儲(chǔ)區(qū)
指令存儲(chǔ)區(qū)存儲(chǔ)了軟PLC系統(tǒng)的全部指令函數(shù),當(dāng)執(zhí)行用戶程序時(shí),系統(tǒng) 從指令庫(kù)中調(diào)取操作函數(shù)完成對(duì)操作數(shù)的運(yùn)算,有關(guān)軟PLC指令的設(shè)計(jì)與實(shí)現(xiàn) 詳見(jiàn)本章第四節(jié)。
本文采摘自“五軸數(shù)控加工中心軟PLC控制系統(tǒng)的研究”,因?yàn)榫庉嬂щy導(dǎo)致有些函數(shù)、表格、圖片、內(nèi)容無(wú)法顯示,有需要者可以在網(wǎng)絡(luò)中查找相關(guān)文章!本文由伯特利數(shù)控整理發(fā)表文章均來(lái)自網(wǎng)絡(luò)僅供學(xué)習(xí)參考,轉(zhuǎn)載請(qǐng)注明!