打印
[其他ST产品]

STM32与LAN9252构建EtherCAT从站(三)

[复制链接]
2022|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
慢醇|  楼主 | 2021-12-29 23:46 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
LAN9252的XML文件
EtherCAT从站XML文件简介
每一个EtherCAT从站设备都需要有一个硬件描述的XML文件,用来给TwinCAT组态,XML文件中描述定义了通信时需要用到的各种数据。包括设备所属公司名,设备名,设备版本,**等基础信息,亦包括通信时的点位,点位名称,大小,数量等信息,还包括一个非常特别的14ByteConfigData,这14个字节用来给PHY识别,像ET1100,LAN9252等芯片通过其来识别自身的工作方式,比如第一章STM32与LAN9252构建EtherCAT从站(一):项目简介中我们提到的LAN9252工作的四种方式就是通过这组数据进行确定的。

使用特权

评论回复
沙发
慢醇|  楼主 | 2021-12-29 23:47 | 只看该作者
TwinCAT对设备进行组态时,首先通过其硬件网卡搜索网络上所有的EtherCAT设备,发现设备后可以将XML文件烧录至LAN9252连接的EEPROM中,此后设备上电时,PHY就能根据EEPROM中的数据对自身进行相应的配置。关于TwinCAT的使用,我们在第六章STM32与LAN9252构建EtherCAT从站(六):TwinCAT2的使用和从站测试详细介绍。

使用特权

评论回复
板凳
慢醇|  楼主 | 2021-12-29 23:47 | 只看该作者
XML文件比较大,用普通的文本编辑器打开会显得有些凌乱,上下文结构也不能很好的体现。因此需要一些专门处理XML的工具来辅助编辑,推荐的有XMLSPY和XML Notepad,前者是收费的,**版也很难找,后者是微软2007年出的,免费试用,但是年代有些久远,功能也不及前者多。

使用特权

评论回复
地板
慢醇|  楼主 | 2021-12-29 23:48 | 只看该作者
XML中的设备基础信息

使用特权

评论回复
5
慢醇|  楼主 | 2021-12-29 23:49 | 只看该作者
如图使用XMLNotepad打开上一章STM32与LAN9252构建EtherCAT从站(二):使用SSC生成EtherCAT协议栈和XML文件生成的XML文件,可以粗略地观察到整个文档由两个节点组成,Vendor和Descriptions。

使用特权

评论回复
6
慢醇|  楼主 | 2021-12-29 23:50 | 只看该作者
Vendor下面的id和name来自于EtherCAT会员企业信息,我这里不方便用我们公司的真实信息,暂且用#x1和EtherCAT来替代。

使用特权

评论回复
7
慢醇|  楼主 | 2021-12-29 23:51 | 只看该作者
Vendor下面的ImageData16x14节点,存储的是.bmp格式的16色深度的**文件,可以使用微软画图或者Photoshop等软件制作,制作完成后使用任何16进制查看器(Notepad++和Sublime都有相关插件直接查看任何文件的16进制数据)将数据填入该节点。

使用特权

评论回复
8
慢醇|  楼主 | 2021-12-29 23:51 | 只看该作者
Descriptions->Groups->Group节点下方的Type和Name两个节点描述的设备类型的种类和名称,这里根据自己的想法自定义即可。ImageData16x14是设备类型图标,可以直接用上面的数据。

使用特权

评论回复
9
慢醇|  楼主 | 2021-12-29 23:52 | 只看该作者
Descriptions->Devices->Device->Physics是以太网口类型,YY表示两个RJ45,一进一出,跟Y相对应的是K,表示EBUS网口,德国倍福的专用端口,不需要修改。

使用特权

评论回复
10
慢醇|  楼主 | 2021-12-29 23:53 | 只看该作者
Descriptions->Devices->Device->Type节点下的ProductCode和RevisonNo表示的是硬件编号和版本号,这里取一些有意义的名称,产品迭代升级时不要忘记这里的版本号也应该做相应的升级。TwinCAT通过这两个字段确定XML的唯一性,也就是说你如果两份XML这两个字段一样,放到TwinCAT/IO/EtherCAT文件夹下,只能识别其中一个。

