一. FMMU把从站分散的数据内容映射到主站连续的内存,减少子报文数量,便于主站应用层的编写。
FMMU由主站配置,主站包含一个2^32大小的逻辑地址空间,每一个从站的FMMU分别映射对应的地址空间。
二. 主站从站连接方式
如上图第从站1001 的FMMU0配置所示,将从站ESC内存地址起始 0x1800映射到FMMU地址10000,长度2字节,属性为写,即主站只需操作对逻辑地址10000写入两个字节,实际是对从站的内存0x1800地址写入两个字节。
同理,从站1001的FMMU1配置为,将从站的ESC内存地址0x1C00映射到FMMU地址10000,长度2字节,属性为读,即主站读内存操作,只需对逻辑地址10000读入两个字节,实际对应的是从从站的内存0x1C00读取两个字节。
三. FMMU寄存器说明
逻辑寻址方式特别适用于传输或者交换周期性的过程数据。FMMU操作具有以下功能 特点
1. 每个数据逻辑地址的字节只允许被FMMU读和另一个FMMU写,或者被同一个FMMU进行读写交换操作
2. 对一个逻辑地址的读写操作,和使用一个FMMU读和另一个FMMU写具有相同的效果
3. 按位操作不影响报文中没有映射到的其他位
4. 读写一个未配置的逻辑地址空间不会改变其内容
四. TwinCAT报文分析
TwinCAT 的FMMU分配说明:
FMMU0 用于RxPDO数据传输,即主站周期发送数据给从站。
FMMU1 用于TxPDO数据传输,即主站周期读取从站数据。
FMMU2配置成从站发送邮箱数据准备标志位(0x80D.0),当从站邮箱数据准备好时,主站读取邮箱数据。
实验使用了两个不同的从站,使用TwinCAT扫描,TwinCAT将从站的FMMU分配如下:
从站1 FMMU分配
L start | Length | L EndBit | P Start | Flags | Sm | Su |
0x01000000.0 | 4 | 7 | 0x1100.0 | WE | 0 | 0 |
0x01000000.0 | 6 | 7 | 0x1400.0 | RE | 0 | 0 |
0x09000000.0 | 1 | 0 | 0x080D.0 | RE | 0 | 0 |
从站2 FMMU分配
L start | Length | L EndBit | P Start | Flags | Sm | Su |
0x01000006.0 | 13 | 7 | 0x1200.0 | WE | 0 | 0 |
0x01000006.0 | 13 | 7 | 0x1400.0 | RE | 0 | 0 |
0x09000000.1 | 1 | 0 | 0x080D.0 | RE | 0 | 0 |
主站发出的报文段
Data为 已准备好的RxPDO数据
主站接收到的报文
Data被从站刷新为TxPDO数据
总结
TwinCAT使用读写指令进行PDO数据传输,主站发出LRW的指令的同时,待写入的数据就已经准备好,从站先从数据流中写入RxPDO数据,再将TxPDO数据写入空缺的数据流中。当从站的TxPDO和RxPDO数据长度不一样时,下一从站的逻辑地址的起始地址要大于上一从站的逻辑地址的最长位。
TwinCAT使用FMMU来进行PDO数据交换,指令简洁,大大减少了子指令的数量。