1、状态机控制和状态
主站和从站按照以下规则执行状态转化:
①主站要改变从站的状态,将目的状态写入从站AL控制位(0x0120.0~3);
②从站读取到新状态请求后,检查自身状态:
●如果可以转化,则将新的状态写入到状态机实际控制位(0x0130.0~3);
●如果不能转化,则不改变实际状态位,设置错误指示位(0x0130.4),并将错误码写入0x0134~0x0135。
③主站读取状态机实际状态(0x0130):
●如果正常转化,则执行下一步操作;
●如果出错,主站读取错误码,并写AL错误应答(0x0120.4)来清除AL错误指示。
下表列出了从站状态机控制和状态寄存器:
由上表可知,地址是0x0120:0x0121的寄存器,长度是两个字节(2Bytes,16bits),0~3位是AL控制位,作用是发起从站状态机的状态切换(1:请求初始化状态;2:请求预运行状态;3:请求Bootstrap状态;4:请求安全运行状态;8:请求运行状态),4位是AL错误应答,如果转化出错,主站通过对此位写1清除AL错误指示(0x0130.4)。
地址是0x0130:0x0131的寄存器,长度是两个字节(2Bytes,16bits),0~3位是从站状态机实际状态,如果可以正常转化,这4个位就会更新。4位是AL错误指示,当转化不成功的时候,此位会被置1。
地址是0x0134:0x0135的寄存器,长度是两个字节(2Bytes,16bits),转化出错的时候,错误码将会写到这个寄存器。
使用微处理器PDI接口时,AL控制寄存器由握手机制操作。ECAT帧写AL控制寄存器后,PDI必须执行一次,否则,ECAT帧不能继续写操作。只有复位后ECAT帧才能恢复写AL控制寄存器。PDI接口为数字量I/O时,从站没有通过外部微处理器读AL控制寄存器,此时,主站设置设备模拟位0x0140.8 = 1,ESC将自动复制AL控制寄存器的值到AL状态寄存器。AL状态码的定义如表所列。表中“+E”表示设置了AL错误指示码(0x0130.4)。
2、中断控制
ESC支持两种类型的中断:给本地微处理器的AL事件请求中断和给主站的ECAT帧中断。另外,分布时钟的同步信号也可以作为微处理器的中断信号。下表列出了ESC中断控制使用的寄存器。
(1)PDI中断
所有发生的AL事件请求都映射到寄存器0x0220~0x0223,由事件屏蔽寄存器0x0204~0x0207决定哪些事件将触发给微处理器的中断信号IRQ。微处理器响应中断后,在中断服务程序中读取AL事件请求寄存器,根据所发生的的事件做相应的处理。
(2)ECAT帧中断
ECAT帧中断用来通知EtherCAT主站从站发生的AL事件。它使用EtherCAT子报文头中的状态位传输ECAT中断请求寄存器0x0210~0x0211。ECAT帧通过中断屏蔽寄存器0x0200~0x0201来决定哪些事件会被写入状态位并发送给主站。
(3)SYNC信号中断
同步信号可以映射到IRQ信号以触发中断,此时同步引脚可以用作Latch输入引脚,IRQ信号有约40us的抖动,同步信号只有约12us的抖动。所以也可以将SYNC信号直接接到微处理器的中断引脚,使微处理器快速响应同步信号中断。
3、看门狗控制
ESC有两种看门狗,一种是监测过程数据刷新的过程数据看门狗,另一种是监测PDI运行的PDI看门狗。下表列出了看门狗控制的相关寄存器。
(1)过程数据看门狗
通过设置SM控制寄存器(0x0804+N*8)位6来使能相应的过程数据看门狗。设置过程数据看门狗定时器的值(0x0420~0x0421)为零将使看门狗无效。过程数据缓存区被刷新后,过程数据看门狗将重新计数。过程数据看门狗超时后,将触发以下操作:
●设置过程数据看门狗状态寄存器0x0440.0=0;
●数字量I/O PDI接口收回数字量输出数据,不再驱动输出信号或拉低输出信号;
●过程数据看门狗超时计数寄存器(0x0442)增加。
(2)PDI看门狗
一次正确的PDI读写操作可以启动PDI看门狗重新计数。设置PDI看门狗定时器的值(0x0410~0x0411)为零将使看门狗无效。PDI看门狗超时后,将触发以下操作:
●设置ESC DL状态寄存器0x0110.1=0,DL状态变化映射到ECAT帧中并将其发送给主站;
●PDI看门狗超时计数寄存器(0x0443)值增加。
参考《工业以太网现场总线EtherCAT驱动程序设计及应用》,作者:郇极,刘艳强