0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

智能液晶顯示模塊HMI自定義通信協(xié)議分析

拓普微科技 ? 來源:拓普微科技 ? 2023-07-30 14:46 ? 次閱讀

一. HMI與通訊協(xié)議

隨著工業(yè)技術的發(fā)展,HMI(人機界面)的應用領域愈加廣泛。通過拓普微的智能液晶顯示模塊實現(xiàn)的自定義通信協(xié)議能在一定程度上維護企業(yè)的數(shù)據(jù)隱秘性,提升產品功能的多樣性,并且能夠解決企業(yè)通信協(xié)議不兼容問題。

HMI的串口通信規(guī)則,除了標準Modbus協(xié)議產品,大多都是根據(jù)原廠制定的協(xié)議規(guī)則進行。然而許多企業(yè)也有其各自的通信規(guī)則及報文格式,在配套使用HMI開發(fā)應用時,企業(yè)希望保留或使用自己的功能特性和數(shù)據(jù)交互規(guī)則,用以匹配自己協(xié)議的應用開發(fā)。

基于此,拓普微的HMI串口屏有一套較為成熟的設計方案。本文將介紹智能顯示模塊HMT050DTA-D如何基于LUA腳本設計實現(xiàn),在原廠提供的庫函數(shù)中,有開放串口控制類的API,通過這些API函數(shù)能夠實現(xiàn)企業(yè)的自定義通信協(xié)議設計。

二. 自定義通訊協(xié)議

此次設計將通過拓普微的智能液晶屏HMI的串口,配合LUA程序,應用串口控制類API,實現(xiàn)目標協(xié)議通信功能。

HMI串口通信協(xié)議,常見的報文格式一般由“幀頭”、“長度碼”、“功能碼”、“參數(shù)數(shù)據(jù)信息”、“幀尾”、“校驗碼”幾個部分組成。通信過程中,系統(tǒng)將實時查詢串口的數(shù)據(jù)接收,獲取符合協(xié)議的報文數(shù)據(jù),執(zhí)行規(guī)定的指令功能。

如下“表2-1:自定義協(xié)議通信報文格式”,定義了一種常見的通信報文格式。(硬件串口參數(shù)說明:波特率“115200”;數(shù)據(jù)位“8”;停止位“1”;校驗如下表)

963006b0-2e8c-11ee-815d-dac502259ad0.jpg

表2-1:自定義協(xié)議通信報文格式

*1. 指令長度碼,計算“命令碼”到“校驗碼”中所有數(shù)據(jù)的字節(jié)總數(shù)。
*2. 指令地址、數(shù)據(jù)、參數(shù)信息,是多字節(jié)數(shù)據(jù),數(shù)據(jù)都是高位在前,低位在后。
*3. 指令校驗碼,計算“幀頭”到“幀尾”中所有的數(shù)據(jù)的ModbusCRC-16校驗。

三. 功能需求分析

1. HMI原通信協(xié)議屏蔽

目前使用的型號HMT050DTA-D默認是TOPWAY協(xié)議通信的,存在指令錯誤碼回復機制。因此在自定義協(xié)議通信過程中,如果沒有屏蔽原協(xié)議,可能會存在串口占用,回復數(shù)據(jù)混亂的情況。所以在設計自己協(xié)議通信時首先要把原廠的協(xié)議屏蔽,避免數(shù)據(jù)沖突。

2. 接收指令數(shù)據(jù)處理與解析回復

獲取串口數(shù)據(jù)后,需要提取符合自定義協(xié)議規(guī)則的指令以便后續(xù)對指令進行解析并執(zhí)行指令功能。因此需要定義接收指令數(shù)組,用以存儲串口中符合協(xié)議規(guī)則的指令數(shù)據(jù)。

協(xié)議通信中,也存在指令回復功能,比如讀取/訪問地址數(shù)據(jù)的指令。在解析完接收到的指令后,我們要對部分指令進行響應,所以需要定義回復指令數(shù)組,對讀取/訪問操作的指令進行回復。

3. 協(xié)議通信指令功能要求

在LUA程序設計中,需要實現(xiàn)的功能板塊有:①從串口接收區(qū)中獲取符合規(guī)定自定義規(guī)則的指令,存儲在接收指令數(shù)組;②調用接收到的指令數(shù)據(jù),對指令數(shù)據(jù)進行解析;③調用相應的功能處理函數(shù),執(zhí)行指令功能。對于讀取/訪問信息類的指令,還需要操作串口發(fā)送數(shù)據(jù)進行回復。

解析的指令目前主要實現(xiàn)4功能板塊。①功能碼“0x01”:訪問/讀取變量數(shù)據(jù);②功能碼“0x02”:改寫變量數(shù)據(jù);③功能碼“0x03”:工程顯示跳頁;④功能碼“0x04”:屏幕背光亮度控制。主要板塊功能關系如圖3-1所示。

