








摘 要:隨著工業4.0時代到來,智能工廠已成為制造業轉型升級的重要方向。在智能工廠中,環境監測是保障生產安全、提高能效和保障產品質量的重要環節。針對無線通信在智能工廠環境監測應用中存在的信號干擾、傳輸延遲以及安全性不足等缺陷,本文提出了一種采用有線通信方式的解決方案。方案設計硬件電路,采用Proteus仿真與Keil軟件編程相結合的方式,驗證了單片機與計算機之間串行通信技術在智能工廠環境監測領域應用的可行性。
關鍵詞:單片機;串行通信;Proteus仿真;Keil
中圖分類號:TN 92" " " " " " " " " " 文獻標志碼:A
智能工廠環境監測系統需要實時、準確地收集溫度、濕度和氣體濃度等環境數據來預防事故、優化生產流程。在環境數據與電腦的通信過程中,雖然無線通信能夠提供便捷的組網方式,但是在工業現場,電磁干擾、多徑效應等問題可能導致數據傳輸不穩定,甚至丟失關鍵數據。因此,研究有線通信技術在智能工廠環境監測中的應用具有重要意義。在智能工廠中,單片機作為下位機,其數據處理能力高,編程接口靈活,能夠與采集環境數據的各類傳感器連接,實時采集環境數據。將計算機作為上位機進行數據管理,采用串行通信方式與單片機建立穩定的數據傳輸鏈路,完成數據的有線通信傳輸。本文利用Proteus仿真平臺驗證了單片機與計算機串行通信的可行性與有效性,為提升智能工廠環境監測系統的穩定性和可靠性提供了技術支持。
1 串行通信原理
串行通信和并行通信是設備之間信息交換和傳輸的路徑方式。并行通信數據字節的各位用多條傳輸線同時傳送,其特點是傳輸速度快,效率高,控制簡單,但是不適用于長距離傳輸。串行通信將數據字節的各位逐個在一條傳輸線上進行傳送,其特點是傳輸線少,成本低,但是控制比較復雜。隨著計算機技術、通信技術和電子技術的發展,結合智能工廠對傳輸距離和成本的要求,本文使用串行通信[1]。
1.1 串行通信傳輸方式
在串行通信中,數據的發送和接收有3種傳輸方式,分別為單工、半雙工和全雙工,如圖1所示。單工方式(Simplex)表示發送器利用1條傳輸線與接收器進行連接,數據單向傳輸。半雙工方式(Half-duplex)雙向傳輸數據,只有1條傳輸線,不能同時收發數據。全雙工方式(Full-duplex)需要2條傳輸線,向2個不同方向進行數據傳送,可以同時進行數據輸入和輸出[2]。
1.2 串行異步通信格式
按照串行數據時鐘控制方式,串行通信可以分為同步通信和異步通信。同步通信建立發送方時鐘對接收方時鐘的直接控制,使雙方達到完全同步。異步通信是通信的發送與接收設備使用各自的時鐘,兩者時鐘盡可能一致[3]。本文采用異步通信方式進行上位機與下位機通信。
發送器發送的字符數據只能由“0”或者“1”這2種邏輯組成。數據的第一部分為起始位,當空閑狀態為“1”時,發送器發送“0”,表示一個字節數據傳輸開始,即由高電平跳變到低電平。第二部分為數據位,依次從第0位到第7位。第三部分為奇偶校驗位,如果采用奇校驗,那么字符數據位中邏輯“1”的數目為奇數,校驗位為“0”,字符數據位中邏輯“1”的數目為偶數,校驗位為“1”;如果采用偶檢驗,那么相反。第四部分為停止位,表示一個字節數據傳送結束,如果不需要發送數據,那么傳輸線維持邏輯“1”的狀態。從開始位到停止位的時間稱為一幀,也稱幀格式,如圖2所示。
1.3 串行口相關寄存器設置
1.3.1 數據緩沖器(SBUF)
數據緩沖器(Serial Data Buffer,SBUF)是片機內部特殊功能寄存器,包括發送(輸出)和接收2個寄存器。發送SBUF由TXD(P3.1)引腳接出,只能寫入,不能讀出,寫操作格式為SBUF=str[j]。接收SBUF由RXD(P3.0)引腳接出,只能讀出外設傳輸至寄存器的數據,不能寫入,讀操作格式為buf=SBUF。
1.3.2 電源控制寄存器(PCON)
電源控制寄存器(Power Control Register,PCON)的作用是管理單片機的電源,包括進入掉電模式、進入空閑模式以及進行上電復位檢測。當單片機復位時,PCON的8位清零,其位符號定義見表1。串口設置只涉及SMOD位,當SMOD=1時,串行通信方式一、方式二和方式三的波特率加倍,當SMOD=0時,波特率不加倍。
1.3.3 串行口控制寄存器(SCON)
串行口控制寄存器(Serial Control Register,SCON)定義串行口工作方式和收發使能控制,其位符號定義見表2。
REN為接收允許使能端,由軟件置位或清零,當其值為1時允許接收,當其值為0時禁止接收。TI為發送中斷標志位,一幀數據發送結束后由硬件置位,可以采用軟件查詢方式獲得置位信息,也可以采用中斷方式發送下一個數據,但是必須由軟件清零。RI為接收中斷標志位,一幀數據接收完成后由硬件置位,可以采用查詢或中斷方式獲得置位信息,但是也必須由軟件清零。SM0、SM1為工作方式選擇位,串行口工作方式見表3。
方式0為8位同步移位寄存器輸入/輸出方式,不用于通信,只用來擴展I/O口,波特率固定為fosc/12。
方式一為波特率可調的10位異步通信,能夠用于單片機與單片機或單片機與計算機之間進行通信,本文采用該方式進行單片機與計算機之間的串行異步通信。當串口工作在發送狀態時,數據由TXD端輸出,接入MAX487的DI輸入端,一幀數據由10位組成,包括1個起始位、8個數據位和1個停止位,先發送D0位,再發送D7位,當單片機執行寫操作時,啟動發送;當串口工作在接收狀態時,REN=1,允許接收,RXD接入MAX487的RO輸出端,單片機采樣RXD引腳數據,執行讀操作,當包括停止位的一幀數據接收完成后,RI=1由硬件置位,等待下一幀數據。
1.4 RS485總線標準
智能工廠使用單片機作為下位機對外部環境進行數據采集,根據RS485總線標準與計算機(上位機)之間進行半雙工異步通信,設通信距離為1 200 m,最大傳輸速率為10 Mbit/s。利用差動信號進行傳輸,當邏輯為“1”時,A端與B端差分電壓為+2 V~+6 V;當邏輯為“0”時,A端與B端差分電壓為-6 V~-2 V。485總線電平與單片機的TTL電平不兼容,如果要進行總線通信,那么需要電平轉換芯片,本文采用MAX487芯片實現該功能。MAX487芯片是一款低功耗收發器,內部有接收器和發送器。由于采用半雙工通信,在同一個時刻只能接收或發送,因此將RE和DE接單片機的一個引腳作為使能端,當引腳電平為0時,MAX487為接收器;當引腳電平為1時,MAX487為發送器。RO為MAX487芯片作為接收器的輸出端,與單片機的RXD相連,此時單片機讀取PC發送的信息。DI為MAX487芯片作為發送器的輸入端,與單片機的TXD相連,此時單片機寫入信息至PC機。單片機與MAX487芯片連接如圖3所示。
2 系統設計
2.1 系統架構
本文設計一個以單片機為核心,集成多種環境檢測傳感器的智能工廠環境監控系統,能夠實時監測并傳輸關鍵環境參數至計算機,進行進一步分析與管理。系統框架包括STC89C52RC單片機控制模塊、傳感器數據采集模塊以及RS485通信模塊。在仿真過程中,傳感器使用矩陣鍵盤按鍵的鍵值代替檢測,模擬智能工廠環境檢測與上位機進行RS485通信。智能工廠環境檢測系統框如圖4所示。
2.2 程序編寫
2.2.1 波特率設置
在串行通信中,波特率為收發雙方傳送數據的速度,即串行端口每秒傳輸的波特位數。在串行口4種工作方式中,方式0和方式二波特率固定,方式一和方式三的波特率是可變的,將定時器T1作為波特率的發生器,其值由SMOD和T1的溢出速率決定,計算過程如公式(1)所示。
(1)
本文設T1的溢出速率為(fosc/12)/(256-X),晶振為11.059 2 MHz,SMOD為0,波特率為9 600 B。T1的初值X為253,轉換為十六進制即0xFD,T1的初值為0xFD。
2.2.2 串行口初始化程序
當進行串行操作時,須對單片機的串行口進行一些必要的初始化設置。具體操作步驟如下。1)確定定時器的工作方式,設置TMOD寄存器,TMOD為0x20,T1的工作方式為方式二。TL1為計算值,TH1為自動重裝值,當定時器溢出時,TH1的值會自動裝載至TL1,再重新計數。2)計算T1的初值,裝載TH1和TL1,得到TH1=0xFD,TL1=0xFD。3)啟動定時器T1,設置TCON的TR1位,此時,TR1=1為啟動定時器。4)確定串行口,設置SCON寄存器,REN=1,允許接收,SM0=0,SM1=1,串行口的工作方式為方式一。5)采用查詢或中斷方式查看串行口工作過程,如果使用中斷方式,那么需要設置IE或IP寄存器。
串行口初始化函數為uart_int( ),具體設置如下。
void uart_int( )
{
TMOD=0x20;
TH1=0xFD;
TL1=0xFD;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
}
2.2.3 發送和接收程序
通常采用查詢和中斷方式設計串行口發送和接收工作過程程序。本文采用查詢方式查詢SCON的TI位是否為1。在串行口中斷程序中進行數據接收,接收完成后,軟件將RI清零。接收和發送程序如下[4]。
void UART_SendString(unsigned char * j)
{
unsigned char j=0;
while(str[j] != '\0')
{
UART_SendByte(str[j]);
j++;
}
}
void UART_Routine(void) interrupt 4
{
if(RI==1)
{
RI=0;
buf=SBUF;
LED=0;
P20=1;
P21=0;
}
}
3 系統驗證
3.1 仿真電路搭建
智能工廠環境監控系統的Proteus軟件仿真包括STC89C52RC
單片機、矩陣鍵盤、COMPIM組件以及MAX487芯片。使用虛擬終端查看發送的數據,智能工廠環境檢測仿真如圖5所示。
3.2 建立串口通信
利用VSPD軟件建立com1和com2虛擬串口對,com1為Proteus仿真軟件中COMPIM模塊的串口,com2為串口調試助手的串口號,將單片機和計算機進行串行通信。按照本文的程序設計要求以及串行通信的格式要求,設置COMPIM模塊和串口調試助手的參數:波特率為9 600 B,無奇偶校驗位,數據位8位,停止位1位[5]。
3.3 仿真結果分析
開啟仿真,LED小燈熄滅,在串口調試助手的發送區發送“系統開始檢測”,LED小燈點亮,說明計算機向單片機發送數據成功,同時虛擬終端顯示發送的數據。當按下矩陣鍵盤時,在串口調試助手的接收區顯示鍵值代表傳感器檢測數據,說明單片機向計算機發送數據成功。仿真結果表明,系統可以在計算機和單片機之間進行RS485串行通信。
4 結語
本文利用Proteus軟件進行仿真,完成上位機與下位機的RS485通信。上位機開啟系統檢測,下位機利用傳感器檢測環境并上傳至上位機,顯示在上位機的接收緩沖區。雙機之間完成串行異步通信,驗證了單片機與計算機之間的RS485通信的可行性。
參考文獻
[1]楊敬娜,董軍剛,陳亮.單片機技術應用與實踐[M].北京:中國人民大學出版社,2022.
[2]周正鼎.單片機應用與調試項目教程(C語言版)[M].北京:機械工業出版社,2011.
[3]聶章龍.STC系列單片機項目實踐[M].北京:機械工業出版社,2017.
[4]程建國,葉勁龍,李輝,等.基于單片機的串口模擬設計與實現[J].電工技術,2024(10):164-165,169.
[5]王向玲,石曉玲.單片機實踐教學中串行通信電路的設計及仿真[J].呂梁學院學報,2022,12(2):30-33.