在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

【Z站推薦】CAN接口卡如何解決上位機(jī)系統(tǒng)的調(diào)度延時(shí)問(wèn)題?

ZLG致遠(yuǎn)電子 ? 2022-07-24 17:02 ? 次閱讀

上位機(jī)調(diào)用CAN接口卡發(fā)送數(shù)據(jù)時(shí),受上位機(jī)系統(tǒng)調(diào)度耗時(shí)的影響,實(shí)際CAN卡發(fā)送時(shí)會(huì)有時(shí)間上的誤差,是否有CAN卡可以將發(fā)送定時(shí)放到設(shè)備中來(lái)完成,從而規(guī)避掉上位機(jī)的調(diào)度影響呢?本文將為大家具體分析。使用CAN接口卡是CAN通訊領(lǐng)域無(wú)法避開(kāi)的話題,它提供各種的接口類(lèi)型,兼容多種上位機(jī)系統(tǒng),簡(jiǎn)單易用的二次開(kāi)發(fā)接口函數(shù)庫(kù)。此外,windows平臺(tái)還提供了專(zhuān)業(yè)的應(yīng)用層協(xié)議庫(kù)(DBC解析庫(kù)、UDS庫(kù)等),比起用ARM直接開(kāi)發(fā)CAN(FD),用戶使用接口卡二次開(kāi)發(fā),可以直接調(diào)用高層協(xié)議函數(shù)庫(kù),可以極大的節(jié)省應(yīng)用層協(xié)議棧的開(kāi)發(fā)成本。用戶只需關(guān)注自己的業(yè)務(wù)邏輯即可,大大的縮短項(xiàng)目開(kāi)發(fā)周期。如此方便的用法也產(chǎn)生了一個(gè)問(wèn)題,接口卡必須依賴于上位機(jī)的調(diào)用,不管windows還是linux系統(tǒng),非實(shí)時(shí)系統(tǒng)就涉及到一個(gè)延時(shí)問(wèn)題——系統(tǒng)調(diào)度的延時(shí)例如當(dāng)上位機(jī)執(zhí)行到transmit發(fā)送函數(shù),到系統(tǒng)執(zhí)行這個(gè)動(dòng)作,驅(qū)動(dòng)將buffer下發(fā)給CAN接口卡的時(shí)間。系統(tǒng)調(diào)度時(shí)間是不可控的,取決于多方因素:程序開(kāi)發(fā)的語(yǔ)言,電腦的性能,CPU當(dāng)前的占用率等,一般都為毫秒級(jí)誤差。因此,當(dāng)用戶需要軟件定時(shí)來(lái)發(fā)送報(bào)文時(shí),無(wú)法保證很低的時(shí)間誤差。

問(wèn)

是否有辦法規(guī)避上位機(jī)調(diào)度的延時(shí)?

方法是有的。USBCANFD提供了兩種方法,一定程度上規(guī)避上位機(jī)調(diào)度的時(shí)延問(wèn)題:

硬件定時(shí)發(fā)送;

隊(duì)列發(fā)送。

90c06842-0a15-11ed-9ade-dac502259ad0.png


90df7872-0a15-11ed-9ade-dac502259ad0.jpg 硬件定時(shí)發(fā)送

USBCANFD 支持每通道最大 100條定時(shí)發(fā)送列表,只需將待發(fā)送數(shù)據(jù)及周期設(shè)置到設(shè)備并使能,設(shè)備將自動(dòng)進(jìn)行發(fā)送。相比于 PC 端的發(fā)送,定時(shí)發(fā)送精度高,周期準(zhǔn)。在設(shè)備進(jìn)行定時(shí)發(fā)送任務(wù)時(shí),PC 端仍可調(diào)用數(shù)據(jù)發(fā)送接口進(jìn)行數(shù)據(jù)發(fā)送。軟件實(shí)現(xiàn)方法,在ZCAN_StartCAN之后,繼續(xù)通過(guò)setvalue方式將定時(shí)發(fā)送結(jié)構(gòu)體下載到設(shè)備中:

