主線程接收到消息后即調(diào)用writetoport函數(shù)向串口發(fā)送命令,確認命令發(fā)送完畢后把“發(fā)送”事件標記為off,“接收”事件標記為on.同樣道理,監(jiān)視線程監(jiān)測到“接收”事件標記為on時給主線程發(fā)送消息,主線程調(diào)用receivechar(tserialport*port,comstatcomstat)函數(shù)接收plc響應(yīng)代碼。分析結(jié)果在屏幕上顯示。此時,監(jiān)視線程把“發(fā)送”事件標記為on,下一個循環(huán)到來時,監(jiān)視線程向串口發(fā)送命令并接收plc的響應(yīng)代碼。在該系統(tǒng)中,用plc控制變頻器,用計算機監(jiān)控plc.在一個循環(huán)內(nèi),監(jiān)視線程首先檢測有無鼠標點擊指示燈,如有則首先發(fā)送代碼到串口中,使plc相應(yīng)指示燈為on;否則發(fā)送預(yù)定義代碼到串口中,循環(huán)讀取plc各內(nèi)存區(qū)數(shù)據(jù),并在下一個循環(huán)內(nèi)讀取plc響應(yīng)碼,分析后在屏幕上做相應(yīng)顯示。
由于監(jiān)視線程一個循環(huán)內(nèi)的代碼很少且耗時較多的串口處理程序均采用同步處理方式,監(jiān)視線程只需要向主線程發(fā)送消息,不等主線程響應(yīng)就返回,因此循環(huán)周期極短,足以滿足適時控制的要求。利用bbbbbbs的消息處理機制對響應(yīng)結(jié)果進行分析。同時,串口監(jiān)視線程繼續(xù)監(jiān)視串口,主線程繼續(xù)接收用戶輸入并顯示bbbbbbs分析結(jié)果。程序中同樣要對計算機向plc發(fā)送的命令代碼進行校驗,命令格式、校驗規(guī)則及校驗程序同第一種方法。主線程程序框圖,監(jiān)視線程程序框圖如圖4所示。3兩種方法的對比分析在bcb中利用bbbbbbs封裝的api函數(shù)開發(fā)串行通訊程序比較復(fù)雜,它有兩個線程并列運行,可同時處理大量數(shù)據(jù),其準確性高,適時性好,適用于對連續(xù)生產(chǎn)過程中對通訊響應(yīng)要求嚴格、適時性強、數(shù)據(jù)量大的自動化工廠中。而在bcb中利用activex控件開發(fā)的串行通訊程序只適用于小型離散控制系統(tǒng)中,開發(fā)成本較低??偨Y(jié)在計算機與plc的通訊中,有3種方式可以采用,即:中斷方式、查詢方式和事件驅(qū)動方式。應(yīng)用該電路系統(tǒng)已投入運行,經(jīng)考核測試,工作穩(wěn)定可靠。










