章信華 嵇建波 龐前娟
摘要:為了解決船用多缸油泵試驗臺能同時使用4個稱重模塊的問題,設計了一種串口服務器。該串口服務器以STM32芯片做為主控芯片,左邊連接PLC,右邊連接4個稱重模塊,起到通信中介的作用;對整個設計的幾個關鍵點進行了詳細介紹,包括整體框架、硬件設計和軟件通信報文設計等;該模塊的硬件設計成本低,自定義的軟件通信報文簡單,最后對模塊進行實物制作,并進行了測試。測試結果表明,所設計的串口服務器,能夠同時返回4個稱重模塊測量的重量值,并能夠穩定運行。
關鍵詞:船用多缸油泵試驗臺;串口服務器;稱重模塊
中圖分類號:TP368.5 文獻標志碼:A 文章編號:1009—9492f2021)03—0139—03
0引言
噴油泵好比柴油機的心臟,其性能的好壞直接影響到柴油機的工作性能。為了提高測試效率,需要設計可以同時測試多個噴油泵的試驗臺,該試驗臺需要多個具有RS-232串口的稱重模塊。現有的多缸油泵試驗臺都是直接在試驗臺的控制器PLC上連接稱重模塊,但PLC最多可以掛載3個RS-232串口模塊,且每個串口模塊的價格高昂,單個模塊超過上千元,3個模塊總計3千多元,故這種方案的經濟性和擴展性都是不可取的。為了解決該問題,本文提出了一種新的解決方案,該解決方案的目標是使船用多缸油泵試驗臺能同時使用4個稱重模塊,且要求成本低廉。本文設計了一種串口服務器,該串口服務器擁有5個RS-232串口接口,左邊1個接口和PLC連接,右邊4個接口分別和4個稱重模塊連接,起到了一個通信中介的作用,其接收PLC發送的報文,并轉發給4個稱重模塊;同時也接收4個稱重模塊發送的報文,經過處理后,再轉發給PLC,相當于是PLC和4個稱重模塊的通信中樞。此外該串口服務器主要由STM32芯片外加幾個電平轉換芯片構成,其結構簡單,成本較低,硬件成本只需20元左右,滿足了經濟性的要求。串口雖然是一種很常用的通信端口,但通過查閱大量的國內外文獻發現,在船用多缸油泵試驗臺中從未使用過串口服務器,本文是首次使用。
1整體框架
在整個試驗臺中,串口服務器的左邊通過1根RS-232串口線接西門子S1200型PLC模塊,右邊通過4根串口線,分別和4個梅特勒一托利多WKE2002型稱重模塊相連,串口服務器起到中介的作用。整個串口服務器的整體框架如圖1所示,從圖中可以看出,需要5個串口即可滿足4缸油泵試驗臺的需求。
2硬件設計
通過上文分析可知,該串口服務器在硬件上只需要5個RS-232串口即可滿足要求。為了滿足這個要求,最重要的是選擇合適的主控芯片。
2.1主控芯片
經過選型,主控芯片采用STM32F103RCT6芯片,該芯片基于Cortex-M3的內核,Cortex-M3是一個32位處理器內核,采用了哈佛結構,擁有獨立的指令總線和數據總線,可以讓取指與數據訪問并行。該芯片內置了3個通用同步,異步收發器(USART1、USART2和USART3),和2個通用異步收發器(UART4和UART5)。這5個串口都可以提供異步通信、支持IrDA SIR ENDEC傳輸編解碼、多處理器通信模式、單線半雙工通信模式和LIN主/從功能。USART1接口通信速率可達4.5MB/s,其他接口的通信速率可達2.25 MB/s。圖2所示為該芯片的所有硬件資源,圖中標出了該芯片含有5個通用異步收發器,即提供5個RS-232串口,可以同時連接一個PLC和4個稱重模塊,用于4缸油泵試驗臺。
2.2電平轉換
由于STM32F103RCT6芯片的電平是TTL電平,而RS-232串口通信的電平是RS-232電平,無法直接連接,故需要進行電平轉換。本文采用的是MAX232芯片,MAX232芯片是美信(MAXIM)公司專為RS-232標準串口設計的單電源電平轉換芯片,使用+5V單電源供電,符合所有的RS-232C技術標準,只需要單一+5V電源供電,片載電荷泵具有升壓、電壓極性反轉能力,能夠產生+10V和-10V電壓,功耗低,典型供電電流5mA,內部集成2個RS-232C驅動器,高集成度,片外最低只需4個電容即可工作,內部集成2個RS-232C接收器,由于需要5個串口,故只需要3個MAX232芯片。圖3所示為該芯片的硬件結構。
2.3連接端子
為了方便PLC、串口服務器、稱重模塊串口之間的連接,在串口服務器上使用了DB9型端子,DB9型端子可以保證這些模塊在相互連接的時候,既方便又可靠,是一種使用非常頻繁的接頭。由于一共有5個串口,故一共需要5個DB9型端子。圖4所示為DB9端子的實物圖。
3軟件設計
根據梅特勒一托利多WKE2002型稱重模塊的使用說明書,要想該模塊進行稱重,只需要2條指令,分別是“置零指令”和“稱重指令”。
(1)“置零指令”:當稱重模塊接收到“置零指令”后,將開始進行置零,如果置零成功,將返回“置零成功”指令,否則將返回“置零失敗”指令。
(2)“稱重指令”:稱重模塊被成功置零后,如果收到“稱重指令”,稱重模塊將以100 ms的時間間隔,周期性向外發出當前所稱得的質量的報文。
3.1置零指令
梅特勒一托利多WKE2002型稱重模塊的“置零指令”是“ZI”,PLC通過串口服務器向各個稱重模塊發送“置零指令”,串口服務器接收后,依次轉發給各個稱重模塊;串口服務器是使用串口1接收該指令,之后將該指令依次通過串口2,3/4/5發送給4個稱重模塊。
3.2置零返回指令
各個稱重模塊收到“置零指令”后,將開始進行置零;如果置零成功,將返回“置零成功”指令,否則將返回“置零失敗”指令。梅特勒一托利多WKE2002型稱重模塊的“置零成功“指令”是“ZIS”,“置零失敗”指令是“ZIF”,串口服務器使用串口2/3/4/5分別接收4個稱重模塊返回的指令,并將4個稱重模塊的置零狀態打包在一幀報文中,發送給PLC,PLC將獲取4個稱重模塊的置零狀態。具體的報文格式如表1所示。
報文中的第1個字節是固定的,使用0xAA開頭;第2個字節表示報文類型,使用0x01表示;每缸的置零狀態都使用1個字節表示,如果置零成功,則使用0x00表示,如果置零失敗,則使用0x01表示;故該報文一共占用了6個字節。
3.3稱重指令
梅特勒一托利多WKE2002型稱重模塊的“立即稱重”指令”是“SI”。串口服務器收到每個稱重模塊的“置零返回”指令后,將判斷每個稱重模塊返回的是否是“置零成功指令”,如果是,則將向該稱重模塊發送“立即稱重”,否則不發送任何指令;因此置零失敗的稱重模塊將不會返回其“重量報文”。
3.4稱重返回指令
各個稱重模塊收到“稱重指令”后,將以100 ms的時間間隔進行稱重,同時向串口服務器發送所稱得的質量。稱重模塊的“稱重返回指令”格式是“SI123456”,其中“1234”為油量的整數部分,占4個字符;“56”為油量的小數部分,占2個字符,通常只需要精確到0.1g即可。
串口服務器使用串口2/3/4/5,分別接收4個稱重模塊返回的指令,并按照相應的格式解析獲取每個稱重模塊返回的油量值。之后將4缸的油量打包成一幀報文,并以1s時間為間隔周期性地發送給PLC,這樣PLC就能實時地獲取每缸的噴油量,并顯示在組態軟件界面中,供用戶查看。具體的報文格式如表2所示。
報文中的第1個字節仍是OxAA;第2個字節則使用0x02,每缸的油量占用2個字節,最大值可以達到65 535 g,完全滿足實際需求,故該報文一共占用了10個字節。
4系統安裝及調試結果
4.1硬件制作
根據前文的硬件設計,再加上STM32F103RCT6芯片最小系統,即可繪制出整個模塊的原理圖及PCB圖,再制作出PCB板子,之后焊上所有的元器件,即可完成整個模塊的硬件制作。串口服務器的結構框架圖如圖5所示,主要包括3大部分:(1)1個控制中樞為STM32F103RCT6的主控芯片;(2)3個將TTL電平和RS232電平相互轉換的MAX232芯片;(3)5個串口連接的DB9型端子。
4.2測試結果
制作出實物之后,即可將程序下載到芯片中,并開始測試系統。系統測試方法:每1個稱重模塊準備1套砝碼,該套砝碼包含質量不等的幾個砝碼,每次隨機挑選其中的1個或幾個砝碼放人該稱重模塊中,測試串口服務器能否同時將4個稱重模塊上的砝碼質量返回給PLC,并通過觸摸屏顯示。系統測試的部分數據如表3所示,測試結果表明,所設計的串口服務器,能夠同時返回多個稱重模塊測量的質量值,并能夠穩定運行。
5結束語
為了解決船用多缸油泵試驗臺能同時使用4個稱重模塊的問題,本文基于STM32芯片設計了一個串口服務器模塊,該串口服務器擁有5個RS-232串口接口,左邊連接PLC,右邊連接4個稱重模塊;其硬件設計成本低,軟件通信報文簡單,可擴展性強。最后對模塊進行實物制作,并進行了測試,從測試數據來看,所設計的串口服務器,能夠滿足試驗臺同時使用4個稱重模塊測量4個噴油泵的需求。在功能上和經濟性上,達到最初的設計目標。