ZCAN_AUTO_TRANSMIT_OBJ auto_can; //從CAN定時(shí)發(fā)送結(jié)構(gòu)體生成實(shí)例ZCANFD_AUTO_TRANSMIT_OBJ auto_canfd; //從CANFD定時(shí)發(fā)送結(jié)構(gòu)體生成實(shí)例memset(&auto_can, 0, sizeof(auto_can));auto_can.index = 0; // 定時(shí)列表索引0auto_can.enable = 1; // 使能此索引,每條可單獨(dú)設(shè)置auto_can.interval = 100; // 定時(shí)發(fā)送間隔100msget_can_frame(auto_can.obj, 0); // 構(gòu)造CAN報(bào)文prop->SetValue("1/auto_send", (const char*)&auto_can); // 設(shè)置定時(shí)發(fā)送memset(&auto_can, 0, sizeof(auto_can));auto_can.index = 1; // 定時(shí)列表索引1auto_can.enable = 1; // 使能此索引,每條可單獨(dú)設(shè)置auto_can.interval = 200; // 定時(shí)發(fā)送間隔200msget_can_frame(auto_can.obj, 1); // 構(gòu)造CAN報(bào)文prop->SetValue("1/auto_send", (const char*)&auto_can); // 設(shè)置定時(shí)發(fā)送memset(&auto_canfd, 0, sizeof(auto_canfd));auto_canfd.index = 2; // 定時(shí)列表索引2auto_canfd.enable = 1; // 使能此索引,每條可單獨(dú)設(shè)置auto_canfd.interval = 500; // 定時(shí)發(fā)送間隔500msget_canfd_frame(auto_canfd.obj, 2); // 構(gòu)造CANFD報(bào)文prop->SetValue("1/auto_send_canfd", (const char*)&auto_canfd); // 設(shè)置定時(shí)發(fā)送prop->SetValue("1/apply_auto_send", "0"); // 使能定時(shí)發(fā)送Sleep(5000); // 等待發(fā)送5sprop->SetValue("1/clear_auto_send", "0"); // 清除定時(shí)發(fā)送

優(yōu)點(diǎn):1.周期穩(wěn)定,精度100us;2.可修改報(bào)文內(nèi)容隨時(shí)覆蓋;3.可根據(jù)需求單獨(dú)對(duì)某條定時(shí)報(bào)文進(jìn)行禁用操作。缺點(diǎn):1.數(shù)據(jù)不是自動(dòng)變化的,如涉及到內(nèi)容變化,需要再次設(shè)置定時(shí);2.不適用于非周期性的報(bào)文。


90df7872-0a15-11ed-9ade-dac502259ad0.jpg 隊(duì)列發(fā)送

通過(guò)隊(duì)列發(fā)送,用戶可以提前準(zhǔn)備好多幀報(bào)文,設(shè)定報(bào)文之間的間隔,將準(zhǔn)備好的報(bào)文發(fā)送給設(shè)備,設(shè)備按照預(yù)定義的幀間隔進(jìn)行精準(zhǔn)發(fā)送,通過(guò)此方式可提高發(fā)送幀之間的幀間隔精度。與定時(shí)發(fā)送相比,隊(duì)列發(fā)送每幀只發(fā)送一次,需由用戶不斷準(zhǔn)備報(bào)文并批量發(fā)送到設(shè)備。USBCANFD-200U先通過(guò)SetValue將設(shè)備的發(fā)送模式切換成隊(duì)列發(fā)送模式。隊(duì)列發(fā)送緩存大小為100幀,隊(duì)列發(fā)送過(guò)程中,可以通過(guò)GetValue查詢當(dāng)前隊(duì)列緩存的剩余空間。隊(duì)列發(fā)送有兩種方法實(shí)現(xiàn):

一種是合并發(fā)送ZCAN_TransmitData——對(duì)應(yīng)發(fā)送結(jié)構(gòu)體ZCANDataObj;

另一種是單通道發(fā)送ZCAN_Transmit和ZCAN_TransmitFD——對(duì)應(yīng)發(fā)送結(jié)構(gòu)體ZCAN_Transmit_Data和ZCAN_TransmitFD_Data。

兩者都是發(fā)送結(jié)構(gòu)體中使能隊(duì)列發(fā)送標(biāo)志位,并且填入隊(duì)列發(fā)送報(bào)文間隔,再通過(guò)對(duì)應(yīng)發(fā)送函數(shù),發(fā)給設(shè)備合并發(fā)送ZCAN_TranmitData的代碼實(shí)現(xiàn):

