发表于:2009-03-25 17:04:21
楼主
0. 子站未在线上时,主站发送诊断请求命令,子站无响应,主站Slave_Handler状态机不转移;
1. 子站上电后,协议芯片初始化,启用Set_Slave_addr、Get_cfg、Slav_Diag、Set_Prm和Chk_cfg服务存取点功能,更新系统诊断相关信息,设置装置默认的配置数据;
2. 主站在正常收到子站诊断请求响应报文中发现该子站未受其他主站的控制Master_Lock=0, 主站状态机转移到Prm状态,发送参数化命令给子站;
3. 子站收到参数化命令,首先对标准参数化数据进行检查(主要是对子站支持的功能和主站要求子站支持的功能、参数合法性、Ident号是否一致、进行判断检查),然后检查用户参数化数据(一般协议芯片通过中断请求信号提供给用户接口),用户参数化数据如果也检查通过,则填充相应系统诊断信息,比如主站地址、组号、清除参数化请求(Prm_Req)及参数化错误(Prm_Fault)诊断位,如果系统参数化数据或用户参数化数据检查没有通过,则置位参数化错误诊断位,如果参数化数据中包含了不支持的功能则置位Not_Supported位;不管参数检查结果如何,子站均回复E5(Short ACK)短确认;
4. 主站如果未收到参数化确认命令则将回到诊断请求状态,如果收到了确认则进入检查配置数据状态,发送检查配置数据命令;
5. 子站收到检查配置命令,用户检查配置数据,如果检查通过则清系统诊断比如场站未准备好、检查配置出错位,同时启用RD_Input、RD_Output、Global_control及Data Exchange服务存取点功能,子站转移到周期性数据交互状态;如果检查配置不通过,则置位Cfg_Fault诊断位,子站回到参数化状态;不管检查配置是否成功,子站均回复E5短确认;
6. 主站如果未收到检查配置确认命令则将回到诊断请求1状态,如果收到了确认则再次发送请求子站诊断信息2,然后检查诊断信息中是否正常参数化和检查配置了,如果正常在静态诊断位为0时就进入了数据交互状态,如果静态诊断位置上了,还是处在诊断请求2状态;如果接收有误或参数化有错或检查配置有错,则主站回到诊断请求1状态;
7. 主从进入了周期性数据交互阶段,此时主站发送输出请求数据,子站回复输入数据,如果子站比如断电离开数据交互状态,子站回复RS(服务拒绝)信息,主站回到诊断请求1状态;如果子站回的数据长度和组态配置的数据长度不同,主站进入Unlock状态,发送Unlock参数化命令给从站然后回到诊断请求1状态;如果收到的输入数据正常,而返回DH的报文,表示有优先级高的诊断信息要发送,主站就会进入请求诊断信息2状态请求此时子站的诊断信息;
8. 如果主站给不同子站分组实现sync同步和(或)freeze功能,则发送全局控制命令给子站,让几组子站冻结输入数据或同步输出数据;或者如果主站USIF进入了清除状态,主站也会发送全局命令(清除命令);如果USIF是在运行态,主站也会在数据控制时间到时发送空的全局控制命令。
------------------------------------------------------------------------------------------------
Passion...