iGH EtherCAT初始化流程分析(四)

1. 请求主站

用户程序通过ecrt_request_master请求主站设备,该函数调用ecrt_request_master_err(),取得master设备,并执行ec_master_enter_operation_phase()函数。
输出调试信息如下:

[102786.471256] EtherCAT: Requesting master 0...
[102786.471268] EtherCAT DEBUG 0: IDLE -> OPERATION.
[102786.471274] EtherCAT: Successfully requested master 0.

请求主站设备完成后,开始创建数据域,调用ecrt_master_create_domain()。创建数据域成功后,分别完成对各从站设备的配置,配置内容包括:PDO映射,SM配置,FMMU配置和DC配置。配置过程输出信息在这里不再罗列,需要注意的一点是用户程序调用的入口是ecrt.h和相关的库文件,通过ioctl以驱动的形式实现,与master文件夹中的部分函数稍有区别。


2. 激活主站

用户程序通过ecrt_master_activate()激活主站,其主要工作为退出IDLE进程,启动OPERATION进程,并开始执行主站控制任务。
在master.c程序中,ecrt_master_active完成的内容有:
1. 结束domain配置
该过程将相关PDO映射内容写入FMMU单元中,主要步骤为构建数据包(通常为LRW),计算FMMU映射地址。
2. 结束IDLE进程
3. 配置回调函数
4. 启动OPERATION进程
完成后,系统启动OPERATION进程

3. Operation进程

operation进程的执行方式与前述IDLE进程运行方式类似,即以固定的周期循环执行相应的操作,其内容更简单,包括:
1. Master状态机运转
2. Slave状态机运转
operation进程中执行发送和接收数据,该操作由用户程序来完成,以此实现应用数据处理。

4. Master状态机运转

maser结构中使用config_changed用来表示master已激活,配置可以执行。该信号与active同时置1,在配置完成后由配置程序置为0,保证只执行一次。
从fsm_master的状态转换图中可以看到,broadcast状态是整个状态机的枢纽,它有四个可以跳转的路径:
1. start状态
在接收数据包出错,或者未检测到从站设备时,不断地广播寻找从站设备 ;
2. clear_address状态
检测到从站设备,并完成了从站设备的初始化工作;
3. write_system_times状态
检测到从站设备,且从站设备已被激活但未配置,config_changed为1;
4. read_status状态
检测到从站设备,且从站设备已被配置。
iGH EtherCAT初始化流程分析(四)_第1张图片

你可能感兴趣的:(EtherCAT)