久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4668|回復: 5
打印 上一主題 下一主題
收起左側

STM32實現 Ethercat 從站源碼

  [復制鏈接]
跳轉到指定樓層
樓主
ID:647576 發表于 2022-3-29 18:37 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
該源碼是當前流行的機器人控制系統倍福所采用的構架Ethercat  總線
xml文件是設備描述文件,燒寫在了EEPROM 里面  從站站 (ET11000)上電后 會從 eeprom 加載配置參數
完成初始化過程

文件中有對應IO 及AD 全局變量的定義
extern     uint16_t uhADCxConvertedValue;
#define SWITCH_1         PCin(7)//   PCin(8)                // PORTDbits.RD7 /**< \brief Access to switch 1 input*/
#define SWITCH_2         PCin(8)//   PCin(9)                // PORTDbits.RD6 /**< \brief Access to switch 2 input*/
#define SWITCH_3         PCin(9)//   PAin(11)                // PORTDbits.RD5 /**< \brief Access to switch 3 input*/
#define SWITCH_4         PGin(11)//   PAin(12)                // PORTDbits.RD4 /**< \brief Access to switch 4 input*/
#define SWITCH_5         PGin(12)//   PAin(13)                // PORTDbits.RD3 /**< \brief Access to switch 5 input*/
#define SWITCH_6         PGin(13)//   PAin(14)                // PORTDbits.RD2 /**< \brief Access to switch 6 input*/
#define SWITCH_7         PGin(14)//  PAin(15)                // PORTDbits.RD1 /**< \brief Access to switch 7 input*/
#define SWITCH_8         PGin(15)//   PCin(12)                // PORTDbits.RD0 /**< \brief Access to switch 8 input*/

#define LED_1            PCout(6)    //     PCout(7)                // LATBbits.LATB8 /**< \brief Access to led 1 output*/
#define LED_2            PGout(8)    //     PCout(6)            //3////LATBbits.LATB9 /**< \brief Access to led 2 output*/
#define LED_3            PGout(7)//     PGout(8)                // LATBbits.LATB10 /**< \brief Access to led 3 output*/
#define LED_4            PGout(6)//     PGout(7)                //LATBbits.LATB11 /**< \brief Access to led 4 output*/
#define LED_5            PGout(5)//     PGout(6)                // LATBbits.LATB12 /**< \brief Access to led 5 output*/
#define LED_6            PGout(4)//     PGout(5)                // LATBbits.LATB13 /**< \brief Access to led 6 output*/
#define LED_7            PGout(3)//     PGout(4)                //LATBbits.LATB14 /**< \brief Access to led 7 output*/
#define LED_8            PDout(13)//     PGout(3)   


部分源碼如
/////////////////////////////////////////////////////////////////////////////////////////
/**
\return     0(ALSTATUSCODE_NOERROR), NOERROR_INWORK
\param      pInputSize  pointer to save the input process data length
\param      pOutputSize  pointer to save the output process data length

\brief    This function calculates the process data sizes from the actual SM-PDO-Assign
            and PDO mapping
*////////////////////////////////////////////////////////////////////////////////////////
UINT16 APPL_GenerateMapping(UINT16* pInputSize,UINT16* pOutputSize)
{
#if COE_SUPPORTED
    UINT16 result = ALSTATUSCODE_NOERROR;
    UINT16 PDOAssignEntryCnt = 0;
    OBJCONST TOBJECT OBJMEM * pPDO = NULL;
    UINT16 PDOSubindex0 = 0;
    UINT32 *pPDOEntry = NULL;
    UINT16 PDOEntryCnt = 0;
    UINT16 InputSize = 0;
    UINT16 OutputSize = 0;

    /*Scan object 0x1C12 RXPDO assign*/
    for(PDOAssignEntryCnt = 0; PDOAssignEntryCnt < sRxPDOassign.u16SubIndex0; PDOAssignEntryCnt++)
    {
        pPDO = OBJ_GetObjectHandle(sRxPDOassign.aEntries[PDOAssignEntryCnt]);
        if(pPDO != NULL)
        {
            PDOSubindex0 = *((UINT16 *)pPDO->pVarPtr);
            for(PDOEntryCnt = 0; PDOEntryCnt < PDOSubindex0; PDOEntryCnt++)
            {
                        //                                result = *(UINT8 *)pPDO->pVarPtr;
                        //                                result=(OBJ_GetEntryOffset((PDOEntryCnt+1),pPDO)>>3);
                pPDOEntry = (UINT32 *)((UINT8 *)pPDO->pVarPtr + (OBJ_GetEntryOffset((PDOEntryCnt+1),pPDO)>>3));    //goto PDO entry
                // we increment the expected output size depending on the mapped Entry
                OutputSize += (UINT16) ((*pPDOEntry) & 0xFF);
            }
        }
        else
        {
            /*assigned PDO was not found in object dictionary. return invalid mapping*/
            OutputSize = 0;
            result = ALSTATUSCODE_INVALIDOUTPUTMAPPING;
            break;
        }
    }

    OutputSize = (OutputSize + 7) >> 3;// +7

下載: STM32實現 Ethercat 從站源碼.rar (1.19 MB, 下載次數: 98)
UC16-R1.rar (4.54 KB, 下載次數: 53)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏5 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:145349 發表于 2023-2-16 16:23 | 只看該作者
EtherCAT從站開發板及源程序:
簡化XML生成,簡化編程,10分鐘快速入門,詳細見:
http://www.openedv.com/forum.php?mod=viewthread&tid=340287
回復

使用道具 舉報

板凳
ID:1068936 發表于 2023-3-31 08:50 | 只看該作者
樓主,你好!STM32實現EtherCat從站源碼,看不出從那體現出來。能否詳細解說一下,謝謝!
回復

使用道具 舉報

地板
ID:47543 發表于 2024-8-7 11:19 | 只看該作者
受教了,謝謝分享
回復

使用道具 舉報

5#
ID:25103 發表于 2025-1-1 19:21 | 只看該作者
受教了,謝謝分享
回復

使用道具 舉報

6#
ID:429078 發表于 2025-1-2 00:06 | 只看該作者
goodjob
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产区在线 | 亚洲精品一区二区 | 超级乱淫av片免费播放 | 日韩一区二区在线视频 | 精品欧美一区免费观看α√ | 成人影院在线视频 | 久久久免费 | 亚州无限乱码 | 一区二区在线观看av | 成人国产免费视频 | av国产在线观看 | 欧美国产一区二区三区 | 色综合视频 | 久久久久国色av免费观看性色 | 一级中国毛片 | 欧美一级在线观看 | 日本精品久久久久 | 黄视频网址 | 成人性生交大片免费看r链接 | 中文字幕日韩一区二区 | 日本大片在线播放 | 国产成人免费视频网站高清观看视频 | 久久精品一区二区三区四区 | 国产91丝袜在线播放 | 亚洲欧美激情网 | 99精品网| 久久久精品视频免费看 | 久久久av中文字幕 | 99tv成人影院 | 国产一区在线免费观看视频 | 日韩中字幕 | 亚洲最大成人综合 | 成人h片在线观看 | 2018天天干天天操 | 欧美日韩亚洲国产综合 | 一区二区在线不卡 | 91社区视频 | 中文字幕在线国产 | 亚洲精品2| 欧洲妇女成人淫片aaa视频 | 精品视频99 |