亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Kinco觸摸屏與DanFoss控制器之間的自定義CAN通訊*

        2021-07-12 00:47:46陳永輝郝長峰
        現(xiàn)代機(jī)械 2021年3期
        關(guān)鍵詞:發(fā)送數(shù)據(jù)字節(jié)觸摸屏

        陳永輝,郝長峰,張 峰,劉 栓

        (1.河南省高遠(yuǎn)公路養(yǎng)護(hù)技術(shù)有限公司,河南 新鄉(xiāng) 453000;2.公路養(yǎng)護(hù)技術(shù)裝備國家工程實(shí)驗(yàn)室,河南 新鄉(xiāng) 453000;3.河南省高等級(jí)公路檢測(cè)與養(yǎng)護(hù)技術(shù)重點(diǎn)實(shí)驗(yàn)室,河南 新鄉(xiāng) 453000)

        0 引言

        隨著信息技術(shù)的不斷發(fā)展,工業(yè)觸摸屏的價(jià)格在不斷降低。觸摸屏與CAN總線的集成使得觸摸屏在工程機(jī)械中的應(yīng)用更加普及。尤其是通用組態(tài)型工業(yè)觸摸屏不僅具有成本優(yōu)勢(shì),而且在圖形界面的設(shè)計(jì)上更加方便。比如采用IFM控制器與IFM觸摸屏配合使用,雖然有成熟的基于Can Open的EDS可以應(yīng)用,但是圖形界面卻要技術(shù)人員自己編程實(shí)現(xiàn)[2]。同樣如DanFoss控制器雖然可以與DanFoss觸摸屏直接進(jìn)行硬件組態(tài)而不必考慮具體通訊問題,但是同樣圖形界面也是需要技術(shù)人員通過編程而不是通過組態(tài)的方式來實(shí)現(xiàn)。而采用通用組態(tài)型觸摸屏則很好地解決了其中比較繁瑣的圖形界面設(shè)計(jì)問題,但是與控制器之間的通訊問題則往往需要技術(shù)人員通過自行編程來實(shí)現(xiàn)。由于通用觸摸屏廠商通常并不對(duì)用戶開放通訊代碼,因此使其應(yīng)用受到相應(yīng)的限制。本文采用重新生成底層驅(qū)動(dòng)的方式實(shí)現(xiàn)自定義CAN通訊協(xié)議并成功實(shí)現(xiàn)了通用觸摸屏與控制器之間的CAN通訊。

        1 主要功能及實(shí)現(xiàn)

        本文采用Kinco MT4414T觸摸屏和DanFoss MC050控制器進(jìn)行通訊。Kinco MT4414TE觸摸屏具有7英寸有效顯示面積,帶有兩個(gè)串行口,一個(gè)CAN總線接口和一個(gè)以太網(wǎng)接口,采用HMIWare軟件進(jìn)行組態(tài)和編程。DanFoss MC050控制器具有兩個(gè)CAN總線接口,采用PLUS+1 GUIDE軟件進(jìn)行編程。首先對(duì)觸摸屏進(jìn)行組態(tài)并設(shè)置CAN總線。如圖1所示在通訊連接選項(xiàng)中選擇現(xiàn)場(chǎng)總線。

        圖1 觸摸屏設(shè)置CAN總線示意圖

        在現(xiàn)場(chǎng)總線設(shè)置中選擇 CAN CUSTOM PROTOCOL波特率根據(jù)MC050控制器的CAN參數(shù)做相同設(shè)置,如圖2。

        圖2 CAN總線的波特率設(shè)置

        對(duì)觸摸屏進(jìn)行圖形組態(tài)后在Kinco軟件安裝目錄里找到builddriver文件夾并打開fbserver文件,自定義CAN通訊協(xié)議驅(qū)動(dòng)代碼需要在該文件內(nèi)進(jìn)行編程實(shí)現(xiàn)。如圖3。

        圖3 選擇CAN通訊協(xié)議驅(qū)動(dòng)代碼

        1.1 觸摸屏發(fā)送數(shù)據(jù)

        觸摸屏作為一款在工業(yè)以及工程機(jī)械中常用的人機(jī)交互裝置通常用來顯示設(shè)備信息和輸入相關(guān)控制數(shù)據(jù)。在輸入數(shù)據(jù)的時(shí)候輸入一個(gè)數(shù)據(jù)大約需要3~5 s,因此從觸摸屏向控制器發(fā)送數(shù)據(jù)的實(shí)時(shí)性要求并不是特別高[3]。但是由于CAN總線是典型的多主總線,通常要聯(lián)接多個(gè)控制器進(jìn)行實(shí)時(shí)數(shù)據(jù)共享,為了提高系統(tǒng)的實(shí)時(shí)性和總線帶載能力,通訊協(xié)議要盡量節(jié)約總線負(fù)載。同時(shí)考慮到觸摸屏要實(shí)時(shí)顯示大量控制器信息,那么向控制器發(fā)送數(shù)據(jù)報(bào)文要盡量簡潔。

        發(fā)送數(shù)據(jù)工作原理是在觸摸屏通電啟動(dòng)后首先設(shè)定CAN通訊程序循環(huán)周期,并讀取所有待發(fā)送數(shù)據(jù)的初值。在后續(xù)的每個(gè)循環(huán)周期中讀取每個(gè)待發(fā)數(shù)據(jù)的實(shí)時(shí)值,并與上次循環(huán)所讀取的數(shù)值進(jìn)行比較,如果本次循環(huán)所讀取的待發(fā)數(shù)據(jù)實(shí)時(shí)值與上次循環(huán)所讀取的實(shí)時(shí)值不同,則認(rèn)為該值是通過觸摸屏被輸入或修改的數(shù)據(jù)。通過代碼對(duì)該數(shù)據(jù)進(jìn)行打包并發(fā)送到控制器。

        程序框圖4如下:

        圖4 程序框圖

        代碼如下:

        void Init(CAN_PORT CanPort) //程序初始化

        {

        Set_Cycle(50); //設(shè)置循環(huán)處理時(shí)間50ms

        pCANPort = CanPort;

        CopyFromLW(8400,Buf,70); //復(fù)制觸摸屏內(nèi)存LW8400開始的70個(gè)字節(jié)數(shù)據(jù)到緩沖區(qū)Buf

        memcpy(ReadBuf1,Buf,70); //通過內(nèi)存復(fù)制把字節(jié)數(shù)據(jù)轉(zhuǎn)換成16位數(shù)據(jù)

        }

        void main_process(CO_Data* d,UNS32 id)//循環(huán)處理程序

        {

        unsigned short i;

        Message Msg;

        CopyFromLW(8400,Buf,70); //重新讀取觸摸屏內(nèi)存數(shù)據(jù)

        memcpy(ReadBuf2,Buf,70);

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

        {

        if(ReadBuf1[i]!=ReadBuf2[i]) //與上次讀取的內(nèi)存數(shù)據(jù)進(jìn)行比較當(dāng)數(shù)據(jù)發(fā)生改變后打包發(fā)送

        {

        ReadBuf1[i]=ReadBuf2[i];//更新原數(shù)據(jù)以備下次循環(huán)對(duì)比使用

        Msg.cob_id.w=0x182; //觸摸屏發(fā)送數(shù)據(jù)采用固定節(jié)點(diǎn)號(hào)

        Msg.rtr=0;

        Msg.len=3; //數(shù)據(jù)長度固定為三個(gè)字節(jié)

        Msg.data[0]=i;

        Msg.data[1]= Buf[i*2];

        Msg.data[2]= Buf[i*2+1];

        Send_Msg( pCANPort,&Msg,0);

        }

        }

        }

        1.2 控制器接收數(shù)據(jù)

        DanFoss MC050控制器循環(huán)接收觸摸屏發(fā)送過來的CAN數(shù)據(jù)幀,該數(shù)據(jù)幀是以固定節(jié)點(diǎn)號(hào)發(fā)送。包含3個(gè)字節(jié)數(shù)據(jù),第一個(gè)字節(jié)數(shù)據(jù)作為索引字節(jié)表示后續(xù)的兩個(gè)數(shù)據(jù)字節(jié)所對(duì)應(yīng)的控制器參數(shù),后續(xù)兩個(gè)字節(jié)代表所對(duì)應(yīng)的參數(shù)數(shù)值。程序流程圖如圖5。

        圖5 控制器接收數(shù)據(jù)流程圖

        PLUS+1GUIDE是一款圖形化編程軟件,具有簡潔易懂等特點(diǎn)。針對(duì)上述流程圖編程如圖6。

        圖6 控制器接收數(shù)據(jù)編程示意圖

        在程序中設(shè)置MC050控制器始終接收觸摸屏發(fā)送的以0X182為節(jié)點(diǎn)號(hào)的CAN總線數(shù)據(jù)幀,數(shù)據(jù)長度為3個(gè)字節(jié)。并把數(shù)據(jù)幀中最后兩個(gè)字節(jié)數(shù)據(jù)封裝成16位無符號(hào)整型數(shù)據(jù)。

        如圖7所示,設(shè)置所接受的數(shù)據(jù)索引號(hào)為9。當(dāng)接收到索引號(hào)為9的數(shù)據(jù)時(shí),首先讀取控制器內(nèi)部相應(yīng)存儲(chǔ)器數(shù)值與接收到的數(shù)值進(jìn)行比較。當(dāng)所接受的數(shù)據(jù)與控制器中所存儲(chǔ)的數(shù)據(jù)數(shù)值不相等時(shí),將所接收的數(shù)據(jù)存儲(chǔ)到相應(yīng)的存儲(chǔ)器中,同時(shí)輸出到MC050數(shù)據(jù)總線供后續(xù)程序使用。

        圖7 設(shè)置接受數(shù)據(jù)的索引號(hào)

        1.3 控制器發(fā)送數(shù)據(jù)

        鑒于MC050控制器所發(fā)送到觸摸屏的數(shù)據(jù)量比較多,為了盡量節(jié)約總線帶寬、降低總線負(fù)載并充分利用每個(gè)所要發(fā)送的數(shù)據(jù)幀,對(duì)每個(gè)待發(fā)數(shù)據(jù)幀單獨(dú)分配一個(gè)節(jié)點(diǎn)號(hào),并盡量使每個(gè)待發(fā)數(shù)據(jù)幀的8個(gè)數(shù)據(jù)字節(jié)保持填滿狀態(tài)。

        針對(duì)圖8編程如圖9圖10,設(shè)置每個(gè)數(shù)據(jù)幀循環(huán)發(fā)送周期為400 ms,每幀8個(gè)數(shù)據(jù)字節(jié)。

        圖8 控制器發(fā)送數(shù)據(jù)編程框圖

        圖9 控制器發(fā)送數(shù)據(jù)流程圖

        圖10 設(shè)置發(fā)送數(shù)據(jù)的索引號(hào)

        發(fā)送數(shù)據(jù),設(shè)置該幀CAN ID為0X203和非擴(kuò)展幀并把每個(gè)待發(fā)的16位數(shù)據(jù)分解為字節(jié)數(shù)據(jù)輸入到幀數(shù)組中,使每個(gè)幀數(shù)據(jù)包含8個(gè)字節(jié)數(shù)據(jù)。

        1.4 觸摸屏接收數(shù)據(jù)

        Kinco MT4414T觸摸屏接收MC050控制器發(fā)送過來的所有以0X200為起始CAN ID的數(shù)據(jù)幀,并以CAN ID為地址索引把數(shù)據(jù)寫入到對(duì)應(yīng)的內(nèi)部存儲(chǔ)器中。程序代碼如下:

        void MsgDispatch(CO_Data* d,Message *m)

        {

        unsigned short Temp;

        Message msg;

        memcpy(&msg,m,sizeof(Message));

        Temp=8000+(msg.cob_id.w-0x200)*4;//以接收到數(shù)據(jù)幀的節(jié)點(diǎn)號(hào)作為索引存放接收到的數(shù)據(jù)

        CopyToLW(Temp,msg.data,8);

        }

        2 編譯觸摸屏程序并生成驅(qū)動(dòng)文件

        fbserver程序編寫并保存后重新打開圖3文件夾,并運(yùn)行該文件夾內(nèi)的build批處理程序。build程序運(yùn)行后將對(duì)fbserver文件進(jìn)行編譯并生成CAN CUSTOM.so 和Can custom.ge兩個(gè)驅(qū)動(dòng)文件,并自動(dòng)保存在Kinco組態(tài)軟件安裝目錄lib文件夾下的fieldbus driver目錄中。對(duì)觸摸屏組態(tài)程序進(jìn)行全部編譯并下載到觸摸屏中進(jìn)行通電測(cè)試。MC050程序通過PLUS+1GUIDE軟件編譯后采用PLUS+1Server Tool軟件下載并監(jiān)控。在MC050控制器以250 k波特率400 ms周期發(fā)送70個(gè)16位數(shù)據(jù)情況下采用PLUS+1Server Tool軟件監(jiān)控測(cè)試總線負(fù)載率達(dá)到9%。為后續(xù)加載其他CAN通訊裝置預(yù)留了足夠的通訊閾度。

        3 結(jié)論

        本文以Kinco MT4414TE觸摸屏和DanFoss MC050控制器為研究對(duì)象,分析了該觸摸屏和控制器的CAN通訊特點(diǎn),并通過重新生成底層驅(qū)動(dòng)的方式設(shè)計(jì)了自定義CAN通訊協(xié)議。該通訊協(xié)議充分利用了CAN總線的多主特性對(duì)通訊帶寬進(jìn)行了充分的壓縮,有效地降低了總線負(fù)載[4]。并在MOH半柔性攤鋪機(jī)上經(jīng)過實(shí)際應(yīng)用,取得了較好的使用效果和經(jīng)濟(jì)效益。

        猜你喜歡
        發(fā)送數(shù)據(jù)字節(jié)觸摸屏
        移動(dòng)自組網(wǎng)中MAC層協(xié)議研究
        No.8 字節(jié)跳動(dòng)將推出獨(dú)立出口電商APP
        PLC和觸摸屏在衛(wèi)生間控制系統(tǒng)的應(yīng)用
        No.10 “字節(jié)跳動(dòng)手機(jī)”要來了?
        基于馬爾科夫鏈的LoRaWAN網(wǎng)絡(luò)節(jié)點(diǎn)性能分析
        帶標(biāo)記方式的CRDSA++協(xié)議性能分析*
        皮膚“長”出觸摸屏
        簡談MC7字節(jié)碼
        使用IPSec安全傳輸數(shù)據(jù)
        投射式多點(diǎn)觸控電容觸摸屏
        河南科技(2014年12期)2014-02-27 14:10:32
        日韩少妇内射免费播放18禁裸乳 | 日本人妻av在线观看| 亚洲一级天堂作爱av| 日韩一区二区av极品| 精品人妻大屁股白浆无码| 亚洲欧美激情在线一区| 国产综合自拍| 日本在线中文字幕一区二区| 水蜜桃视频在线观看入口| 国产乱子伦精品无码专区 | 九九久久国产精品大片| 久久精品国产亚洲av蜜臀久久| 美女主播网红视频福利一区二区| 天天碰免费上传视频| 久久日本三级韩国三级| 日本一区二区三区激情视频| 午夜亚洲精品一区二区| 亚洲色图视频在线免费看| 韩国三级中文字幕hd| 欧美真人性做爰一二区| 一区二区三区福利在线视频| 蜜桃色av一区二区三区麻豆| 亚洲国产精品一区二区成人av| 久久精品中文字幕大胸| 99久久久无码国产精品9| 激情人妻网址| 国产精品老熟女乱一区二区| 中文字幕乱码高清完整版| 欧洲熟妇色xxxx欧美老妇多毛网站| 日韩av中出在线免费播放网站 | 在线精品无码一区二区三区| 久久蜜桃一区二区三区| 国产av无码专区亚洲a∨毛片| 98久9在线 | 免费| 国产精品亚洲A∨无码遮挡| 国产女主播一区二区久久| 少妇aaa级久久久无码精品片| 亚洲AV无码成人品爱| 91人妻一区二区三区蜜臀| 国产精品av在线| 在线视频精品免费|