Prop->Setvalue(“0/set_send_mode”, “1”); //USBCANFD需要切換發(fā)送模式,CANFDNET無(wú)需此步驟…void get_can_frame_queue(ZCANDataObj& data, int ch, canid_t id, bool is_fd, UINT delay){memset(&data, 0, sizeof(data)); //初始化data結(jié)構(gòu)體data.dataType = ZCAN_DT_ZCAN_CAN_CANFD_DATA;data.chnl = ch; //通道號(hào)ZCANCANFDData & can_data = data.data.zcanCANFDData;can_data.frame.can_id = MAKE_CAN_ID(id, 0, 0, 0); // CAN ID + STD/EXT + DATA/RMTcan_data.frame.len = is_fd ? 64 : 8; // 數(shù)據(jù)長(zhǎng)度 8/64can_data.flag.unionVal.transmitType = 0; // 正常發(fā)送can_data.flag.unionVal.txEchoRequest = 1; // 設(shè)置發(fā)送回顯can_data.flag.unionVal.frameType = is_fd ? 1 : 0; // CAN or CANFDcan_data.flag.unionVal.txDelay = ZCAN_TX_DELAY_UNIT_MS; // 隊(duì)列延時(shí)單位毫秒can_data.timeStamp = delay; // 隊(duì)列延時(shí)時(shí)間,最大值 65535for (int i = 0; i < can_data.frame.len; ++i) { ? ? ? ? ? ? ? ? // 填充 CAN 報(bào)文 DATAcan_data.frame.data[i] = i;}…Ret = ZCAN.TransmitData(device_handle, data ,len);

第二種方法ZCAN_Transmit的代碼實(shí)現(xiàn):

Prop->Setvalue(“0/set_send_mode”, “1”); //USBCANFD需要切換發(fā)送模式,CANFDNET無(wú)需此步驟…ZCAN_Transmit_Data can_data[10]={};ZCAN_TransmitFD_Data canfd_data[10]={};memset(& can_data, 0, sizeof(can_data)); //初始化data結(jié)構(gòu)體memset(& canfd_data, 0, sizeof(canfd_data)); //初始化data結(jié)構(gòu)體…can_data[0].frame.can_id =0x100;can_data[0].frame.__pad =0x80; //使能CAN幀隊(duì)列發(fā)送can_data[0].frame.__res0 =0x64; // 低位,設(shè)置100mscan_data[0].frame.__res1 =0x00; // 高位…canfd_data[0].frame.can_id =0x200;canfd_data[0].frame.flags=0x80; //使能非加速CANFD隊(duì)列發(fā)送,0x81使能加速CANFD隊(duì)列發(fā)送canfd_data[0].frame.__res0 =0x64; // 低位,設(shè)置100mscanfd_data[0].frame.__res1 =0x00; // 高位…ret = ZCAN.Transmit(channel_handle, can_data, 10);ret_fd = ZCAN.TransmitFD(channel_handle, canfd_data, 10);

隊(duì)列發(fā)送的優(yōu)缺點(diǎn):

  • 優(yōu)點(diǎn):定時(shí)間隔準(zhǔn)確,最小精度為100us;
  • 缺點(diǎn):設(shè)備分配的緩存大小有限,實(shí)際使用中需要結(jié)合getvalue去查緩存剩余空間,避免發(fā)送幀丟失。

以上兩種方法分別適用不同場(chǎng)景,根據(jù)實(shí)際應(yīng)用需求,靈活使用,可以很大程度規(guī)避上位機(jī)調(diào)度帶來(lái)的時(shí)延問(wèn)題,對(duì)用戶的通訊起到更穩(wěn)定和精準(zhǔn)的控制。

【版權(quán)聲明】本文為ZLG開(kāi)發(fā)者社區(qū)用戶原創(chuàng)內(nèi)容,未經(jīng)授權(quán)不得轉(zhuǎn)載。歡迎更多用戶到社區(qū)交流互動(dòng)、創(chuàng)作博文,一經(jīng)采用,可獲得百元京東E卡。

