|
|
<p> 系統(tǒng)的軟件設(shè)計本系統(tǒng)的軟件部分采用面向?qū)ο蟮目梢暬幊陶Z言VC++6.0來實現(xiàn)數(shù)據(jù)的采集、工控機與PLC之間的串口通信以及數(shù)據(jù)的處理和顯示。<p> 數(shù)據(jù)采集的軟件實現(xiàn)對于使用PC-7422A/D和PC-7466D/A進(jìn)行數(shù)據(jù)采集進(jìn)行Windows應(yīng)用程序開發(fā),可以有兩種方法:(1)由用戶自行開發(fā)針對底層硬件的驅(qū)動程序,用戶可以直接對I/O端口進(jìn)行操作,這種方法靈活性大,代碼執(zhí)行效率高,可以充分發(fā)揮硬件的性能,但是要求開發(fā)者具有相當(dāng)高的計算軟、硬件設(shè)計水平;(2)采用通用的開發(fā)環(huán)境(VisualC++、Delphi、C++Builder等),調(diào)用廠家提供的標(biāo)準(zhǔn)動態(tài)鏈接庫文件和第三方制作的ActiveX控件,采用這種方法可以在一定程度上降低程序開發(fā)的難度,在提供較好靈活性的同時,提供比第一種方法更好的移植性。動態(tài)鏈接庫DLL是一種基于Windows的程序模塊。之所以稱為動態(tài),是因為它們在運行期間而不是編譯期間被裝入和鏈接到應(yīng)用程序。PC-7422A/D和PC-7466D/A廠家提供DLL文件,DLL文件中的函數(shù)調(diào)用簡單,讀取信號非常方便。<p> PC-7422A/D卡提供了2個函數(shù):out(por,tch,delay):該函數(shù)用來啟動A/D,ch值表示通道值,delay表示延時時間,Port表示端口地址,每次讀取數(shù)據(jù)前都要先打開通道。in(por,tdelay):該函數(shù)用來讀取現(xiàn)場采集的數(shù)據(jù),每次讀取數(shù)據(jù)時都要用到。<p> PC-7466D/A卡同樣提供了2個函數(shù):out(por,tsendva,ldelay):該函數(shù)用來發(fā)送數(shù)據(jù),Port表示端口地址,sendval表示所要發(fā)送的數(shù)據(jù)的值,delay表示延時時間。in(port,delay):該函數(shù)用來啟動發(fā)送數(shù)據(jù)通道,port表示端口地址。在編程過程中,需要將pc7422.DLL和pc7466.DLL文件復(fù)制到該程序的根目錄下。<p> 工控機與PLC串口通信的實現(xiàn)串行通信是計算機與其他機器之間進(jìn)行通信的一種常見方法,在Windows操作系統(tǒng)中提到了實現(xiàn)各種串行通信的API函數(shù)。通過SC-08編程<a >電纜</a>或FX232AW模塊,可將微型計算機的串行通信口RS-232和PLC的編程口連接起來,這樣微型計算機就可對PLC的RAM區(qū)數(shù)據(jù)進(jìn)行讀、寫操作。根據(jù)PLC本身具有的特性,計算機可對PLC進(jìn)行以下4種類型的操作:(1)位元件或字元件狀態(tài)讀操作(CMD0);(2)位元件或字元件狀態(tài)寫操作(CMD1);(3)位元件強制ON操作(CMD7);(4)位元件強制OFF操作(CMD8)。<p> 在Windows中為實現(xiàn)串口通信,SDK提供了完備的API函數(shù),使編程變得容易。一般說來要完成串口通信,在32位模式下有以下3種常用的編程方法:(1)使用現(xiàn)有的ActiveX控件實現(xiàn),F(xiàn)在一般使用微軟公司的MSComm控件,它是作為一個OCX提供的。(2)以文件方式操作串口。包括用CreateFiIe打開串口,串行口的初始化,利用ReadFiIe和WriteFile對串口進(jìn)行讀寫操作,完成數(shù)據(jù)傳輸過程,關(guān)閉串口等操作步驟。(3)直接嵌入?yún)R編法。這種方法可以在Windows98操作系統(tǒng)下使用,由于Windows98的非完全保護,可以在Windows98系統(tǒng)下使用這種操作方式。利用C/C++匯編嵌入功能,可以直接對串口進(jìn)行操作。<p> 位元件或字元件狀態(tài)讀操作通信格式為:123456STXCMDADDRESSBYTESETXSUM1表示讀命令起始標(biāo)志STX,代碼0X02;2表示位元件或字元件狀態(tài)讀命令CMD0,命令代碼為0X30,3表示讀位元件或字元件的4位起始地址,高位先發(fā),低位后發(fā),且以ASCII碼的形式發(fā)送,4表示一次讀取位元件或字元件的個數(shù);5表示停止位標(biāo)志ETX,代碼為0X03;6表示2位和校驗,和累計為2,3,4項代碼,取其和最低兩位轉(zhuǎn)化成ASCII碼,高位先發(fā),低位后發(fā)。<p> 其他的操作格式都類似。按照流程編寫上位機通信程序。下位機在串口中斷程序里接收上位機的命令。接收數(shù)據(jù)后首先進(jìn)行數(shù)據(jù)的校驗,如果檢測到數(shù)據(jù)有誤,則要求上位機重新發(fā)送數(shù)據(jù),如果數(shù)據(jù)正確,則分析接收的是哪一類命令,并調(diào)用相應(yīng)的子程序進(jìn)行處理。<p> 結(jié)束語經(jīng)過實踐證明,該系統(tǒng)對于節(jié)能燈生產(chǎn)效率與產(chǎn)品質(zhì)量的提高起到了積極的作用,通過該系統(tǒng)監(jiān)控主界面,我們可以非常直觀地觀察到排氣機中每個工位中燈管的狀態(tài),對于設(shè)備當(dāng)中的故障可以及時的發(fā)現(xiàn)。<p> <p>
|
|
|