女生做網(wǎng)站開發(fā)推廣途徑有哪些
1.Canfestival同步報文sync的設(shè)置
在OD表中的配置如下:
如果0x1006索引的同步報文循環(huán)周期時間設(shè)置為0則禁用同步報文,這里要注意的就是,上面第一張圖也提到了,時間單位是us。第二張圖,我的0x1006就設(shè)置為0xF4240,也就是1s發(fā)送一次同步報文。
關(guān)于同步楨(同步計數(shù)器)的問題可以參考這篇文章:
canfestival同步幀(同步計數(shù)器的問題) - 嗶哩嗶哩關(guān)于canopen的SYNC同步幀,有兩種方式:一種是sync沒有數(shù)據(jù),只有id.另一種是sync帶有一個數(shù)據(jù),這個數(shù)據(jù)可以循環(huán)計數(shù),類似與單片機的計時器.這個計數(shù)的周期就存儲在字典的1019h里面. 如果1019h里面存入的是4,那么sync數(shù)據(jù)部分就會依次發(fā)送01,02,03,04,---01,02,03,04,---01,02,03,04.......1019h這個參數(shù) 與 TPDO的通訊參數(shù)06h子索引是有聯(lián)動的.06h中的參數(shù)代表了何時響應(yīng)這個計數(shù)值.如果06h中的參數(shù)是3,那么就
https://www.bilibili.com/read/cv12706894/
我這里是介紹的sync楨帶數(shù)據(jù)(同步計數(shù)值)的情況:
2.同步報文的發(fā)送
在struct struct_CO_Data結(jié)構(gòu)體中的同步報文變量定義區(qū)域增加下面的成員變量
隨后在同一個頭文件data.h的下半部分增加下圖的初始化語句。
同步楨發(fā)送方法的設(shè)置:
這里的63為循環(huán)次數(shù),可以根據(jù)自己的項目情況自行設(shè)置,設(shè)置好之后,同步楨發(fā)送的情況就是:
3.同步楨接收處理
3.1 TPDO 對象字典設(shè)置
將tpdo的SYNC_start_value改為非零值,意思是,接收到多少個同步信號后,上傳該tpdo,也就是設(shè)置為同步觸發(fā)模式。
?3.2 SYNC處理函數(shù)處理
更改_sendPDOevent()函數(shù),將接收到的同步楨數(shù)據(jù)域傳過來。
更改_sendPDOevent (CO_Data * d, UNS8 isSyncEvent)對數(shù)據(jù)部分(同步計數(shù)值)的處理
源碼處理:
/* check if transmission type is SYNCRONOUS *//* message transmited every n SYNC with n=TransmissionType */if (isSyncEvent &&(*pTransmissionType >= TRANS_SYNC_MIN) &&(*pTransmissionType <= TRANS_SYNC_MAX) &&(++d->PDO_status[pdoNum].transmit_type_parameter ==*pTransmissionType)){/*Reset count of SYNC */d->PDO_status[pdoNum].transmit_type_parameter = 0;MSG_WAR (0x3964, " PDO is on SYNCHRO. Trans type : ",*pTransmissionType);memset(&pdo, 0, sizeof(pdo));/*{Message msg_init = Message_Initializer;pdo = msg_init;}*/if (buildPDO (d, pdoNum, &pdo)){MSG_ERR (0x1906, " Couldn't build TPDO number : ",pdoNum);status = state11;break;}status = state5;/* If transmission RTR, with data sampled on SYNC */}
更改后為:
將接收到的同步計數(shù)值數(shù)據(jù)與tpdo的SYNC_start_value參數(shù)做比較,如何相同,則開啟pdo傳輸
修改后,實現(xiàn)的效果展示:
如上圖,每次發(fā)送到數(shù)據(jù)為0x0A的同步楨后,就會收到pdo為0x186的數(shù)據(jù)楨。
當然,這樣也是可以的: