文/侯光輝
在工業(yè)應(yīng)用中,新設(shè)備的開(kāi)發(fā)都需要有說(shuō)服力的理論依據(jù)和足夠的實(shí)驗(yàn)數(shù)據(jù)來(lái)支撐,而實(shí)際開(kāi)發(fā)過(guò)程中會(huì)遇到多樣的困難,這就需要前期的系統(tǒng)仿真,來(lái)驗(yàn)證方案的正確性、可行性以及可能會(huì)存在的風(fēng)險(xiǎn)。本文以串行接口RS-232 為例闡述串行通信的工作過(guò)程。
系統(tǒng)分為上位機(jī)與下位機(jī)兩部分,上位機(jī)是通過(guò)LabVIEW 完成控制命令的下發(fā),以及讀取下位機(jī)回傳的狀態(tài),并顯示在窗口;下位機(jī)為電機(jī)控制系統(tǒng),通過(guò)Proteus 仿真實(shí)現(xiàn),該系統(tǒng)以單片機(jī)AT89S52 為控制器,ULN2003A 為電機(jī)驅(qū)動(dòng)器,完成上位機(jī)命令的接收過(guò)程以及反饋電機(jī)的運(yùn)動(dòng)狀態(tài),系統(tǒng)框架如圖1所示。
表1:串口管腳說(shuō)明
圖1:系統(tǒng)流程示意圖
圖2:串口連線(xiàn)圖
串行接口(Serial Interface)簡(jiǎn)稱(chēng)串口,其傳遞方式為數(shù)據(jù)逐位按順序傳送。根據(jù)信息的傳送方向以及時(shí)間關(guān)系,串行通訊可以進(jìn)一步分為單工、半雙工和全雙工三種。
串行接口按電氣標(biāo)準(zhǔn)及協(xié)議來(lái)分,包括RS-232-C、RS-422、RS485 等。RS-232 為 標(biāo)準(zhǔn)串口,是最常用的一種串行通訊接口,比較常見(jiàn)的為9 芯D 型插座(DB9),信號(hào)管腳如表1所示。RS-422 標(biāo)準(zhǔn)全稱(chēng)是“平衡電壓數(shù)字接口電路的電氣特性”,典型的RS-422 是四線(xiàn)接口,RS-485 與RS-422 相仿。
串行通信連線(xiàn)規(guī)則:數(shù)據(jù)接收針腳與數(shù)據(jù)發(fā)送針腳彼此交叉相連,信號(hào)地對(duì)應(yīng)相接。當(dāng)使用一個(gè)串口時(shí)只需將2 線(xiàn)與3 線(xiàn)連接,可完成自發(fā)自收的過(guò)程,如圖2中a 所示;使用一對(duì)串口時(shí)(包含同一臺(tái)計(jì)算機(jī)或分別在不同計(jì)算機(jī)上),連接方法為2-3 交叉相連,5 線(xiàn)直連,如圖2中b 所示。
圖3:LabVIEW 上位機(jī)界面
圖4:電機(jī)仿真系統(tǒng)
串口通信參數(shù)包含:波特率、數(shù)據(jù)位、停止位和奇偶校驗(yàn)等。其中波特率是衡量符號(hào)傳輸速率的參數(shù),數(shù)據(jù)位是衡量通信中實(shí)際數(shù)據(jù)位的參數(shù),停止位用于表示單個(gè)包的最后一位,奇偶校驗(yàn)位是在串口通信中一種簡(jiǎn)單的檢錯(cuò)方式。
為解決串口資源不足的問(wèn)題,可借助于軟件創(chuàng)建虛擬串口,和實(shí)際的串口工作機(jī)制一致。使用串口測(cè)試工具,測(cè)試串口的通信是否正常時(shí)需要注意以下兩點(diǎn):
(1)通信的對(duì)應(yīng)端口,需要保持其波特率、數(shù)據(jù)位、校驗(yàn)位、停止位、流控制等設(shè)置一致。
(2)通信過(guò)程中,發(fā)送設(shè)置應(yīng)該與顯示設(shè)置保持一致,不然會(huì)出現(xiàn)收發(fā)內(nèi)容不一致的現(xiàn)象。
LabVIEW 是由美國(guó)國(guó)家儀器公司開(kāi)發(fā)的圖形化程序開(kāi)發(fā)平臺(tái)。采用數(shù)據(jù)流編程方式,數(shù)據(jù)流向決定了程序的執(zhí)行順序。LabVIEW通過(guò)VISA 模塊能與大多數(shù)儀器總線(xiàn)連接,包括GPIB、USB、串口、PXI、VXI 和以太網(wǎng)等,因此被廣泛地應(yīng)用于汽車(chē)、航空、半導(dǎo)體、電子設(shè)計(jì)生產(chǎn)、過(guò)程控制和生物醫(yī)學(xué)等各個(gè)領(lǐng)域。
利用LabVIEW 中VISA 模塊中的串口函數(shù),編寫(xiě)串口測(cè)試程序相對(duì)比較簡(jiǎn)單,一般流程為:VISA 配置串口、VISA 寫(xiě)入、VISA 讀取、VISA 關(guān)閉。
上位機(jī)界面如圖3所示,左側(cè)是控制電機(jī)的狀態(tài),右側(cè)是讀取電機(jī)的實(shí)時(shí)狀態(tài)。程序采用雙線(xiàn)程方式,在實(shí)時(shí)讀取下位機(jī)回傳狀態(tài)的同時(shí),滿(mǎn)足電機(jī)設(shè)置狀態(tài)的命令下發(fā)。需要注意的是在數(shù)據(jù)讀取的時(shí)候,需要對(duì)數(shù)據(jù)幀頭進(jìn)行判斷,只有幀頭正確的前提下才能讀取并解析數(shù)據(jù)字節(jié)。
Proteus 軟件是英國(guó)Labcenter Electronics公司出版的EDA 工具軟件。常用于單片機(jī)等數(shù)字電路仿真,在編譯方面,支持IAR、Keil和MPLAB 等多種編譯器。
該仿真系統(tǒng)中以單片機(jī)AT89S52 為核心控制芯片,ULN2003A 為步進(jìn)電機(jī)的驅(qū)動(dòng)芯片,如圖4所示。其中P1 為Proteus 中的串口模塊,芯片AT89S52 由美國(guó)Atmel 公司生產(chǎn)的一款低功耗、高性能的8 位單片機(jī),具有 32個(gè)外部雙向I/O 口,以及全雙工串行口等特點(diǎn)。ULN2003A 是一個(gè)7 路反向器電路,常用于電機(jī)、繼電器、顯示以及照明電路中的驅(qū)動(dòng)部分。
同時(shí)運(yùn)行Proteus 仿真文件與LabVIEW上位機(jī)文件。在上位機(jī)中設(shè)置好圈數(shù)后,點(diǎn)擊“正轉(zhuǎn)”或“反轉(zhuǎn)”,設(shè)置狀態(tài)的命令將會(huì)通過(guò)串口傳遞到下位機(jī),在下位機(jī)中可以看到電機(jī)開(kāi)始運(yùn)轉(zhuǎn),指示燈指示相應(yīng)的狀態(tài),“VIRTUAL TERMINAL”中看到數(shù)據(jù)的傳遞,同時(shí)上位機(jī)的右側(cè)“讀取狀態(tài)”中會(huì)有相應(yīng)的狀態(tài)變化。狀態(tài)的實(shí)際變化與理論上的一致。
本文通過(guò)應(yīng)用LabVIEW編寫(xiě)上位機(jī)軟件,借助串口控制步進(jìn)電機(jī)的過(guò)程,驗(yàn)證工業(yè)中串行通信數(shù)據(jù)交換的傳輸過(guò)程,以及實(shí)現(xiàn)的方法。其中串口的連接部分是通過(guò)虛擬串口,其作用和實(shí)際串口一致。為應(yīng)對(duì)現(xiàn)代化設(shè)備的高速率更新,以及項(xiàng)目前期的快速推進(jìn)提供了一種快捷高效的論證結(jié)果的方法。