<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于RT-Linux的嵌入式PLC設計及實(shí)現

基于RT-Linux的嵌入式PLC設計及實(shí)現

作者: 時(shí)間:2007-10-19 來(lái)源:網(wǎng)絡(luò ) 收藏
引言

  在數控機床中, 通常用可編程控制器( ) 對機床開(kāi)關(guān)量信號進(jìn)行控制。可靠性高, 使用方便。但在大多數數控機床, 特別是經(jīng)濟型數控機床中, 要求的輸入輸出點(diǎn)數并不多, 通常在60點(diǎn)以下,因此, 為了降低數控機床成本, 在工業(yè)PC機的數控系統中, 可以采用開(kāi)關(guān)量I/O板加外接繼電器,配合主機的軟件對機床開(kāi)關(guān)進(jìn)行控制。但如果PC機采用單任務(wù)操作系統(如DOS) , 數控系統的所有任務(wù)運行都置于一個(gè)總體的消息循環(huán)中, 軟件的模塊化和可維護性較差, 系統故障的風(fēng)險相對集中, 而且不能充分利用PC機系統資源。而采用非實(shí)時(shí)多任務(wù)操作系統(如Windows) 時(shí), Win32 API的沒(méi)有考慮到實(shí)時(shí)環(huán)境的開(kāi)發(fā)用途, 其系統調用的效率不高,不能滿(mǎn)足數控系統控制的實(shí)時(shí)性要求。

  為此, 本文提出一種RT - Linux操作系統的PLC, 利用RT - Linux的開(kāi)放性、模塊化和可擴展性的系統結構特性和多線(xiàn)程/多任務(wù)的系統環(huán)境,在保證實(shí)時(shí)性的同時(shí), 使故障風(fēng)險相對分散。

  數控系統PLC的硬件結構

  數控系統硬件建立在通用工業(yè)PC的開(kāi)放體系之上, 數控系統PLC硬件包括: 工控機及其外圍設備, ISA總線(xiàn)的開(kāi)關(guān)量輸入輸出接口卡, 光電隔離模塊, 繼電器輸出模塊。其結構如圖1所示。

數控系統嵌入式PLC的硬件結構

  工控機采用RedHatLinux810 + RTLinux311操作系統, 數控系統的人機界面、數控代碼處理、軌跡規劃、參數管理以及PLC控制都通過(guò)工控機由軟件來(lái), 不需要獨立的PLC控制器, 減少了數控系統對硬件的依賴(lài), 有利于提高系統的開(kāi)放性。

  I/O輸入輸出信息通過(guò)PC機I/O接口卡主機與伺服接口模塊和I/O接口模塊之間的信息交換,PC機I/O接口卡基于ISA或者PCI總線(xiàn)。

  RT - Linux的體系結構

  RT - Linux是基于Linux系統并可運行于多種硬件平臺的32位硬實(shí)時(shí)操作系統( hard real - time operating system) 。

它繼承了MERT系統的思想, 即以通用操作系統為基礎, 在同一操作系統中既提供嚴格意義上的實(shí)時(shí)服務(wù), 又提供所有的標準POSIX服務(wù)。RT - Linux源代碼公開(kāi), 易于修改, 使系統成本降低, 源代碼的公開(kāi)使數控系統的開(kāi)發(fā)擺脫了對國外軟件公司的依賴(lài), 有利于提高數控軟件國產(chǎn)化程度。

  RT - Linux是基于Linux并可運行于多種硬件平臺的多任務(wù)實(shí)時(shí)操作系統。通過(guò)修改Linux內核的硬件層, 采用中斷仿真技術(shù), 在內核和硬件之間了一個(gè)小而高效的實(shí)時(shí)內核, 并在實(shí)時(shí)內核的基礎上形成了小型的實(shí)時(shí)系統, 而Linux內核僅作為實(shí)時(shí)系統最低優(yōu)先級的任務(wù)運行。對于普通X86的硬件結構,RT - Linux擁有出色的實(shí)時(shí)性和穩定性, 其最大中斷延遲時(shí)間不超過(guò)15μs, 最大任務(wù)切換誤差不超過(guò)35μs。這些實(shí)時(shí)參數與系統負載無(wú)關(guān), 而取決于計算機的硬件, 如在PII350, 64M內存的普通PC機上,系統最大延遲時(shí)間不超過(guò)1μs。RT - Linux按實(shí)時(shí)性不同分為實(shí)時(shí)域和非實(shí)時(shí)域, 其結構如圖2所示。

