蘇州永節電子科技有限公司
設為首頁 | 收藏本站
新聞詳情

單片機和PLC觸摸屏通信

瀏覽數:4


STM32 單片機與西門子 Smart 700觸摸屏通信的實現


作者李鵬,王莉(江漢大學 智能制造學院,湖北 武漢 430056)   








摘    要

建立了 STM32 單片機與 Smart 700 觸摸屏的通信,分析了 Modbus RTU 通信協議的指令組成和格式、Smart 700 觸摸屏的基本通信方式、STM32 單片機的通信特點,提出了 STM32 單片機通信程序設計方法。通過設計實驗平臺測試 STM32 單片機與 Smart 700 觸摸屏間的 Modbus RTU 通信可靠性,實驗結果達到預期效果。


關鍵詞

STM32 單片機;Smart 700 觸摸屏;Modbus RTU






0 引言

隨著工業技術的快速發展,借助于檢測終端、控制終端、顯示終端及無線傳輸端為一體的智能化控制系統逐漸成為工控領域的發展方向。在工業領域大多采用可編程邏輯控制器(programmable logic controller,PLC)與觸摸屏結合的方式完成現場操控 [1] ,PLC 技術穩定性好、抗干擾性強,但是成本較高。微控制器技術采用超大規模集成電路技術把中央處理器 CPU、隨機存儲器 RAM、只讀存儲器 ROM、中斷系統等功能集合為一體 [2] ,具有體積小、功耗低及成本低等特點。微控制器技術可廣泛用于自動化控制領域,替代傳統可編程控制器的部分功能,實現現場對象的邏輯控制,有較好的應用前景。

傳統的工控領域大多采用的是同廠商的觸摸屏與 PLC 相互結合的應用方案 [3] 。本文以STM32 單片機與西門子 Smart 700 觸摸屏為例,為了實現不同廠商設備間的數據通信技術問題,建立與微控制器通信案例,技術上采用 Modbus RTU 標準的通信協議建立設備間的通信橋梁。采用 Smart 700 觸摸屏作為上位機運行人機交互控制界面,STM32 作為下位機完成數據采集及設備控制等功能,設備間采用 RS485 接口,按照 Modbus RTU 通信協議方式建立單片機與觸摸屏的驅動,編寫通信協議、設計軟件并進行實驗測試。


1 西門子 Smart 700 觸摸屏簡介

西門子 Smart 700 觸摸屏是一種廣泛應用于工業現場人機交互的屏幕系統,具備微小的操作系統、高分辨率寬屏顯示、節能降耗及強大且豐富的通信能力 [4] 。Smart 700 觸摸屏人機界面功能強大,其界面設計主要是在 WinCC flexible 中實現,根據項目需求設計按鈕、圖形、數字等功能按鍵來處理、監控、管理多變的信息化顯示屏幕。

觸摸屏的通信配置在 WinCC flexible 軟件中進行選型設計(通信-連接-通信驅動程序),驅動選擇 Modicon Modbus v3 驅動程序,通信協議配置如表 1 所示。


2 Modbus RTU 協議

Modbus 通信協議是 Modicon 公司為使用 PLC 通信而發表 [5] ,該協議廣泛用于工業現場,通過該協議可以完成多控制器之間、不同型號設備之間的數據通信 [6] 。該協議采用主從應答通信,明確規定了主從應答通信行為、設備識別碼、設備驗證碼及標準的報文結構格式,目前是工業電子設備之間常用的連接方式。Modbus 主要有以下 3 種通信方式:以太網的 Modbus TCP、異步串行通信的 Modbus RTU、基于高速令牌傳遞網絡的 Modbus PLUS[7] 。常用的物理接口有 RS232/RS422/RS485、光纖、無線等通信接口 [8-9] 。本文采用異步串行通信,通信接口采用 RS485 的連接。

協議格式是完成不同設備間溝通的橋梁,Smart 700 觸摸屏配套的組態軟件是 WinCC flexible,該軟件內無單片機的驅動。本節研究兩個方面的內容,即 Modbus RTU 數據通信的命令串格式和觸摸屏發出命令的含義。

2.1 Modbus RTU 協議格式

Modbus 通信方式有多種,本文主要采用 Modbus RTU 異步串行通信方式,其數據格式包括:地址碼 + 功能碼 + 數據 + 循環冗余校驗(cycle redundancy check,CRC),各部分含義如表 2所示。


主機對從機的操作有讀數據操作和寫數據操作,完成對特定內存單元的數據進行讀取和預設功能。

主機對從機寫數據操作,如表 3 所示。


主機對從機讀數據操作,如表 4 所示。

單片機接收到這串數據后,根據消息幀數據開始進行 CRC 校驗,判斷數據是否正確,如果判斷數據無誤,則返回信息給主機,應答格式如表 5 所示。


