色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

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

Topway_LCD ? 2021-12-09 14:01 ? 次閱讀

一. HMI與通訊協議

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

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

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

二. 自定義通訊協議

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

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

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

?

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

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

三. 功能需求分析

1. HMI原通信協議屏蔽

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

2. 接收指令數據處理與解析回復

獲取串口數據后,需要提取符合自定義協議規則的指令以便后續對指令進行解析并執行指令功能。因此需要定義接收指令數組,用以存儲串口中符合協議規則的指令數據。

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

3. 協議通信指令功能要求

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

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

?


圖3-1 協議通信主要功能板塊

四. Lua實現自定義協議

1. 屏蔽原廠通信協議

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

?

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

2. 自定義協議的數據結構

2.1 接收指令數組

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

2.2 回復指令數組

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


3. 自定義協議設計實現

LUA程序設計,主要實現函數功能見流程圖4-2。

?

3.1 檢查串口接收區數據

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

3.2 獲取符合自定義協議的指令數據

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

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

3.3 自定義協議的數據檢查及校驗

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

3.4 指令數據解析

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

3.5 執行指令功能

3.5.1 讀變量數據功能

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

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

3.5.2 寫變量數據功能

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

調用函數:string.char(byte)
輸入:接收自定義指令中的字節。
輸出:字符數據。
使用說明:寫入字符串變量時,需要通過該函數將數字指令數據轉成字符數據寫入變量。可以配合字符串連接符“..”轉成字符串數據。

3.5.3 工程跳頁功能

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

3.5.4 設置屏幕背光功能

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

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

五. 結語

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

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

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

    關注

    28

    文章

    894

    瀏覽量

    40334
  • lcd
    lcd
    +關注

    關注

    34

    文章

    4429

    瀏覽量

    167786
  • 液晶屏
    +關注

    關注

    18

    文章

    719

    瀏覽量

    42899
  • 串口通信
    +關注

    關注

    34

    文章

    1627

    瀏覽量

    55570
  • HMI
    HMI
    +關注

    關注

    9

    文章

    589

    瀏覽量

    48606