地址:https://developer.zlg.cn(長(zhǎng)按復(fù)制到PC端打開(kāi))

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

    關(guān)注

    33

    文章

    8650

    瀏覽量

    151415
  • CAN
    CAN
    +關(guān)注

    關(guān)注

    57

    文章

    2757

    瀏覽量

    463937
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    STM32F103上位機(jī)升級(jí),RS485升級(jí)、CAN升級(jí)

    機(jī)通過(guò)RS232接口升級(jí)主機(jī) 2、上位機(jī)通過(guò)RS232接口升級(jí)主機(jī)及RS485從機(jī)1 3、
    發(fā)表于 01-03 08:57

    上位機(jī)系統(tǒng)架構(gòu)分析 上位機(jī)與下位機(jī)的區(qū)別

    上位機(jī)系統(tǒng)架構(gòu)分析 1. 上位機(jī)的定義與作用 上位機(jī)
    的頭像 發(fā)表于 12-04 10:17 ?680次閱讀

    DP83867雙端口TSN PCle應(yīng)用接口卡

    電子發(fā)燒友網(wǎng)站提供《DP83867雙端口TSN PCle應(yīng)用接口卡.pdf》資料免費(fèi)下載
    發(fā)表于 11-13 15:23 ?0次下載
    DP83867雙端口TSN PCle應(yīng)用<b class='flag-5'>接口卡</b>

    CAN總線測(cè)試工具選擇與使用

    1. CAN分析儀 CAN分析儀是一種高級(jí)的測(cè)試工具,能夠?qū)崟r(shí)捕獲和分析CAN總線上的數(shù)據(jù)。它們通常具備以下功能: 數(shù)據(jù)捕獲和存儲(chǔ) 實(shí)時(shí)數(shù)據(jù)顯示 信號(hào)診斷和錯(cuò)誤檢測(cè) 網(wǎng)絡(luò)參數(shù)配置 模擬CAN
    的頭像 發(fā)表于 11-12 10:16 ?778次閱讀

    DP83867 SFP應(yīng)用接口卡

    電子發(fā)燒友網(wǎng)站提供《DP83867 SFP應(yīng)用接口卡.pdf》資料免費(fèi)下載
    發(fā)表于 11-09 14:42 ?0次下載
    DP83867 SFP應(yīng)用<b class='flag-5'>接口卡</b>

    CAN/CANFD接口函數(shù)使用說(shuō)明

    電子發(fā)燒友網(wǎng)站提供《CAN/CANFD接口函數(shù)使用說(shuō)明.pdf》資料免費(fèi)下載
    發(fā)表于 10-15 17:35 ?0次下載

    絕對(duì)值碼盤(pán)接口卡的廣泛應(yīng)用與創(chuàng)新實(shí)踐

    。數(shù)控機(jī)床領(lǐng)域在現(xiàn)代數(shù)控機(jī)床中,精度和穩(wěn)定性是至關(guān)重要的。絕對(duì)值碼盤(pán)接口卡被廣泛應(yīng)用于機(jī)床的坐標(biāo)軸位置測(cè)量系統(tǒng)中。以一臺(tái)高精度加工中心為例,機(jī)床的X、Y、Z三個(gè)坐標(biāo)軸均
    的頭像 發(fā)表于 09-05 17:08 ?249次閱讀
    絕對(duì)值碼盤(pán)<b class='flag-5'>接口卡</b>的廣泛應(yīng)用與創(chuàng)新實(shí)踐

    適用于網(wǎng)絡(luò)接口卡的BAW振蕩器解決方案

    電子發(fā)燒友網(wǎng)站提供《適用于網(wǎng)絡(luò)接口卡的BAW振蕩器解決方案.pdf》資料免費(fèi)下載
    發(fā)表于 08-27 11:31 ?0次下載
    適用于網(wǎng)絡(luò)<b class='flag-5'>接口卡</b>的BAW振蕩器解決方案

    PCI CAN和PCIE CAN的區(qū)別

    PCI CAN和PCIe CAN主要在接口標(biāo)準(zhǔn)、性能、以及應(yīng)用場(chǎng)景等方面存在不同。
    的頭像 發(fā)表于 08-02 09:36 ?590次閱讀

    采集到的can數(shù)據(jù)后怎么處理

    CAN數(shù)據(jù)之前,首先需要了解如何采集這些數(shù)據(jù)。通常,CAN數(shù)據(jù)采集包括以下幾個(gè)步驟: 硬件選擇 :選擇適合的CAN接口卡或USB轉(zhuǎn)CAN適配
    的頭像 發(fā)表于 06-16 09:41 ?797次閱讀

    上位機(jī)和下位機(jī)是什么意思 上位機(jī)和下位機(jī)的區(qū)別

    上位機(jī)和下位機(jī)是計(jì)算機(jī)控制系統(tǒng)中兩個(gè)重要的概念,它們?cè)诳刂啤⑼ㄐ藕蛿?shù)據(jù)處理等方面發(fā)揮著關(guān)鍵作用。在本文中,我們將詳細(xì)探討上位
    的頭像 發(fā)表于 06-06 10:11 ?6040次閱讀

    上位機(jī)與pLc通訊中斷如何判斷

    。 一、通信中斷的常見(jiàn)原因 硬件故障 :包括通信線路、接口卡、PLC硬件等。 軟件配置錯(cuò)誤 :如通信參數(shù)設(shè)置錯(cuò)誤,如波特率、數(shù)據(jù)位、停止位、校驗(yàn)位等。 網(wǎng)絡(luò)問(wèn)題 :在以太網(wǎng)通信中,可能存在網(wǎng)絡(luò)擁堵、IP地址沖突等問(wèn)題。 電磁干擾 :
    的頭像 發(fā)表于 06-06 09:55 ?2557次閱讀

    如何實(shí)現(xiàn)上位機(jī)靈活調(diào)度下位機(jī)

    把下位機(jī)各個(gè)功能做成不同的函數(shù),然后通過(guò)上位機(jī)來(lái)調(diào)度各個(gè)函數(shù)執(zhí)行,比如說(shuō)上位機(jī)發(fā)送一個(gè)協(xié)議讓LE
    發(fā)表于 04-25 07:21

    為什么說(shuō)每個(gè)CAN從業(yè)者都該有臺(tái)USBCAN呢?

    首先,USBCAN是CAN總線調(diào)試的常用工具。它作為CAN總線分析儀或CAN接口卡,能夠幫助工程師在測(cè)試CAN總線通訊時(shí)有效地分析總線上的數(shù)
    的頭像 發(fā)表于 04-15 11:07 ?389次閱讀

    什么是上位機(jī)上位機(jī)和下位機(jī)的區(qū)別

    上位機(jī)和下位機(jī)之間的通信通常通過(guò)各種通信協(xié)議進(jìn)行,包括但不限于RS232、RS485、CAN總線、以太網(wǎng)等。
    的頭像 發(fā)表于 02-19 15:40 ?1.7w次閱讀
    什么是<b class='flag-5'>上位</b><b class='flag-5'>機(jī)</b>?<b class='flag-5'>上位</b><b class='flag-5'>機(jī)</b>和下位<b class='flag-5'>機(jī)</b>的區(qū)別
    主站蜘蛛池模板: 91中文在线| 亚洲福利视频一区| 天天干夜啪| 爱爱免费网址| 色婷婷综合缴情综六月| 亚洲一区二区三区在线视频| 黑人40厘米全进去xxxx猛交| 免免费看片| 久操视频免费| 西西午夜影院| 激情在线网站| 天堂资源8中文最新版在线| 成人v片| 六月婷婷网视频在线观看| 在线观看精品国产福利片100| 高h 男男| 特级毛片免费视频观看| 亚洲29p| 亚洲韩国在线一卡二卡| 色天使色婷婷丁香久久综合| 嫩草影院网站入口| 日本媚薬痉挛在线观看免费| 天天噜噜日日噜噜久久综合网| 在线观看视频色| 四虎影视在线影院4hu| 玖玖色视频| 亚洲综合黄色| 国产高清毛片| 男男之h啪肉np文| 色五夜婷婷| 国产主播精品在线| 国产精品久久国产三级国不卡顿| 黄色伊人| 午夜亚洲国产精品福利| 天天色播| 成人深夜视频| 护士一级aaaaaa毛片| 中文字幕天天躁夜夜狠狠综合| 深爱婷婷网| 国产成人精品免费视频大全可播放的| 俺去啦最新网址|