9661bdd6-2e8c-11ee-815d-dac502259ad0.jpg


圖3-1 協(xié)議通信主要功能板塊

四. Lua實現(xiàn)自定義協(xié)議

1. 屏蔽原廠通信協(xié)議

在拓普微提供的LUA庫函數(shù)中存在TOPWAY協(xié)議禁用函數(shù),可以在程序初始化時調用該函數(shù)對原廠的通信協(xié)議進行屏蔽。如圖4-1

968694e4-2e8c-11ee-815d-dac502259ad0.jpg

調用函數(shù):hmt.bypass(is)
輸入:參數(shù)“is”使能開關。
使用說明:當“is=1”時屏蔽原TOPWAY協(xié)議,“is=0”時使用TOPWAY協(xié)議。

2. 自定義協(xié)議的數(shù)據(jù)結構

2.1 接收指令數(shù)組

定義數(shù)組:CustProt_recvcmd = {}
類型:全局數(shù)組,初始化時定義。
說明:存儲串口接收區(qū)中符合協(xié)議規(guī)則的指令數(shù)據(jù)。接收指令數(shù)據(jù)過程中,如過不符合定義的規(guī)則,需清空接收數(shù)組。

2.2 回復指令數(shù)組

定義數(shù)組:CustProt_sendcmd = {}
類型:全局數(shù)組,初始化時定義。
說明:根據(jù)協(xié)議規(guī)則,存儲需要通過串口進行回復的指令數(shù)據(jù)。發(fā)送完成后清空數(shù)組。


3. 自定義協(xié)議設計實現(xiàn)

LUA程序設計,主要實現(xiàn)函數(shù)功能見流程圖4-2。

96aad0ac-2e8c-11ee-815d-dac502259ad0.jpg

3.1 檢查串口接收區(qū)數(shù)據(jù)

調用函數(shù):hmt.uartisempty()
輸出:返回“1”時表示串口接收buf為空;返回“0”時表示串口接收區(qū)存在數(shù)據(jù)。
使用說明:使用該函數(shù)判斷串口接收區(qū)是否存在數(shù)據(jù)。等于0時再去執(zhí)行指令獲取函數(shù)。

3.2 獲取符合自定義協(xié)議的指令數(shù)據(jù)

構造函數(shù):get_CustProtrecvcmd()
輸出:接收指令數(shù)組 CustProt_recvcmd。
說明:將符合自定義協(xié)議的指令存儲在全局的接收指令數(shù)組;期間會對指令中幀頭、幀尾、長度碼3種類型的數(shù)據(jù)格式進行判斷。不符合自定義協(xié)議時將清空指令數(shù)組。

調用函數(shù):hmt.getchar()
輸出:串口接收隊列的第一個字節(jié)數(shù)據(jù)。
使用說明:在函數(shù)get_CustProtrecvcmd()中,獲取符合自定義協(xié)議指令時會頻繁調用該函數(shù),對串口接收區(qū)的數(shù)據(jù)進行篩選。

3.3 自定義協(xié)議的數(shù)據(jù)檢查及校驗

構造函數(shù):CmdCheck(CustProt_recvcmd)
輸入:接收指令數(shù)組 CustProt_recvcmd。
說明:函數(shù)會對接收指令數(shù)組中的數(shù)據(jù)碼和校驗碼2個類型的數(shù)據(jù)格式進行判斷。不符合自定義協(xié)議時將清空指令數(shù)組,回復錯誤碼,并重新開始獲取指令。

3.4 指令數(shù)據(jù)解析

構造函數(shù):CmdHandle(CustProt_recvcmd)
輸入:接收指令數(shù)組 CustProt_recvcmd。
說明:函數(shù)根據(jù)指令中的功能碼,分類處理指令數(shù)據(jù),如數(shù)字數(shù)據(jù)和字符串數(shù)據(jù)。

3.5 執(zhí)行指令功能

3.5.1 讀變量數(shù)據(jù)功能

構造函數(shù):_ReadvariableReturnCmd (Addr)
調用函數(shù):hmt.readvp16(Addr)hmt.readvp32(Addr)hmt.readvpstr(Addr)等。
輸入:自定義協(xié)議中指令的地址數(shù)據(jù)。
說明:當功能碼為“0x01”時使用該函數(shù)處理,函數(shù)將根據(jù)指令中的地址類型,分類調用hmt讀變量函數(shù),讀回數(shù)據(jù)并存儲在回復指令數(shù)組,最后通過串口發(fā)送返回。