收藏 人收藏

    評論

    相關推薦

    think-cell;自定義think-cell(一)

    本章介紹如何自定義 think-cell,即如何更改默認顏色和其他默認屬性;這是通過 think-cell 的樣式文件完成的,這些文件將在前四個部分中進行討論。 第五部分 C.5 設置默認議程幻燈片
    的頭像 發表于 01-08 11:31 ?70次閱讀
    think-cell;<b class='flag-5'>自定義</b>think-cell(一)

    總線通信協議解析及應用

    在現代計算機系統中,總線通信協議扮演著至關重要的角色。它們定義了數據如何在處理器、內存、輸入/輸出設備等組件之間傳輸。 總線通信協議的基本概念 總線通信協議是一組規則,它規定了數據在系
    的頭像 發表于 12-31 10:07 ?114次閱讀

    AUTOSAR通信協議解析 如何實現AUTOSAR通信

    通信協議棧是一個復雜的系統,它涵蓋了多種通信方式和模塊,以實現車內ECU之間的高效、可靠的數據交換。以下是對AUTOSAR通信協議的解析及實現AUTOSAR
    的頭像 發表于 12-17 14:54 ?708次閱讀

    液晶顯示屏是什么材料做的

    液晶顯示屏(Liquid Crystal Display,簡稱LCD)是一種廣泛使用的顯示技術,它利用液晶材料的光學特性來控制光線的通過,從而實現圖像的顯示
    的頭像 發表于 10-12 10:41 ?1144次閱讀

    PROFINET通信協議是什么

    PROFINET通信協議是一種專為工業自動化領域設計的基于以太網的實時通信協議。以下是對PROFINET通信協議的詳細解析,包括其定義、特點、體系結構、工作原理、
    的頭像 發表于 09-25 18:13 ?1961次閱讀

    創建自定義的基于閃存的引導加載程序(BSL)

    電子發燒友網站提供《創建自定義的基于閃存的引導加載程序(BSL).pdf》資料免費下載
    發表于 09-19 10:50 ?0次下載
    創建<b class='flag-5'>自定義</b>的基于閃存的引導加載程序(BSL)

    NVIDIA NeMo加速并簡化自定義模型開發

    如果企業希望充分發揮出 AI 的力量,就需要根據其行業需求量身定制的自定義模型。
    的頭像 發表于 07-26 11:17 ?772次閱讀
    NVIDIA NeMo加速并簡化<b class='flag-5'>自定義</b>模型開發

    簡單認識UART通信協議

    模塊等多種設備之間的數據傳輸。以下是對UART通訊協議的詳細簡述,內容將涵蓋其基本原理、工作方式、配置參數、常見應用以及與其他通信協議的比較。
    的頭像 發表于 07-25 18:07 ?1489次閱讀

    e203自定義指令硬件模塊設計,在vivado硬件里自定義指令識別為非法指令怎么解決?

    e203自定義指令硬件模塊設計,修改內核,綜合沒錯誤,軟件也修改工具鏈通過并產生verilog文件,但在vivado硬件里自定義指令識別為非法指令怎么解決
    發表于 05-28 06:40

    HarmonyOS開發案例:【 自定義彈窗】

    基于ArkTS的聲明式開發范式實現了三種不同的彈窗,第一種直接使用公共組件,后兩種使用CustomDialogController實現自定義彈窗
    的頭像 發表于 05-16 18:18 ?1391次閱讀
    HarmonyOS開發案例:【 <b class='flag-5'>自定義</b>彈窗】

    AWTK 開源串口屏開發(18) - 用 C 語言自定義命令

    編寫代碼即可實現常見的應用。但是,有時候我們需要自定義一些命令,以實現一些特殊的功能。本文檔介紹如何使用C語言自定義命令。1.實現hmi_model_cmd_t接口
    的頭像 發表于 05-11 08:24 ?451次閱讀
    AWTK 開源串口屏開發(18) - 用 C 語言<b class='flag-5'>自定義</b>命令

    TSMaster 自定義 LIN 調度表編程指導

    LIN(LocalInterconnectNetwork)協議調度表是用于LIN總線通信中的消息調度的一種機制,我們收到越來越多來自不同用戶希望能夠通過接口實現自定義LIN調度表的需求。所以在
    的頭像 發表于 05-11 08:21 ?702次閱讀
    TSMaster <b class='flag-5'>自定義</b> LIN 調度表編程指導

    HarmonyOS開發實例:【自定義Emitter】

    使用[Emitter]實現事件的訂閱和發布,使用[自定義彈窗]設置廣告信息。
    的頭像 發表于 04-14 11:37 ?1018次閱讀
    HarmonyOS開發實例:【<b class='flag-5'>自定義</b>Emitter】

    鴻蒙ArkUI實例:【自定義組件】

    組件是 OpenHarmony 頁面最小顯示單元,一個頁面可由多個組件組合而成,也可只由一個組件組合而成,這些組件可以是ArkUI開發框架自帶系統組件,比如?`Text`?、?`Button`?等,也可以是自定義組件,本節筆者簡單介紹一下
    的頭像 發表于 04-08 10:17 ?658次閱讀

    液晶模塊是什么?液晶模塊液晶顯示屏有什么區別?

    在電子顯示技術日益發展的今天,液晶顯示技術以其獨特的優勢占據了市場的主導地位。液晶模塊液晶顯示屏作為液晶顯示技術的兩大核心組件,雖然聯系緊
    的頭像 發表于 03-29 09:45 ?1319次閱讀
    主站蜘蛛池模板: 免费精品在线视频| 四虎影视国产精品亚洲精品hd | 99re6久久热在线播放| 男人扒开添女人屁股| JLZZJLZZJLZ老师好多的水| 乳欲性高清在线| 好男人WWW免费高清视频在线| 中文日韩亚洲欧美字幕| 啪啪漫画无遮挡全彩h网站| 国产精品久久国产三级国不卡顿| 亚洲欧美一区二区三区蜜芽| 男人的天堂黄色| 国产跪地吃黄金喝圣水合集| 亚洲一在线| 日本高清免费看| 精品人妻一区二区三区视频53| 99re5.久久热在线视频| 午夜精品久久久久久99热蜜桃| 久久亚洲人成国产精品| 成人在线视频播放| 一本道亚洲区免费观看| 日韩欧美中文字幕在线二视频| 精品久久99麻豆蜜桃666| 被老师按在办公桌吸奶头| 亚洲男女羞羞无遮挡久久丫| 欧美精品九九99久久在观看| 国产自产视频在线观看香蕉| vivoe另类| 伊人亚洲综合青草青草久热| 少爷被多个暗卫肉高h| 蜜柚视频高清在线| 国内精品七七久久影院| 草莓视频cm.888tw| 总裁呻吟双腿大开男男H| 性夜影院爽黄A爽免费动漫| 青青草AV国产精品| 久久久久亚洲日日精品| 国产免费麻传媒精品国产AV| WWW亚洲精品久久久乳| 在线观看精品视频看看播放| 性欧美13处14处破|