馮俊 吳佳雯



摘要:本文介紹了一種基于STM32以及HMl組態屏的交互系統的設計方案,該系統的硬件部分主要有STM32F103C8T6單片機和HMl組態屏。該系統的軟件代碼由C語言編寫。本系統通過連接STM32與HMl組態屏,使得用戶可以在觸摸屏上進行操作來完成一些簡單的工作。該系統在工作過程中HMl組態屏作為主機會不斷地給單片機發一些碼,在收到碼后單片機作為從機必須也給HMl組態屏,以一種相當于一問一答的方式實現交互。
關鍵詞:STM32F103C8T6;HMl組態屏;問答式交互
中圖分類號:TP311文獻標識碼:A
文章編號:1009-3044(2020)19-0211-02
開放科學(資源服務)標識碼(OSID):
社會在變化,科技在發展,時代在進步,越來越多的領域都用上了觸摸屏,通過在觸摸屏上輸人命令,隨后系統便開始按照命令完成工作,為此本文也研究了一種交互系統,來實現單片機與觸摸屏的交互來完成一些簡單的工作。通過研究MOD-BUS協議,我們了解到HMI組態屏想要與STM32成功進行交互,就必須在主機發送請求后,從機進行應答,這樣才能成功交互。以此為基礎我們研究的系統也存在一定的可行性,對一些領域具有一些參考價值。
1 STM32F103C8T6簡介
STM32F103C8T6這款單片機從名字上來看,我們可以知道開頭的ST代表的是意法半導體,其后的M代表的是微電子學的意思,32就是32位的意思,所以STM32合起來的意思就是一款由ST公司研究開發的32位的微處理器。F103就表示其中的增強型芯片,后面的C代表的是引腳的數目為48個引腳,8則代表FLASH的大小為64K,T表示的是它的封裝方式,6表示的是它溫度的范圍。它不僅結構簡單,易于學習,而且成本價格低,功耗低,功能多,在各種地方還都可以見到STM32產品的身影,比如學習、醫療、手環、平衡車等,可以說它是最璀璨的新星,受到各大工程師的青睞,能與之媲美的也是寥寥無幾。
2 MODBUS協議
Modbus協議簡單地來說就是一個主機請求,從機應答的協議,并且它會提供給用戶規定的功能碼。Modbus包括許多協議,如TCP協議,RTU協議等等,它不存在規定的物理層,其中Modbus的RTU協議規定數據的結構,對答方式,消息和命令,數據通過主機發出請求命令消息,然后從站接收到消息之后,判斷其正確性,如果正確則發送數據到主站請求響應。該協議也只有主站擁有主動權可以主動的發送消息,從站只能被動地接受然后進行回應,以及在錯誤時進行回答,將錯誤報出。
Modbus最重要的一部分其實就是對數據的分析,然后判斷數據正誤,在本文在使用到的是RTU協議中的16位CRC校驗。CRC的作用大概就是當從機收到主機的命令后進行計算,然后校驗CRC,若CRC正確則說明命令傳輸正確,錯誤說明命令傳輸過程中可能受到干擾等原因,此命令不能使用,在從機收到正確的命令之后進行回復的時候,還需要計算一次正確的CRC,然后填充在需要回復的代碼后面,再發給主機完成應答過程,因為在通信過程中需要不斷的計算CRC的值,所有由此可見CRC校驗尤為的重要。
3 HMI工業組態屏界面編輯
如果想要使用HMI組態屏,就需要去Kinco的官網下載KincoHMIware組態編輯軟件,下載完這款軟件之后,就開始如下圖所示的步驟開始我們軟件的體驗:
在熟悉了如何在軟件上進行編輯之后,我們就可以開始對我們的系統的界面開始編輯設計了。首先我們需要選擇本次所需要用到的HMI組態屏-MT4043R,然后我們需要選擇與其通信的PLC,因為本次采用的通信協議是Modbus中的RTU協議,所以選用Modbus RTU這款PLC,最后用串口將他們連接起來,當然要注意的就是需要連同一個COM口,最終編輯完的硬件連接圖如下2所示:
在完成基礎的連接之后,就可以進入HMI組態屏中,對顯示界面進行編輯了,可以拖動位狀態設定,位狀態切換開關,位狀態顯示燈,文本顯示這些模塊來完成界面的編輯。
4 系統界面設計
因為技術水平有限,所以本文打算將系統界面設計成如下圖3的樣子:
首先從PLC元件中選擇4個位狀態切換開關,將它們的地址類型都設置成OX,將它們的地址分別設置成1,2,3,4,再將他們的開關類型都設置成切換開關,再設置他們的標簽內容,這樣就可以完成4個位狀態切換開關的設置了,然后再選擇2個位狀態設定開關,將他們的地址類型都設置成OX,地址設置成5,6,將這些開關的地址設置成不同是為了他們能在工作的時候不會相互干擾,接著把他們的開關類型設置成復位開關,最后為了改變開關的顯示方式我們需要從外面導人上下箭頭的圖標,這樣下來2個位狀態設定開關也完成了,接下來就是文本顯示模塊了,直接設置地址類型為3X,地址為1就完成了,最后要設置的是位狀態顯示燈了,設置它的地址類型為OX,地址為1,之所以設置為1,是為了讓它與sw0開關的工作狀態同步,比如開關按下的時候,指示燈亮,就代表外部開始工作,最后改變位狀態顯示燈的圖標即可,方法同位狀態設定開關。在完成這些之后系統界面的設計也就完成了。
5 軟件設計及原理
本系統的主要原理就是主機和從機通過Modbus協議,進行CRC校驗來完成主機從機之間一種請求應答的過程。知道了這一點我們就可以開始進行測試了,首先我們通過,連接兩個USB轉串口的模塊,然后將它們連到電腦上,打開串口助手之后選擇一個COM口,然后Kinco軟件中在線模擬的時候選擇另一個COM口,這樣就可以在串口助手上看見HMI組態屏作為主機給單片機發的功能碼了,經過我們實驗測試所知,我們會收到01功能碼,以及04功能碼,其中04功能碼由文本顯示模塊所發,01功能碼均由其他模塊所發。因為知道了收到的功能碼的類型,所以單片機作為從機在應答的時候就需要回復01功能碼與04功能碼,這樣主機從機就完成了通訊。主機收到了從機的功能碼后就會執行一系列的操作,在本系統中主機收到從機發的功能碼后,組態屏上會把開關按鈕都顯示出來,這些都是在接收01功能碼后的操作,如果接收到的是04功能碼,那么文本顯示模塊上的內容則會改變。在開關顯示出來之后,我們需要改變它們的狀態,所以我們肯定會去點擊這個按鍵,這時候組態屏就會像單片機發送05功能碼,單片機接收到05功能碼后,必須立刻做出反應,向組態屏發送同樣的05功能碼,這樣主機從機間又完成一次通訊,然后我們想要的功能才會實現。以此為基礎,整個系統的工作原理就顯得不是那么的困難了,無非就是收發,收發,在發完之后執行相應的操作。軟件的程序設計流程如圖4。
6 總結與展望
本系統的設計所需要用到的是STM32的單片機,本次選用的是以STM32F103C8T6為核心的這款單片機,因為還在學習研究該單片機以及Kinco軟件的階段,所以設計出來的系統相對的比較簡單一些,通過以后的不斷學習,該系統還有很大的改進提升空間。就本次研究實驗而言,過程也并不是十分順利的,在過程中也遇到了許多問題,在剛開始寫代碼的時候,因為C語言學的不是非常的透徹,在獲取CRC校驗位的時候總是出錯或者接收不到校驗位,后來通過查閱書籍以及問同學解決了該問題。最后在進行在線模擬的時候發現,操作的時候存在很大的延遲,但是將工程下載到HMI組態屏中后,并沒有發現延遲。總而言之,該系統的研究過程并不是一帆風順的,但最終還是實現了交互的功能,這為以后的一些研究提供了一些基礎,還是有些參考價值的。
參考文獻:
[1]侯殿有,單片機C語言程序設計[M].北京:人民郵電出版社,2010.
【通聯編輯:聞翔軍】