調用函數(shù):hmt.putchar(byte)
輸入:指令字節(jié)數(shù)據(jù)。
說明:讀取后回復指令時,會頻繁調用該函數(shù),將回復指令數(shù)組中的數(shù)據(jù)通過串口發(fā)送。

3.5.2 寫變量數(shù)據(jù)功能

構造函數(shù):_Writevariable(addr, value)
_Writevariable1(addr, strvalue)
調用函數(shù):hmt.writevp16(Addr, value)hmt.writevp32(Addr, value)hmt.writevpstr(Addr, strvalue)等。
輸入:“Addr”自定義協(xié)議中指令的地址數(shù)據(jù),“value/strvalue”自定義協(xié)議中需要寫入變量的數(shù)字數(shù)據(jù)或字符串數(shù)據(jù)。
說明:當功能碼為“0x02”時使用該函數(shù)處理,函數(shù)將根據(jù)指令中的地址類型,分類調用hmt寫變量函數(shù),將數(shù)字數(shù)據(jù)或字符串數(shù)據(jù)寫入相應的變量。

調用函數(shù):string.char(byte)
輸入:接收自定義指令中的字節(jié)。
輸出:字符數(shù)據(jù)。
使用說明:寫入字符串變量時,需要通過該函數(shù)將數(shù)字指令數(shù)據(jù)轉成字符數(shù)據(jù)寫入變量??梢耘浜献址B接符“..”轉成字符串數(shù)據(jù)。

3.5.3 工程跳頁功能

調用函數(shù):hmt.changepage(pageid)
輸入:“pageid”自定義協(xié)議中指令的頁面ID信息。
使用說明:當功能碼為“0x03”時使用該函數(shù)處理,CmdHandle中會處理自定義指令中雙字節(jié)的ID信息為數(shù)字數(shù)據(jù),然后將數(shù)字數(shù)據(jù)傳入該函數(shù),跳轉到指定頁面。

3.5.4 設置屏幕背光功能

定義數(shù)組:setBLcmd = {0x5F, 0x00}
類型:局部數(shù)組,在函數(shù)CmdHandle中定義。
說明:函數(shù)CmdHandle會將自定義指令中亮度值傳入數(shù)組setBLcmd的第二個字節(jié);配合hmt庫函數(shù)hmt.runcmd(cmdtable, len)使用,用以執(zhí)行內部調光指令。

調用函數(shù):hmt.runcmd(cmdtable, len)
輸入:“cmdtable”內部指令數(shù)組,“l(fā)en”調用數(shù)組長度。
使用說明:當功能碼為“0x04”時使用該函數(shù)處理,調用局部數(shù)組setBLcmd,執(zhí)行自定義協(xié)議的調節(jié)背光功能。

五. 結語

本文所介紹的使用拓普微智能液晶顯示模塊測試通信協(xié)議,旨在引出通信協(xié)議實現(xiàn)的一種思路,因為工業(yè)控制、物聯(lián)網智能家居、環(huán)境監(jiān)控、數(shù)據(jù)安全等領域,應用層的功能設計很大程度會影響甚至決定協(xié)議層的數(shù)據(jù)傳輸格式。

智能顯示模塊HMI的串口自定義協(xié)議通信的實現(xiàn),用戶可以按照自己的需求靈活設計協(xié)議規(guī)則,控制產品實現(xiàn)期望功能,在一定程度上為應用的功能設計提供了新的解決方案。






審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • HMI
    HMI
    +關注

    關注

    9

    文章

    589

    瀏覽量

    48566
  • CRC校驗
    +關注

    關注

    0

    文章

    84

    瀏覽量

    15209
  • 串口控制
    +關注

    關注

    0

    文章

    27

    瀏覽量

    9865
  • Lua語言
    +關注

    關注

    0

    文章

    9

    瀏覽量

    1491
  • ModBus通信
    +關注

    關注

    0

    文章

    32

    瀏覽量

    2582

原文標題:智能液晶顯示模塊HMI自定義通信協(xié)議