RT - Linux的構造結構圖

  實(shí)時(shí)域在上遵循實(shí)時(shí)操作系統的設計原則,即系統具有透明性、模塊化和可擴展性。RT - Linux的實(shí)時(shí)內核由一個(gè)核心部分和多個(gè)可選部分組成, 核心部分只負責高速中斷處理, 支持SMP操作且不會(huì )被底層同步或中斷例程延遲或重入。其它功能則由可動(dòng)態(tài)加載的模塊擴充。RT - Linux把不影響系統實(shí)時(shí)性的操作(即非實(shí)時(shí)域的操作) 都留給了非實(shí)時(shí)的Linux系統完成?;诙嗳蝿?wù)環(huán)境的Linux為軟件開(kāi)發(fā)提供了豐富的系統資源, 如多種進(jìn)程間通訊機制,靈活的內存管理機制。

  嵌入式PLC的設計及實(shí)現

  嵌入式PLC的模塊組成

  數控系統的PLC控制模塊實(shí)時(shí)性要求較高, 因而必須在系統的實(shí)時(shí)域內運行。根據通用數控系統的PLC控制以及數控系統軟件模塊化設計的要求, 將數控系統的PLC控制模塊作為RT - Linux系統的實(shí)時(shí)任務(wù)之一, 其優(yōu)先級和調用周期取決于數控系統各任務(wù)的實(shí)時(shí)性要求以及控制要求的響應時(shí)間。PLC控制模塊主要完成數控系統的邏輯控制, 而被控制的輸入輸出也就是I/O的輸入輸出由PC機I/O接口卡輸入輸出模塊來(lái)完成, 即完成數控系統的PLC控制需要兩個(gè)RT - Linux實(shí)時(shí)任務(wù), 如圖3所示, 這兩個(gè)任務(wù)分別為RT - Task1 (以下稱(chēng)“適配卡輸入輸出”) 、RT - Task2 (以下稱(chēng)“PLC控制”) 。

圖3是基于RT - Linux系統的嵌入式PLC實(shí)時(shí)任務(wù)關(guān)系圖, 其中適配卡輸入輸出主要是完成數控系統的輸入輸出, 即各軸位置控制命令的輸出、I/O的輸出、I/O輸入以及位置反饋輸入, 它實(shí)際上是數控系統控制卡的設備驅動(dòng)模塊, 其優(yōu)先級在數控系統的各實(shí)時(shí)任務(wù)中為最高級。根據其硬件特征以及運動(dòng)控制要求, 其響應周期為100μs, 響應時(shí)鐘周期由PC機I/O接口卡上的硬件定時(shí)器產(chǎn)生。根據RT - Linux系統對硬件中斷的響應機制, 輸入輸出控制任務(wù)的實(shí)時(shí)性是可以保證的, 這一點(diǎn)在我們的數控系統已經(jīng)得到驗證。

基于RT - Linux系統的嵌入式PLC實(shí)時(shí)任務(wù)關(guān)系圖

  圖3中PLC控制主要是完成數控系統的PLC控制功能, 其任務(wù)優(yōu)先級低于適配卡輸入輸出, 同時(shí)也低于數控系統的精插補實(shí)時(shí)任務(wù)和位置伺服實(shí)時(shí)任務(wù)。根據通用數控系統的PLC控制要求, 確定其響應周期為5ms, 響應周期由RT - Linux的軟件定時(shí)器產(chǎn)生, 根據RT - Linux系統的實(shí)時(shí)多任務(wù)調度機制,PLC控制任務(wù)的實(shí)時(shí)性是可以保證的。在實(shí)際應用中也得到驗證。

  嵌入式PLC的實(shí)時(shí)任務(wù)模塊數據通訊

  完成數控系統PLC控制的兩個(gè)實(shí)時(shí)任務(wù)之間由于需要輸入輸出的數據量(一般情況下為64 輸入,64輸出, 但輸入輸出根據需要還可以擴展) 不太大,因而采用共享內存的通訊方式, 在適配卡輸入輸出和PLC控制

兩個(gè)實(shí)時(shí)任務(wù)之間開(kāi)兩塊共享內存, 一塊用于適配卡向PLC控制傳輸I/O 口狀態(tài)信息, 另一塊用于PLC控制向適配卡輸入輸出任務(wù)傳輸經(jīng)PLC邏輯處理后的控制信息。

  在這里, 兩個(gè)實(shí)時(shí)任務(wù)間不采用RT - FIFO進(jìn)行通訊的原因在于這兩個(gè)實(shí)時(shí)任務(wù)間通訊的數據量不是很大, 而這兩個(gè)實(shí)時(shí)任務(wù)運行周期差別較大, 采用RT - FIFO傳輸數據, 為了避免FIFO的阻塞, 相應地要增加兩個(gè)任務(wù)間的協(xié)調機制, 這樣的通訊效果未必比采用共享內存好, 而且共享內存的讀寫(xiě)速度比FIFO相對較快。

  嵌入式PLC的實(shí)時(shí)任務(wù)的實(shí)現

  適配卡輸入輸出為動(dòng)態(tài)可加載模塊, 適配卡輸入輸出模塊(任務(wù)) 以100μs為周期的硬件定時(shí)中斷,完成各軸位置控制指令和I/O的輸出、各軸位置反饋值和I/O的輸入, 適配卡輸出值來(lái)自于位置伺服任務(wù)和PLC控制任務(wù), 輸入值來(lái)自于適配卡的輸入接口。PLC控制模塊(任務(wù)) 同樣也是一個(gè)動(dòng)態(tài)可加載模塊, 它以5ms的軟定時(shí), 周期性地從它與總控模塊通訊的RT - FIFO讀取控制信息(如M指令, S指令及T指令) , 同時(shí)從它與適配卡輸入輸出模塊通訊的共享內存中讀取I/O信息, 然后進(jìn)行邏輯處理, 最后將結果寫(xiě)入共享內存供適配卡輸入輸出模塊讀取并輸出。

  結論

  目前該嵌入式PLC模塊已成功應用于清華大學(xué)精儀系制造工程研究所THHP - III數控系統(基于RedHatLinux8.0 + RTL inux3.1) 中, 該模塊可以滿(mǎn)足對普通數控系統和加工中心PLC控制要求。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>