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

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

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

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

CANOpen系列教程14_協(xié)議源碼移植 (二)

黃工的嵌入式技術(shù)圈 ? 來源:黃工的嵌入式技術(shù)圈 ? 2020-03-06 15:06 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1寫在前面

該系列教程上一篇文章《協(xié)議源碼移植(一)》算是對(duì)CANOpen移植的準(zhǔn)備工作,如果想要理解移植過程的知識(shí),其實(shí)還有許多內(nèi)容得了解。

本文挑一些重點(diǎn)來講述,從協(xié)議源碼添加到工程,源代碼理解,到最后輸出效果。

提示:該系列教程基于:CanFestival架構(gòu)、STM32F1芯片、FreeRTOS操作系統(tǒng)、Keil MDK-ARM開發(fā)環(huán)境。

2

添加源碼、路徑

本節(jié)內(nèi)容針對(duì)初學(xué)者做出簡要描述,相關(guān)內(nèi)容可參看文章《Keil系列教程02_新建基礎(chǔ)軟件工程》。

2.1 添加組、文件

簡單來說,就是在你已建好的工程中添加與CANOpen相關(guān)的組和文件,如下圖:

2.2 添加路徑

添加CANOpen源碼的inc頭文件等相關(guān)路徑,編譯的時(shí)候才能找到對(duì)應(yīng)文件。

3

添加代碼及分析

移植的重要過程就是添加、刪除和修改源代碼這一步驟。從教程上一篇文章下載,并看過源代碼的朋友就會(huì)發(fā)現(xiàn),其實(shí)我們需要添加的代碼并不多,主要就是需要實(shí)現(xiàn)幾個(gè)底層的驅(qū)動(dòng)函數(shù)。

下面將重要的幾點(diǎn)羅列出來。

1.修改canfestival.h文件

上文說了一下:添加三行語句,防止遞歸包含。

這里就是CANOpen定義的底層驅(qū)動(dòng)接口,接口函數(shù)具體代碼需要我們自己實(shí)現(xiàn)。

canSend這個(gè)函數(shù)被CANOpen源代碼調(diào)用的最多,我們最好不修改函數(shù)接口,同時(shí)需要我們實(shí)現(xiàn)(我在canopen_drv.c中實(shí)現(xiàn)的)。

其它initTimer、 canInit等函數(shù)接口,在源碼中沒有調(diào)用,我也沒有按照這套接口來實(shí)現(xiàn)(初始化我在bsp下實(shí)現(xiàn)的)。

2.底層驅(qū)動(dòng)初始化代碼

上面說的initTimer、 canInit初始化,我這邊為了與我代碼一致,使用TIM_Initializes、CAN_Initializes替代。

分別位于bsp_timer.c 和 bsp_can.c下面,實(shí)現(xiàn)的具體內(nèi)容這里不描述,具體可以下載源碼工程參看。

3.定時(shí)器調(diào)度相關(guān)接口

其中setTimer和getElapsedTime這兩個(gè)函數(shù)會(huì)被timer.c協(xié)議源文件調(diào)用。在timer.h里面有什么(如下圖),但函數(shù)體沒有實(shí)現(xiàn),需要我們自己實(shí)現(xiàn)。

同時(shí),TimeDispatch函數(shù)已經(jīng)實(shí)現(xiàn),定義在timer.c,但需要被定時(shí)調(diào)用(調(diào)度)。

4.CAN發(fā)送接口函數(shù)canSend

這個(gè)CAN發(fā)送函數(shù)相當(dāng)重要,接口最好不要自定義,因?yàn)閟cr下面多個(gè)源文件都調(diào)用了該函數(shù)。

同時(shí),發(fā)送函數(shù)會(huì)被定時(shí)調(diào)度。所以,如果你調(diào)度方式像我例程那樣,使用定時(shí)器中斷的方式實(shí)現(xiàn)。那么,你就要考慮在中斷函數(shù)里面發(fā)送的情況。

以上就是CANOpen移植,底層驅(qū)動(dòng)相關(guān)的一些接口實(shí)現(xiàn)和說明。這部分內(nèi)容,CanFestival框架提供源碼是定義在drivers下面,比如STM32F1的就是cm3下面的cm3.c:

我單獨(dú)提出來實(shí)現(xiàn)這些驅(qū)動(dòng)函數(shù)是因?yàn)槲遗芰艘粋€(gè)FreeRTOS系統(tǒng)。當(dāng)然,你的驅(qū)動(dòng)也可按照drivers下面那樣實(shí)現(xiàn)。

5.其它

A.發(fā)送和接收緩存

我這邊是通過隊(duì)列來實(shí)現(xiàn)發(fā)送和接收緩存,而cm3.c是通過MessBuf_Write和MessBuf_Read來實(shí)現(xiàn)緩存。