使用特权

评论回复
11
慢醇|  楼主 | 2021-12-29 23:54 | 只看该作者
Descriptions->Devices->Device->Name设备名,任意取。

Descriptions->Devices->Device->Info节点存储了一些超时限制的数据,没有特殊情况不需要修改,这里设置好了以后在TwinCAT界面可以看到设备在各种状态切换时的超时限制。

Descriptions->Devices->Device->GroupType与上面Descriptions->Groups->Group->Type相对应。

至此,有关设备基础信息的部分就结束了。

使用特权

评论回复
12
慢醇|  楼主 | 2021-12-29 23:55 | 只看该作者
XML中的字典和IO数据
这部分数据超级复杂,包括字典定义和IO点位描述,但这部分数据已经由SSC创建完成了,SSC通过我们填写的Excel自动生成的,如果没有SSC,这里的数据全都由我们自己填写,将是一件非常恐怖的事情,不仅编写起来工作量非常巨大,而且极易出错。我们这里仅做简单地浏览认识一下。

使用特权

评论回复
13
慢醇|  楼主 | 2021-12-29 23:56 | 只看该作者
首先理解一下字典,所谓字典就是对数据结构的描述,XML里面每种数据集合都需要有它的类型定义,有些类型是简单的String,UINT等基本类型,有些类型是由多种基本类型组合而成的复合结构,在字典定义部分都需要对其进行定义。打开Descriptions->Devices->Device->Profile节点,里面有两个子节点DataType和Objects,有点类似C语言中的typedef定义类型和int x定义变量,事实上在SSC生成的协议栈中的SSC-DeviceObjects.h文件也确实与这里的定义一一对应的,感兴趣的朋友可以去浏览一下,我们将会在STM32与LAN9252构建EtherCAT从站(五):STM32与LAN9252适配做详细介绍。

使用特权

评论回复
14
慢醇|  楼主 | 2021-12-29 23:56 | 只看该作者

使用特权

评论回复
15
慢醇|  楼主 | 2021-12-29 23:57 | 只看该作者
举个例子,如图所示,在Objects节点下有一个Object名叫Device name, 其index为#x1008,type为STRING(10),这个STRING(10)就要从上面的DataTypes节点里面找对应的子项了,果然我们会发现一个DataType子节点名叫STRING(10),它的BitSize定义的是80个bit,应该是个uchar[10]的数组,那么这个字符串内容是什么呢,还记得我们之前在硬件基础信息部分定义的Device Name吗,我们去看看,上面定义的是SSC-Device,数一数正好10个字节。

使用特权

评论回复
16
慢醇|  楼主 | 2021-12-29 23:57 | 只看该作者
所以在XML中每一个元素都会有自己的数据结构,每一种数据结构都会在数据字典中定义,如果这之间的关系理得不顺,EtherCAT将无法建立连接,想要手工把这里面的关系搞定真的非常困难,SSC在之前帮我们全都搞定了。

使用特权

评论回复
17
慢醇|  楼主 | 2021-12-29 23:58 | 只看该作者

使用特权

评论回复
18
慢醇|  楼主 | 2021-12-29 23:59 | 只看该作者
IO点位数据就更加复杂了,在Descriptions->Devices->Device节点下有四个Sm节点,这个表示通道,我们通信时一共有四个通道,除了过程传输数据输出和输入以外,还有两个通道用来控制EtherCAT自身状态的,也是EtherCAT协议中非常重要的MailBox概念,分别叫做MBoxOut和MBoxIn,这里不需要管它,只需要了解过程传输数据Inputs和Outputs两个通道,这两个通道内部的数据又分别指向RxPdo和TxPdo两个节点,这两个节点每个Entry节点都是我们之前在Excel中定义的一个IO点。SSC通过Excel帮我们完成了一项庞大的工作,在XML中生成了64+64个Entry,如果手工录入,这工作量将会非常恐怖。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

127

主题

1262

帖子

5

粉丝