色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          關 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 設計應用 > 基于VxWorks的MB系列智能可編程控制器設計

          基于VxWorks的MB系列智能可編程控制器設計

          作者: 時間:2009-12-23 來源:網(wǎng)絡 收藏

          (1) 信號量
          信號量是實現(xiàn)任務互斥、同步操作的主要機制,提供的信號量經過了高度優(yōu)化,在所有任務間通信機制中,速度最快。對于互斥,信號量可以上鎖對共享資源的訪問,并且比禁止中斷或禁止搶占提供更精確的互斥粒度。對于同步,信號量可以協(xié)調外部事件與任務的執(zhí)行。
          PLC使用二進制信號量來解決多個任務讀寫數(shù)據(jù)的互斥問題,使用計數(shù)器信號量來解決定時器計數(shù)問題;
          (2) 消息隊列
          消息隊列是提供的單CPU中任務間通信的主要機制。消息隊列允許以FIFO或優(yōu)先級方式排隊消息,消息的數(shù)目可變,消息的長度可變。任何任務都可以向消息隊列發(fā)送消息,也可以從消息隊列接收消息。多個任務允許從一個消息隊列收發(fā)消息。但是,兩個任務間的雙向通信通常需要兩個消息隊列,各自用于一個方向。
          PLC使用消息隊列來實現(xiàn)任務間的數(shù)據(jù)交換。首先調用msgQCreate()函數(shù)創(chuàng)建消息隊列,再用msgQSend()和msgQReceive()函數(shù)發(fā)送和接受消息,最后調用msgQDelete()函數(shù)中止消息隊列。
          3.3 中斷處理程序
          中斷處理程序是實時系統(tǒng)的重要組成部分。系統(tǒng)通過中斷機制了解外部世界,并對外部事件作出響應。實時系統(tǒng)的反應取決于系統(tǒng)對于中斷的響應速度和中斷處理程序的處理速度。由于在很短的時間內,可能產生很多中斷,高優(yōu)先級的中斷將阻塞低優(yōu)先級的中斷,因此,必須使中斷處理程序的處理時間最短。
          PLC的中斷包括秒中斷、分同步中斷、CAN網(wǎng)中斷以及BSP級的以太網(wǎng)中斷、硬盤中斷等等。下面以秒中斷(中斷級別為5)為例說明中斷的使用方法:
          ntConnect(INUM_TO_IVEC(INT_VEC_GET(5)), SECISR, 0);
          sysIntEnablePIC(5);
          這兩個函數(shù)用于將中斷處理程序SECISR()與秒中斷相關聯(lián),存放于中斷向量表的對應表項中,當秒中斷事件出現(xiàn)時,內核將調用中斷處理程序。這時可利用中斷處理程序釋放一個信號量(通過semGive()函數(shù)),通過該信號量驅動相應的數(shù)據(jù)處理模塊(通過sem- Take()函數(shù)),從而實現(xiàn)實時操作。
          此外,我們還使用intLock()函數(shù)和intUnlock()函數(shù)來設置中斷屏蔽,用以保證受保護的代碼在執(zhí)行過程中不受中斷的干擾。
          3.4 網(wǎng)絡通信
          網(wǎng)絡通信一般可通過套接口(socket)實現(xiàn)。Vx- Works提供了標準的BSD socket調用,具有兩種類型:Stream socket(全雙工流類型)、Datagram socket(數(shù)據(jù)報類型)。前者支持TCP協(xié)議,后者支持UDP協(xié)議。任何一個任務都可以打開一或多個socket,其它任務的socket可與之連接。
          客戶端程序首先調用socket()函數(shù)產生用于與各分系統(tǒng)連接的套接字,然后初始化一個套接口結構體,為其賦上服務端的IP地址和端口號,并將其作為函數(shù)connect()的參數(shù),調用connect()函數(shù)主動去連接服務器端。連接成功后,用send()和recv()函數(shù)讀寫數(shù)據(jù),直到全部數(shù)據(jù)都交換完,再用close()函數(shù)關閉套接口。
          服務器端也先用socket()函數(shù)建立套接口,再調用bind()函數(shù)將自身IP和端口號綁定,以保證客戶端正確識別,然后用listen()函數(shù)指明已準備好接受來自客戶端的連接,又用accpet()函數(shù)接受一個連接請求,接受后用send()和recv()函數(shù)來傳輸數(shù)據(jù),直到全部數(shù)據(jù)都交換完,再用close()函數(shù)關閉套接口。為了確保服務器能夠實時接收客戶端的數(shù)據(jù),當服務端與客戶端建立連接之后,必須嵌入循環(huán),利用recv()函數(shù)不斷等待客戶數(shù)據(jù)。同時客戶端每次發(fā)送數(shù)據(jù)之后也應等待服務端回復,建立握手機制。
          3.5 串行口通信
          在VxWorks中,將I/O系統(tǒng)成為任何類型的設備,提供一個簡單、統(tǒng)一、獨立于設備的接口,任何對于串行口的操作仍然可以視為對一個文件的操作,而不必了解關于設備或程序驅動實現(xiàn)的細節(jié)。在使用串口之前利用open()打開相應串口,再用ioctl()設置波特率、數(shù)據(jù)位、停止位、奇偶校驗等屬性,然后依據(jù)串口打開時的讀寫標志,調用函數(shù)write()、read()對串口進行只讀操作、只寫操作或同時進行讀寫操作,最后用close()關閉串口。
          對于串口通信,仍然要關心數(shù)據(jù)接收的實時性。可采用中斷方式,利用VxWorks提供的select()函數(shù)的事件觸發(fā)機制,將讀串口的任務阻塞使其一直等待數(shù)據(jù),當有數(shù)據(jù)來到的時候該任務會立刻自動響應,提高系統(tǒng)的實時性。

          本文引用地址:http://cafeforensic.com/article/163387.htm

          4 結束語
          嵌入式實時操作系統(tǒng)VxWorks及其開發(fā)環(huán)境的引入,大大簡化了軟件的復雜性,縮短了開發(fā)周期,提高了產品的實時性和可靠性。因此,VxWorks RTOS在MB中的應用是成功的。MB作為新一代的PLC產品,相信能在電力、化工、工業(yè)過程控制、城市及樓宇自動化等各種復雜控制領域發(fā)揮更大的優(yōu)勢,使這些行業(yè)的自動化水平得到更大的提高。


          上一頁 1 2 3 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