B.中斷接收

我使用CAN中斷接收數(shù)據(jù),和定時(shí)器中斷調(diào)度。

提示:我中斷入口函數(shù)是宏定義實(shí)現(xiàn)的,需要包含宏定義頭文件。

#define CAN_RX_IRQHandler USB_LP_CAN1_RX0_IRQHandler

#define CANOPEN_TIM_IRQ_Handler TIM2_IRQHandler

C.配置節(jié)點(diǎn)

配置節(jié)點(diǎn)ID,節(jié)點(diǎn)的狀態(tài),這里只是簡單的Demo,沒有添加應(yīng)用代碼。

4

工程下載及運(yùn)行效果

1.下載工程“CANOpen工程模板(含主、從站-心跳)”

https://pan.baidu.com/s/1LzD0Epc-Z8vlHsb-sD3WVw

提取碼:l2dc

2.運(yùn)行效果

我提供的例程是一個(gè)只有心跳(間隔時(shí)間我們配置為1000ms)Demo工程。所以,啟動(dòng)之后,你會(huì)發(fā)現(xiàn)總線上間隔1秒有一個(gè)心跳。

下圖是我通過CAN分析儀抓取的CAN總線數(shù)據(jù)(如果你沒有分析儀,可以用我《系列教程6》提供的例程,通過串口打?。?/p>

先啟動(dòng)一會(huì)兒主站,然后關(guān)閉,再啟動(dòng)從站的數(shù)據(jù),重要信息我都標(biāo)記出來了。

A.上線報(bào)文:ID:0x700 Data:0

B.網(wǎng)絡(luò)管理:ID:0x000 Data:00代表管理所有節(jié)點(diǎn) Data:80代表復(fù)位節(jié)點(diǎn)

C.心跳報(bào)文:ID:0x700 Data:05代表Operational操作狀態(tài)

提示:主站具有網(wǎng)絡(luò)管理,而從站沒有。同時(shí),數(shù)據(jù)值(如81、05)的含義可參看CiA 301手冊(cè)網(wǎng)絡(luò)管理的章節(jié)(后期進(jìn)行講述)。

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

    關(guān)注

    59

    文章

    3042

    瀏覽量

    472072
  • CANopen
    +關(guān)注

    關(guān)注

    8

    文章

    477

    瀏覽量

    47826
  • STM32F
    +關(guān)注

    關(guān)注

    1

    文章

    42

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    ProfiNet轉(zhuǎn)CANopen協(xié)議轉(zhuǎn)換網(wǎng)關(guān)實(shí)現(xiàn)西門子1200 PLC與多個(gè)CANopen水下儀表通訊的配置案例

    CANopen 協(xié)議,且數(shù)量超過 9 臺(tái)。傳統(tǒng)方案是在 PLC 機(jī)架內(nèi)加裝 CM CANopen 模塊,但受限于海底長距離總線拓?fù)渑c防爆分區(qū),一旦超過 8 個(gè)節(jié)點(diǎn)即出現(xiàn)報(bào)文碰撞、丟包率 >3 %,無法滿足
    的頭像 發(fā)表于 11-14 10:32 ?620次閱讀
    ProfiNet轉(zhuǎn)<b class='flag-5'>CANopen</b><b class='flag-5'>協(xié)議</b>轉(zhuǎn)換網(wǎng)關(guān)實(shí)現(xiàn)西門子1200 PLC與多個(gè)<b class='flag-5'>CANopen</b>水下儀表通訊的配置案例

    協(xié)議橋接新范式:穩(wěn)聯(lián)技術(shù)打通EtherCAT與CANopen,賦能施耐德變頻器

    協(xié)議橋接新范式:穩(wěn)聯(lián)技術(shù)打通EtherCAT與CANopen,賦能施耐德變頻器 本方案實(shí)現(xiàn)歐姆龍控制器(EtherCAT主站)通過EtherCAT-CANopen協(xié)議轉(zhuǎn)換網(wǎng)關(guān)控制施耐德
    的頭像 發(fā)表于 11-07 15:20 ?1324次閱讀
    <b class='flag-5'>協(xié)議</b>橋接新范式:穩(wěn)聯(lián)技術(shù)打通EtherCAT與<b class='flag-5'>CANopen</b>,賦能施耐德變頻器

    CANopen轉(zhuǎn)Profient網(wǎng)關(guān)協(xié)議介紹

    CANopen介紹: CANopen是一種基于控制器局域網(wǎng)(CAN)的高層工業(yè)通信協(xié)議,由國際用戶和制造商協(xié)會(huì)CiA于1995年發(fā)布,基礎(chǔ)規(guī)范為CiA 301標(biāo)準(zhǔn)。該協(xié)議覆蓋OSI模型
    的頭像 發(fā)表于 09-25 17:31 ?700次閱讀
    <b class='flag-5'>CANopen</b>轉(zhuǎn)Profient網(wǎng)關(guān)<b class='flag-5'>協(xié)議</b>介紹

    通信協(xié)議高材生,PROFINET to CANopen網(wǎng)關(guān)連接西門子PLC與匯川變頻器

    PLC通過CANopen監(jiān)控變頻器的運(yùn)行是工業(yè)中較為常見的應(yīng)用,控制中心系統(tǒng)通過監(jiān)控變頻器不同的狀態(tài)來控制變頻器啟停,設(shè)定變頻器的運(yùn)行速度進(jìn)而控制電機(jī)。監(jiān)控系統(tǒng)采用西門子1500系列PLC,支持
    的頭像 發(fā)表于 08-12 10:49 ?835次閱讀
    通信<b class='flag-5'>協(xié)議</b>高材生,PROFINET to <b class='flag-5'>CANopen</b>網(wǎng)關(guān)連接西門子PLC與匯川變頻器

    承擔(dān)CANOPEN轉(zhuǎn)PROFINET協(xié)議轉(zhuǎn)換功能的網(wǎng)關(guān)與臺(tái)達(dá)伺服器的連接

    西門子S7 - 1200系列PLC可編程邏輯控制器(PLC),需與具備CANOPEN通訊功能的伺服驅(qū)動(dòng)器設(shè)備進(jìn)行連接。西門子的PLC采用PROFINET實(shí)時(shí)以太網(wǎng)通訊協(xié)議,若要連接CANOPE
    的頭像 發(fā)表于 07-24 18:01 ?443次閱讀
    承擔(dān)<b class='flag-5'>CANOPEN</b>轉(zhuǎn)PROFINET<b class='flag-5'>協(xié)議</b>轉(zhuǎn)換功能的網(wǎng)關(guān)與臺(tái)達(dá)伺服器的連接

    CANopen轉(zhuǎn)EtherCAT協(xié)議轉(zhuǎn)換案例解析

    在工業(yè)自動(dòng)化領(lǐng)域,運(yùn)動(dòng)控制器與傳感器之間的協(xié)議兼容性是系統(tǒng)集成中的關(guān)鍵挑戰(zhàn)。某智能裝備制造企業(yè)采用EtherCAT協(xié)議的運(yùn)動(dòng)控制器作為主站,需驅(qū)動(dòng)基于CANopen協(xié)議的分布式傳感器網(wǎng)
    的頭像 發(fā)表于 06-17 19:22 ?425次閱讀
    <b class='flag-5'>CANopen</b>轉(zhuǎn)EtherCAT<b class='flag-5'>協(xié)議</b>轉(zhuǎn)換案例解析

    協(xié)議大和解:ETHERCAT轉(zhuǎn)CANopen網(wǎng)關(guān)配置

    最近有同學(xué)后臺(tái)咨詢疆鴻智能EtherCAT轉(zhuǎn)CANopen協(xié)議轉(zhuǎn)換網(wǎng)關(guān)如何配置,小編今天給大家詳細(xì)分享下配置的步驟。 一,設(shè)備主要功能 JH-ECT009 型網(wǎng)關(guān)是EtherCAT網(wǎng)絡(luò)
    的頭像 發(fā)表于 05-21 14:55 ?626次閱讀
    <b class='flag-5'>協(xié)議</b>大和解:ETHERCAT轉(zhuǎn)<b class='flag-5'>CANopen</b>網(wǎng)關(guān)配置

    面向高溫工業(yè)場景的EtherCAT/CANopen協(xié)議轉(zhuǎn)換系統(tǒng)設(shè)計(jì)與應(yīng)用

    在金屬冶煉行業(yè),高效穩(wěn)定的通信系統(tǒng)是保障生產(chǎn)流程順暢、提升生產(chǎn)效率的關(guān)鍵。從礦石預(yù)處理、高溫熔煉,到精煉成型,各個(gè)環(huán)節(jié)的設(shè)備緊密協(xié)作,而JH-ECT009疆鴻智能EtherCAT轉(zhuǎn)CANopen協(xié)議
    的頭像 發(fā)表于 05-21 14:41 ?328次閱讀
    面向高溫工業(yè)場景的EtherCAT/<b class='flag-5'>CANopen</b><b class='flag-5'>協(xié)議</b>轉(zhuǎn)換系統(tǒng)設(shè)計(jì)與應(yīng)用

    EtherCAT轉(zhuǎn)CANopen協(xié)議網(wǎng)關(guān)應(yīng)用詳解

    成為運(yùn)動(dòng)控制領(lǐng)域的“明星”,而CANopen則憑借靈活性和成本優(yōu)勢(shì)在中小型設(shè)備中廣泛應(yīng)用。當(dāng)兩者相遇時(shí),如何打破協(xié)議阻礙,實(shí)現(xiàn)無縫互聯(lián)? EtherCAT轉(zhuǎn)CANopen網(wǎng)關(guān)通過智能協(xié)議
    的頭像 發(fā)表于 05-19 14:19 ?522次閱讀
    EtherCAT轉(zhuǎn)<b class='flag-5'>CANopen</b><b class='flag-5'>協(xié)議</b>網(wǎng)關(guān)應(yīng)用詳解

    當(dāng)沖壓焊接遇上Canopen到Profinet協(xié)議轉(zhuǎn)換網(wǎng)關(guān)

    在工業(yè)自動(dòng)化領(lǐng)域,設(shè)備間的“對(duì)話”效率直接決定了生產(chǎn)線的生命力。沖壓焊接作為金屬加工的核心環(huán)節(jié),常常面臨設(shè)備品牌多樣、通信協(xié)議不統(tǒng)一的困境——德國伺服電機(jī)用Canopen協(xié)議傳遞控制指令,國產(chǎn)機(jī)械手
    的頭像 發(fā)表于 05-11 10:51 ?416次閱讀
    當(dāng)沖壓焊接遇上<b class='flag-5'>Canopen</b>到Profinet<b class='flag-5'>協(xié)議</b>轉(zhuǎn)換網(wǎng)關(guān)

    Profinet轉(zhuǎn)CanOpen網(wǎng)關(guān),打破協(xié)議壁壘的關(guān)鍵技術(shù)

    在石油化工行業(yè)的生產(chǎn)現(xiàn)場,各類自動(dòng)化設(shè)備如同精密運(yùn)轉(zhuǎn)的神經(jīng)系統(tǒng),而通信協(xié)議則是傳遞信號(hào)的"語言"。當(dāng)不同廠商的設(shè)備采用Canopen與Profinet這兩種主流工業(yè)協(xié)議時(shí),就像
    的頭像 發(fā)表于 05-10 14:14 ?458次閱讀
    Profinet轉(zhuǎn)<b class='flag-5'>CanOpen</b>網(wǎng)關(guān),打破<b class='flag-5'>協(xié)議</b>壁壘的關(guān)鍵技術(shù)

    使用ES32實(shí)現(xiàn)CANopen從機(jī)

    CANopen是一種基于CAN的通信協(xié)議,已在工業(yè)領(lǐng)域得到了廣泛應(yīng)用。CAN提供可靠的底層數(shù)據(jù)傳輸,CANopen提供標(biāo)準(zhǔn)化的應(yīng)用層協(xié)議。在CANo
    的頭像 發(fā)表于 03-26 19:05 ?1861次閱讀
    使用ES32實(shí)現(xiàn)<b class='flag-5'>CANopen</b>從機(jī)

    EtherCAT轉(zhuǎn)CANopen配置CANopen側(cè)的PDO映射

    在工業(yè)自動(dòng)化領(lǐng)域,EtherCAT和CANopen是兩種廣泛應(yīng)用的通信協(xié)議。它們各自具有獨(dú)特的優(yōu)勢(shì),但在某些應(yīng)用場景下,需要將這兩種協(xié)議進(jìn)行轉(zhuǎn)換以實(shí)現(xiàn)設(shè)備間的高效數(shù)據(jù)交換。本文將詳細(xì)介紹如何在
    的頭像 發(fā)表于 03-26 17:56 ?953次閱讀
    EtherCAT轉(zhuǎn)<b class='flag-5'>CANopen</b>配置<b class='flag-5'>CANopen</b>側(cè)的PDO映射

    CANOPEN協(xié)議詳細(xì)介紹

    ???????? CANOPEN協(xié)議是基于CAN總線協(xié)議建立的應(yīng)用層協(xié)議。 CANOPEN協(xié)議
    發(fā)表于 03-26 15:27 ?0次下載

    顛覆想象!CanOpen轉(zhuǎn)ProfiNet網(wǎng)關(guān)重塑糾偏系統(tǒng)格局

    該生產(chǎn)線采用了糾偏系統(tǒng),其運(yùn)用的是CanOpen通訊協(xié)議,而現(xiàn)場搭配的PLC為西門子S7-1500系列,采用Profinet工業(yè)以太網(wǎng)通訊。通過上述使用穩(wěn)聯(lián)技術(shù)CanOpen轉(zhuǎn)Prof
    的頭像 發(fā)表于 02-20 17:01 ?630次閱讀
    顛覆想象!<b class='flag-5'>CanOpen</b>轉(zhuǎn)ProfiNet網(wǎng)關(guān)重塑糾偏系統(tǒng)格局