简介:本文介绍 Trio 运动控制器与 Kossi 伺服驱动器基于 EtherCAT 工业实时总线的适配方案,完成主从站配置、总线初始化、周期通讯与运动指令交互,实现多轴同步运动控制。
EtherCAT communication process for Trio motion controller adapting Kossi servo drives: Complete master-slave configuration, bus synchronization and real-time cyclic communication to realize high-precision multi-axis coordinated motion control.
配置好的代码链接:https://download.csdn.net/download/guimotion/93371894
一.操作流程
1.新键配置文件
2.导入驱动器配置文件到控制器
3.正式配置控制器通讯
4.切换到高级模式手动配置
5.方便查看更改驱动器适配名称
6.修改从站链接的信息
7.检查一下ESC信息
默认即可,重点Size大小,不可太小,一般128/256
8.修改 控制器输出
常用配置:控制字,控制位置,控制探针命令
9.修改 控制器输入
常用配置:状态字,位置反馈,扭矩反馈,探针状态反馈,探针抓取位置,外部输入IN
10.添加额外的驱动器参数
上电初始化驱动器需要的配置的额外参数,在这里添加
一般默认即可,不需要额外配置
11.最终控制器生成的通讯代码
<EtherCAT> <Version>1.0.0</Version> <RxPdos> <RxPdo> <Index>0</Index> <Name>RXPDO_PROFILE_KOSSI_N23</Name> <Entry> <Name>CTRL_WORD</Name> <Length>2</Length> <Flags>0</Flags> </Entry> <Entry> <Name>TARGET_POS</Name> <Length>4</Length> <Flags>0</Flags> </Entry> <Entry> <Name>TOUCH_PROBE_FUNCTION</Name> <Length>2</Length> <Flags>0</Flags> </Entry> <Entry> <Name>NULL</Name> <Length>0</Length> <Flags>0</Flags> </Entry> </RxPdo> </RxPdos> <TxPdos> <TxPdo> <Index>0</Index> <Name>TXPDO_PROFILE_KOSSI_N23</Name> <Entry> <Name>STATUS_WORD</Name> <Length>2</Length> <Flags>0</Flags> </Entry> <Entry> <Name>ACTUAL_POS</Name> <Length>4</Length> <Flags>0</Flags> </Entry> <Entry> <Name>ACTUAL_TORQUE</Name> <Length>2</Length> <Flags>0</Flags> </Entry> <Entry> <Name>TOUCH_PROBE_STATUS</Name> <Length>2</Length> <Flags>0</Flags> </Entry> <Entry> <Name>TOUCH_PROBE1_POS1</Name> <Length>4</Length> <Flags>0</Flags> </Entry> <Entry> <Name>DIN</Name> <Length>4</Length> <Flags>0</Flags> </Entry> <Entry> <Name>NULL</Name> <Length>0</Length> <Flags>0</Flags> </Entry> </TxPdo> </TxPdos> <SdoInitCmds> <SdoInitCmd> <Index>0</Index> <Name>SDO_KOSSI_N2_N3_INIT</Name> <Entry> <Index>0x1C13</Index> <SubIndex>0</SubIndex> <Length>1</Length> <Data>0</Data> <Flags>NONE</Flags> <Transition>2</Transition> </Entry> <Entry> <Index>0x1C12</Index> <SubIndex>0</SubIndex> <Length>1</Length> <Data>0</Data> <Flags>NONE</Flags> <Transition>2</Transition> </Entry> <Entry> <Index>0x1A00</Index> <SubIndex>0</SubIndex> <Length>1</Length> <Data>0</Data> <Flags>NONE</Flags> <Transition>2</Transition> </Entry> <Entry> <Index>0x1600</Index> <SubIndex>0</SubIndex> <Length>1</Length> <Data>0</Data> <Flags>NONE</Flags> <Transition>2</Transition> </Entry> <Entry> <Index>0x1A00</Index> <SubIndex>1</SubIndex> <Length>4</Length> <Data>0x60410010</Data> <Flags>NONE</Flags> <Transition>2</Transition> </Entry> <Entry> <Index>0x1A00</Index> <SubIndex>2</SubIndex> <Length>4</Length> <Data>0x60640020</Data> <Flags>NONE</Flags> <Transition>2</Transition> </Entry> <Entry> <Index>0x1A00</Index> <SubIndex>3</SubIndex> <Length>4</Length> <Data>0x60770010</Data> <Flags>NONE</Flags> <Transition>2</Transition> </Entry> <Entry> <Index>0x1A00</Index> <SubIndex>4</SubIndex> <Length>4</Length> <Data>0x60B90010</Data> <Flags>NONE</Flags> <Transition>2</Transition> </Entry> <Entry> <Index>0x1A00</Index> <SubIndex>5</SubIndex> <Length>4</Length> <Data>0x60BA0020</Data> <Flags>NONE</Flags> <Transition>2</Transition> </Entry> <Entry> <Index>0x1A00</Index> <SubIndex>6</SubIndex> <Length>4</Length> <Data>0x60FD0020</Data> <Flags>NONE</Flags> <Transition>2</Transition> </Entry> <Entry> <Index>0x1A00</Index> <SubIndex>0</SubIndex> <Length>1</Length> <Data>0x06</Data> <Flags>NONE</Flags> <Transition>2</Transition> </Entry> <Entry> <Index>0x1C13</Index> <SubIndex>1</SubIndex> <Length>2</Length> <Data>0x1A00</Data> <Flags>NONE</Flags> <Transition>2</Transition> </Entry> <Entry> <Index>0x1C13</Index> <SubIndex>0</SubIndex> <Length>1</Length> <Data>0x01</Data> <Flags>NONE</Flags> <Transition>2</Transition> </Entry> <Entry> <Index>0x1600</Index> <SubIndex>1</SubIndex> <Length>4</Length> <Data>0x60400010</Data> <Flags>NONE</Flags> <Transition>2</Transition> </Entry> <Entry> <Index>0x1600</Index> <SubIndex>2</SubIndex> <Length>4</Length> <Data>0x607A0020</Data> <Flags>NONE</Flags> <Transition>2</Transition> </Entry> <Entry> <Index>0x1600</Index> <SubIndex>3</SubIndex> <Length>4</Length> <Data>0x60B80010</Data> <Flags>NONE</Flags> <Transition>2</Transition> </Entry> <Entry> <Index>0x1600</Index> <SubIndex>0</SubIndex> <Length>1</Length> <Data>0x03</Data> <Flags>NONE</Flags> <Transition>2</Transition> </Entry> <Entry> <Index>0x1C12</Index> <SubIndex>1</SubIndex> <Length>2</Length> <Data>0x1600</Data> <Flags>NONE</Flags> <Transition>2</Transition> </Entry> <Entry> <Index>0x1C12</Index> <SubIndex>0</SubIndex> <Length>1</Length> <Data>0x01</Data> <Flags>NONE</Flags> <Transition>2</Transition> </Entry> <Entry> <Index>0x6060</Index> <SubIndex>0</SubIndex> <Length>1</Length> <Data>8</Data> <Flags>NONE</Flags> <Transition>2</Transition> </Entry> </SdoInitCmd> </SdoInitCmds> <EscCfgs> <EscCfg> <Index>0</Index> <Sm> <Index>0</Index> <Startaddress>0x1800</Startaddress> <Size>256</Size> <Controlbyte>0x26</Controlbyte> <Enable>1</Enable> <Function>MBOXOUT</Function> </Sm> <Sm> <Index>1</Index> <Startaddress>0x1C00</Startaddress> <Size>256</Size> <Controlbyte>0x22</Controlbyte> <Enable>1</Enable> <Function>MBOXIN</Function> </Sm> <Sm> <Index>2</Index> <Startaddress>0x1200</Startaddress> <Size /> <Controlbyte>0x64</Controlbyte> <Enable>1</Enable> <Function>OUTPUTS</Function> </Sm> <Sm> <Index>3</Index> <Startaddress>0x1400</Startaddress> <Size /> <Controlbyte>0x00</Controlbyte> <Enable>1</Enable> <Function>INPUTS</Function> </Sm> </EscCfg> </EscCfgs> <SlvCfgs> <SlvCfg> <Index>0</Index> <SlaveType>SERVO</SlaveType> <Axes>1</Axes> <Din>8</Din> <Dout>0</Dout> <Ain>0</Ain> <Aout>0</Aout> <CycData> <Atype>POSITION</Atype> <CtrlMode>CSP</CtrlMode> <UseLrdLwr>FALSE</UseLrdLwr> <Cmd>LRW</Cmd> <State>DEVICE_STATE_SAFEOP, DEVICE_STATE_OP</State> </CycData> <Dc> <Mode>0x0300</Mode> </Dc> <MbxStartupProtocol>CoE</MbxStartupProtocol> <MbxProtocols>CoE</MbxProtocols> <MbxRate>100</MbxRate> <TxPdoIndex>TXPDO_PROFILE_KOSSI_N23</TxPdoIndex> <RxPdoIndex>RXPDO_PROFILE_KOSSI_N23</RxPdoIndex> <SdoInitCmdIndex>SDO_KOSSI_N2_N3_INIT</SdoInitCmdIndex> <EscCfgIndex>0</EscCfgIndex> </SlvCfg> </SlvCfgs> <Profiles> <Profile> <Index>0</Index> <Vid>0x0000002F</Vid> <Pid>0x00020000</Pid> <Rev>0x00010000</Rev> <ProfileIndex>0</ProfileIndex> <Atype>POSITION</Atype> <Name>KOSSI_N23_POS</Name> <SlvCfgIndex>0</SlvCfgIndex> </Profile> </Profiles> <Vendors> <Vendor> <Vid>0x0000002F</Vid> <Name>Kossi Intelligent Technology</Name> </Vendor> </Vendors> </EtherCAT>谢谢大家多多关注博客,需要更多的驱动器适配请在评论区留言+关注!