chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

Topway_LCD ? 2021-12-09 14:01 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

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

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

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

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

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

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

?

表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默認(rèn)是TOPWAY協(xié)議通信的,存在指令錯誤碼回復(fù)機制。因此在自定義協(xié)議通信過程中,如果沒有屏蔽原協(xié)議,可能會存在串口占用,回復(fù)數(shù)據(jù)混亂的情況。所以在設(shè)計自己協(xié)議通信時首先要把原廠的協(xié)議屏蔽,避免數(shù)據(jù)沖突。

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

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

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

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

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

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

?


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

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

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

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

?

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

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

2.1 接收指令數(shù)組

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

2.2 回復(fù)指令數(shù)組

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


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

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

?

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

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

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

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

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

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

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

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

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

3.5 執(zhí)行指令功能

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

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

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

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

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

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

3.5.3 工程跳頁功能

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

3.5.4 設(shè)置屏幕背光功能

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

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

五. 結(jié)語

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

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

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

    關(guān)注

    28

    文章

    1096

    瀏覽量

    42353
  • lcd
    lcd
    +關(guān)注

    關(guān)注

    36

    文章

    4631

    瀏覽量

    178007
  • 液晶屏
    +關(guān)注

    關(guān)注

    18

    文章

    757

    瀏覽量

    46854
  • 串口通信
    +關(guān)注

    關(guān)注

    34

    文章

    1662

    瀏覽量

    58184
  • HMI
    HMI
    +關(guān)注

    關(guān)注

    9

    文章

    728

    瀏覽量

    52315
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    使用Python/MyHDL創(chuàng)建自定義FPGA IP

    使用 Python/MyHDL 創(chuàng)建自定義 FPGA IP,與 Vivado 集成,并通過 PYNQ 進行控制——實現(xiàn)軟件上的簡單硬件設(shè)計。
    的頭像 發(fā)表于 04-09 09:53 ?232次閱讀
    使用Python/MyHDL創(chuàng)建<b class='flag-5'>自定義</b>FPGA IP

    MCUXpresso SDK創(chuàng)建自定義清單

    概述 MCUXpresso SDK 24.12 介紹塞德恩漢CED支持自定義清單,使開發(fā)人員能夠精確定義其工作區(qū)中包含哪些組件、驅(qū)動程序、中間件和板支持包。此功能在極簡主義、可重復(fù)性和 CI/CD
    發(fā)表于 04-07 07:11

    極海APM32F427如何實現(xiàn)自定義USB HID設(shè)備與PC進行通信

    最近需要使用到 APM32F427 枚舉成Custom HID設(shè)備進行用戶自定義通信,但是官方的例程只有提供的HID枚舉為鼠標(biāo)或者鍵盤類型的設(shè)備。這里記錄一下,怎么使用Geehy官方的USB中間件,實現(xiàn)自定義的USB HID設(shè)備
    的頭像 發(fā)表于 03-30 09:30 ?2779次閱讀
    極海APM32F427如何實現(xiàn)<b class='flag-5'>自定義</b>USB HID設(shè)備與PC進行<b class='flag-5'>通信</b>

    開發(fā)智能體配置-隱私協(xié)議服務(wù)

    1.已有描述隱私政策和用戶隱私權(quán)利的隱私網(wǎng)址:在智能體【配置】-【隱私協(xié)議服務(wù)】頁面,隱私聲明處選擇“自定義隱私政策”,在隱私政策網(wǎng)址中直接填寫隱私網(wǎng)址。 2.沒有自定義隱私網(wǎng)址,平
    發(fā)表于 02-03 15:54

    無圖形界面模式下自定義檢查工具的應(yīng)用

    此前文章已介紹 ANSA 中的自定義檢查工具。本文將探討該功能在無圖形界面(No-GUI)模式下的應(yīng)用,旨在滿足標(biāo)準(zhǔn)化工作流程的需求,適用于需要高度自動化的前處理場景。通過集成自定義檢查,用戶可實現(xiàn)工作流程的高效自動化運行。
    的頭像 發(fā)表于 11-30 14:13 ?784次閱讀
    無圖形界面模式下<b class='flag-5'>自定義</b>檢查工具的應(yīng)用

    電能質(zhì)量在線監(jiān)測裝置的數(shù)據(jù)推送協(xié)議是否可以自定義配置?

    現(xiàn)代電能質(zhì)量在線監(jiān)測裝置普遍支持 協(xié)議參數(shù)自定義配置 和 協(xié)議組合靈活適配 ,用戶可根據(jù)實際需求調(diào)整通信參數(shù)、映射數(shù)據(jù)格式,甚至通過第三方工具實現(xiàn)非標(biāo)準(zhǔn)
    的頭像 發(fā)表于 11-12 13:58 ?558次閱讀
    電能質(zhì)量在線監(jiān)測裝置的數(shù)據(jù)推送<b class='flag-5'>協(xié)議</b>是否可以<b class='flag-5'>自定義</b>配置?

    智能顯示模塊怎么使用?使用起來方便嗎?

    智能顯示模塊怎么使用?使用起來方便嗎? 有沒有什么指導(dǎo)手冊可以查看?
    發(fā)表于 10-21 15:17

    如何在e203 SOC中添加自定義外設(shè)

    如何在E203 中添加自定義的外設(shè),困擾已久,以下是一個從別處借鑒而來的方法: 1、設(shè)計好自定義外設(shè)的RTL后,在其中添加ICB總線的握手協(xié)議和讀寫寄存器。 2、設(shè)計一個對外接口,用來設(shè)定
    發(fā)表于 10-20 10:38

    e203自定義指令硬件模塊設(shè)計不工作是怎么回事?

    設(shè)計了自定義指令,用軟件跑了verilog二進制文件,激勵進去。但自定義的硬件模塊不工作,都是零,是我指令沒給進去嗎?還是邏輯有問題?有遇到過類似問題的小伙伴嗎?求解答
    發(fā)表于 10-20 06:50

    串口智能液晶(HMT043ATA-2C),如何讓modbus在液晶中循環(huán)發(fā)出報文

    串口智能液晶(HMT043ATA-2C),如何讓modbus在液晶中循環(huán)發(fā)出報文
    發(fā)表于 10-18 09:43

    智能硬件通過小聆AI自定義MCP應(yīng)用開發(fā)操作講解

    智能硬件通過小聆AI自定義MCP應(yīng)用開發(fā)操作講解 前言 MCP(Modular Communication Protocol,模塊通信協(xié)議)為智能
    發(fā)表于 10-14 15:50

    LOTO示波器自定義解碼功能—CANFD解碼

    /?spm_id_from=333.1365.list.card_archive.click 。 視頻中僅對串口進行解碼演示,正好我們從客戶手中拿到了一塊USB轉(zhuǎn)CAN/CANFD模塊,如下圖所示, 本文借此對自定義解碼功能
    的頭像 發(fā)表于 07-11 10:34 ?1204次閱讀
    LOTO示波器<b class='flag-5'>自定義</b>解碼功能—CANFD解碼

    大彩講堂:VisualTFT軟件如何自定義圓形進度條

    VisualTFT軟件如何自定義圓形進度條
    的頭像 發(fā)表于 07-07 17:10 ?1924次閱讀
    大彩講堂:VisualTFT軟件如何<b class='flag-5'>自定義</b>圓形進度條

    KiCad 中的自定義規(guī)則(KiCon 演講)

    “ ?Seth Hillbrand 在 KiCon US 2025 上為大家介紹了 KiCad 的規(guī)則系統(tǒng),并詳細(xì)講解了自定義規(guī)則的設(shè)計與實例。? ” ? 演講主要圍繞 加強 KiCad 中的自定義
    的頭像 發(fā)表于 06-16 11:17 ?2568次閱讀
    KiCad 中的<b class='flag-5'>自定義</b>規(guī)則(KiCon 演講)

    HarmonyOS應(yīng)用自定義鍵盤解決方案

    自定義鍵盤是一種替換系統(tǒng)默認(rèn)鍵盤的解決方案,可實現(xiàn)鍵盤個性化交互。允許用戶結(jié)合業(yè)務(wù)需求與操作習(xí)慣,對按鍵布局進行可視化重構(gòu)、設(shè)置多功能組合鍵位,使輸入更加便捷和舒適。在安全防護層面,自定義鍵盤可以
    的頭像 發(fā)表于 06-05 14:19 ?2629次閱讀