地址碼主要是用來識別同一線路上不同設備的信息號,區別特定對象上的數據身份,其構成可以從 1 到 247 標號。主機發送帶設備地址的消息幀,從機都可以收到信息,但是只有設置了匹配的設備號才能響應。

功能號主要是用來說明該數據幀的用途,從機根據幀信息完成數據的讀取或賦值功能,完成幀數據的動作,常用的功能碼如表 6 所示。


常用的寄存器地址分配有離散量輸入,地址范圍 0X00001 ~ 0X0FFFF,輸出繼電器地址范圍 0X10001 ~ 0X1FFFF,輸 入 寄 存 器 地 址 范 圍 0X30001 ~ 0X3FFFF,輸 出 寄 存 器 地 址 范 圍0X40001 ~ 0X4FFFF。

2.2 Smart 700 觸摸屏 Modbus 指令

Smart 700 IE 1000 觸摸屏的人機交互界面是通過 WinCC flexible 組態編程軟件完成功能界面設計,然后下載到觸摸屏內。本文建立了 Modicon Modbus 標準通信協議驅動,其運行流程如圖 1 所示。系統運行開始,從起始單元進行主動查詢,發送查詢功能碼,如果工控機有預設操作,系統跳轉發送預設參數,完成后繼續發送下一個單元請求查詢命令;如果上位機無預設指令,上位機繼續發送讀取內存單元命令。當上位機獲取到了響應讀取指令,先獲取指令值,且上位機地址指針自加并發送下一幀讀取命令,同時判斷地址指針的范圍,范圍內繼續循環,范圍外重新開始新的一輪請求查詢。當上位機沒有收到響應,在循環周期內繼續請求當前讀取數據,周期外將會從起始地址開始請求。在一個周期內完成所有內存單元的查詢工作,周期循環執行。


Smart 700 IE 1000 觸摸屏與單片機通信采用主從通信模式,上位機 Smart 700 為主機,從機為 STM32 主控板。主機配置有 Modicon Modbus 通信協議驅動程序,上電后系統自動開始運行,上位機 Smart 700 作為主機自動按周期循環發送請求讀取內存數據命令,通過 RS485 通信接口發送到 STM32 單片機。下位機接收到上位機請求命令后,首先進行 CHR 數據校驗,如果校驗錯誤,返回重新查詢接收;如果校驗正確,解析獲取功能碼。如果是讀取命令,單片機按照 Modbus命令格式發送內存單元的數值到上位機;如果接收到的是寫命令,單片機將對本機內存單元進行賦值操作。解析完成讀寫命令后,返回重新查詢接收,循環查詢上位機的請求命令,掉電后自動停止發送,其流程圖如圖 2 所示。


3 STM32 單片機的軟件設計

STM32F1X 單片機作為下位機 [10-11] ,主要完成功能包括編寫 Modbus 解析程序、RS485 發送接收程序、傳感器信號檢測、接收及驅動信號發送等。

3.1 CRC 校驗碼的生成

CRC 是檢查通信可靠性的一種方式,Modbus RTU 為了獲取數據的準確性,采用 16 位 CRC對接收數據進行處理。其校驗流程如圖 3 所示。單片機獲取消息幀后,截取總長度的前 n ~ 16位字符串數據,進行累加,獲取結果的低 16 位數據,然后將計算的 CRC 與發送到的 CRC 進行對比,完成數據校驗。


以下為單片機 CRC 校驗的部分腳本程序:

u16 Computes_CRC16(u8 *DAT,u8 L)//指針 DAT 為要校驗數組,L 為組長

{u16ComCRC = 0xffff;u8 i;u8 j;

for (i = 0;i < L;i++)

{ComCRC = ComCRC ^ DAT[i];

for (j = 0;j < 8;j++)

{if (ComCRC & 0x01)

{ComCRC = ComCRC>> 1;ComCRC = ComCRC ^ 0xA001;}

else{ComCRC = ComCRC>> 1;}

}}return(ComCRC);}

3.2 數據的接收

STM32單片機數據接收主要采用串口中斷模式進行數據的接收[12] ,Modbus傳輸數據是固定的數字幀(屏發送請求信息幀如下所示:01 03 9C 40 00 01 AB 8E),先接收數據存入緩沖區 BUFF內,然后對數據進行分析、校驗,將有效的數據提取到運行 BUFF內用于條件判斷及數據提取。

3.3 數據的發送

單片機接收到 Smart 700 觸摸屏的通信請求后,先獲取運行 BUFF 內的數組,提取校驗,數據無誤發送 Modbus 響應數組,發送函數代碼如下所示。

void RS485_TX_DATA(u8 TmpH,u8 TmpL)

