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