文章出處:【微信號:拓普微科技,微信公眾號:拓普微科技】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    求教:液晶顯示LCD12864利用CGRAM只能自定義4個字型嗎?

    求教:液晶顯示LCD12864利用CGRAM只能自定義4個字型嗎?
    發(fā)表于 06-24 17:07

    【LabVIEW串口通信】串行通信協(xié)議的可配置轉換問題

    本帖最后由 fantek 于 2013-12-31 18:26 編輯 目前存在的問題:主機( 計算機,PLC等)通過串口連接兩臺或多臺通信協(xié)議不一樣的儀器設備,而這些設備都是自定義協(xié)議,適合
    發(fā)表于 09-29 02:26

    何進行串口通信自定義協(xié)議,真心求教

    現(xiàn)在需要通過串口通信向向顯示屏傳 溫度、適度還有心跳,以便在顯示顯示出來,協(xié)議自定義。求教,怎
    發(fā)表于 09-23 07:38

    STM32 自定義串口協(xié)議 精選資料分享

    STM32 自定義串口協(xié)議串行通信原理與優(yōu)缺點分類按通信方向按通信方式異步串行引腳連接串口外設之間ARM與PC之間字符幀格式串口
    發(fā)表于 08-17 08:58

    液晶顯示模塊_液晶顯示模塊特性

    液晶顯示模塊主要完成液晶顯示器的連接功能。本文講述了液晶顯示模塊的分類,液晶顯示
    發(fā)表于 12-30 10:02 ?9673次閱讀

    1602自定義字符

    1602液晶能夠顯示自定義字符,能夠根據(jù)讀者的具體情況顯示自定義字符。
    發(fā)表于 01-20 15:43 ?1次下載

    7寸USART HMI組態(tài)屏帶GPU字庫串口屏TFT液晶顯示模塊

    7寸USART HMI組態(tài)屏帶GPU字庫串口屏TFT液晶顯示模塊800480 51程序
    發(fā)表于 08-18 18:24 ?30次下載

    如何實現(xiàn)自定義串口通信協(xié)議?

    有一些初學者總覺得通信協(xié)議是一個很復雜的知識,把它想的很高深,導致不知道該怎么學。 同時,偶爾有讀者問關于串口自定義通信協(xié)議相關的問題,今天就來寫寫串口通信協(xié)議,并不是你想想中的那么難
    的頭像 發(fā)表于 06-01 10:01 ?4555次閱讀

    自定義串口通信協(xié)議

    :文檔,詳細說明設計思路及具體協(xié)議格式。題目分析根據(jù)原題內容,可以按照如下步驟來實現(xiàn):選擇硬件層通信協(xié)議設計相應的通信協(xié)議,注意有多個傳感器且有多路溫度采集編寫相關的下位機程序編寫相關
    發(fā)表于 12-02 14:21 ?18次下載
    <b class='flag-5'>自定義</b>串口<b class='flag-5'>通信協(xié)議</b>

    C#與STM32自定義通信協(xié)議

    C#與STM32自定義通信協(xié)議功能:1.可通過C#上位機對多臺STM32下位機進行控制2.自定義上位機與下位機通信協(xié)議
    發(fā)表于 12-24 18:59 ?37次下載
    C#與STM32<b class='flag-5'>自定義</b><b class='flag-5'>通信協(xié)議</b>

    嵌入式開發(fā)中自定義協(xié)議的解析與組包

    在嵌入式產品開發(fā)中,經常會遇到兩個設備之間的通信、設備與服務器的通信、設備和上位機的通信等,很多時候通信協(xié)議都是自定義的,所以...
    發(fā)表于 01-25 11:14 ?5次下載
    嵌入式開發(fā)中<b class='flag-5'>自定義</b><b class='flag-5'>協(xié)議</b>的解析與組包

    ArkUI如何自定義彈窗(eTS)

    自定義彈窗其實也是比較簡單的,通過CustomDialogController類就可以顯示自定義彈窗。
    的頭像 發(fā)表于 08-31 08:24 ?2208次閱讀

    一個小而巧的自定義嵌入式軟件通信協(xié)議

    嵌入式開發(fā)中,常常會自定義一些協(xié)議格式,比如用于板與板之間的通信、客戶端與服務端之間的通信等。
    的頭像 發(fā)表于 04-21 09:16 ?891次閱讀

    拓普微智能液晶顯示模塊HMI自定義通信協(xié)議

    隨著工業(yè)技術的發(fā)展,HMI(人機界面)的應用領域愈加廣泛。通過拓普微的智能液晶顯示模塊實現(xiàn)的自定義通信協(xié)
    的頭像 發(fā)表于 12-09 14:01 ?1234次閱讀
    拓普微<b class='flag-5'>智能</b><b class='flag-5'>液晶顯示</b><b class='flag-5'>模塊</b><b class='flag-5'>HMI</b><b class='flag-5'>自定義</b><b class='flag-5'>通信協(xié)議</b>

    基于PIC16F877A單片機的自定義無線傳輸協(xié)議和短信通信協(xié)議

    電子發(fā)燒友網站提供《基于PIC16F877A單片機的自定義無線傳輸協(xié)議和短信通信協(xié)議.pdf》資料免費下載
    發(fā)表于 11-08 14:47 ?1次下載
    基于PIC16F877A單片機的<b class='flag-5'>自定義</b>無線傳輸<b class='flag-5'>協(xié)議</b>和短信<b class='flag-5'>通信協(xié)議</b>