{ModTX. Gnm_1[0]= 0x01;//設備號

ModTX. Gnm_1[1]= 0x03;//功能碼

ModTX. Gnm_1[2]= 0x02;//發送字符個數

ModTX. Gnm_1[3]= TmpH;//發送字符高八位

ModTX. Gnm_1[4]= TmpL;//發送字符低八位

DataMsg = ModTX. Gnm_1;//數組指針幅值

RXcrc = Computes_CRC16(DataMsg,5);//開始 CRC 校驗

RS485_Send_Data(ModTX. Gnm_1,7);}//發送一串響應數組


4 STM32 單片機與 Smart 700 觸摸屏的通信測試

系統測試對象是基于水泥灌漿自動控制系統的通信測試,主要包括觸摸屏西門子 Smart 700設備、STM32 為主的主控板和現場壓力傳感器等,實現設備間通信。系統測試分為兩個部分,第一部分是 Smart 700 觸摸屏循環請求獲取內存單元值命令調試,串口反饋數據給觸摸屏;串口調試數據如圖 4 所示。

屏請求數據:01 03 9C 40 00 01 AB 8E,是請求 40000 地址一個數據。

串口響應信息:01 03 02 00 13 F9 89,響應一個數據 19 給 40000 地址。

屏請求數據:01 03 9C 41 00 01 FA 4E,響應格式同上。

屏請求數據:01 03 9C 42 00 01 0A 4E,單片機響應后,繼續請求,地址增加,在預定周期內請求所有輸入寄存器的數據,完成后,程序從起始地址循環發送請求數據。

第二部分是觸摸屏與下發控制命令調試,給串口發送預設值,為單片機測試做準備。如圖 4所示,人機交互界面有按鈕控件,點擊壓力預設按鈕,確認下發后,串口響應后的指令如下:

屏預設數據:01 06 9C 47 00 07 56 4D,其中 01 是設備號,06 是預設功能碼,0x9C、0x47 為寄存器位地址碼,0x07 為系統預設的壓力值,0x56、0x4D 為 CRC 校驗碼。其他控制測試為同樣方法。

最后就是總體功能測試,主要完成主控板與 Smart 700 觸摸屏間的數據通信測試,其測試結果如圖 5 所示。測試方法是主控板通過仿真器與觸摸屏設備進行聯調,觀察接收寄存器數據,該數據為觸摸屏下發的 Modbus 數據幀,然后進行數據的處理、顯示及分析等。

如圖 5 所示,當前顯示實時壓力為 3. 5MPa,運行中觸摸屏請求數據幀格式為:01 03 9C 47 00 01 1A 4F,該指令為屏請求獲取內存地址 40007 單位的值,也就是實測壓力值。

單片機接收到上位機請求數據幀后,按照通信協議,將當前檢測到的實測壓力值按照雙方的通信格式,發送響應幀為:01 03 02 00 23 F9 9D,其中 0x00、0x23 為響應的壓力值,當前壓力傳感器數據(十六進制發送),發送到觸摸屏進行顯示。

觸摸屏的按鈕功能測試,點擊觸摸屏預設壓力下發控制按鈕后,觸摸屏下發命令格式為:01 06 9C 49 00 06 F6 4E,當單片機讀取到該數據幀后,獲取第二位 0x06為功能碼,知道當前操作為預設操作,單片機開始提取數據,獲取到的第四位和第五位的數據為 0x00、0x06,即為觸摸屏下發的預設壓力值。單片機將獲取的數據賦給全局變量,用于程序邏輯控制、計算及顯示等,如圖 5所示,預設壓力為 0. 6 MPa(Set_YaLi = 0x06),其他觸摸屏按鈕功能預設方法一樣,如其中管道長度預設值為 0. 7 m(Set_GuanDao_Long = 0x07),鉆孔預設深度為 0. 5 m(Set_ZuanKong_Long = 0x05)等。

觸摸屏發送請求命令周期是小于 50 ms,觸摸屏控制變量不多,1 s 周期內基本可完成全部內存單元的查詢,通過單片機單位時間內收到的數據可判斷其穩定性。Modbus 通訊方式是標準的信息幀,還帶有 CRC 數據校驗功能,實驗過程數據傳輸穩定,實現了兩者之間的數據通信。


5 結語

本文分析了 Modbus RTU 的通信規則及 Smart 700 觸摸屏的 Modbus 驅動配置,了解了報文信息的規則,然后結合 STM32 單片機的結構特征,編寫了 Modbus 的數據通信協議,完成了人機界面設計,最后通過實驗測試,實現了單片機與觸摸屏的數據通信,達到了設計的要求。本次實驗可以加大單片機技術在觸摸屏領域的應用,替換傳統可編程控制器與觸摸屏項結合的工業設計模式,減少設備成本,擴展性能強,信號傳輸穩定,可廣泛用于工控領域,具有一定的實際意義,并且該軟件具備二次開發性能,可為同類項目通信提供參考。



參考文獻略


基金項目:江漢大學 2020 年青年教師專項教研項目(JyQ2020071)