下图为将楼主的程序转为C语言的代码,其中状态图判断的部分:
45行 判断是否为0U,(不知道是干啥)如果是则执行,后退出。
55行 判断事件发生时系统处于off状态时,执行on-switch事件判断。
87行 系统处于on状态时,执行的事件判断:
首先,判断是否为off-switch事件,是则执行,后退出。
其次,判断是否为High状态,是则执行hot()判断,后退出。
最后,low状态,执行hot()判断,后退出。
系统仅在B_step(RT_MODEL_B_T *const B_M)函数中调用了上面的函数
if ((zcEvent_idx_0 != NO_ZCEVENT) || (zcEvent_idx_1 != NO_ZCEVENT)) {
/* Gateway: Chart */
if ((int8_T)zcEvent_idx_0 == 1) {//上升沿off开关
/* Event: '
:17' */
sfEvent = B_event_off_switch;
B_chartstep_c3_B(&sfEvent, B_DW);
}
if ((int8_T)zcEvent_idx_1 == -1) {//下降沿on开关
/* Event: ':18' */
sfEvent = B_event_on_switch;
B_chartstep_c3_B(&sfEvent, B_DW);
}
}
从上面的程序看,仅仅在发生上升沿和下降沿的时候才会调用状态转换函数,而在这两个动作时仅产生B_event_on_switch和B_event_off_switch这两个事件,所以B_chartstep_c3_B()仅仅能执行55行和89行这两个分支。
下图为将楼主的程序转为C语言的代码,其中状态图判断的部分:
45行 判断是否为0U,(不知道是干啥)如果是则执行,后退出。
55行 判断事件发生时系统处于off状态时,执行on-switch事件判断。
87行 系统处于on状态时,执行的事件判断:
首先,判断是否为off-switch事件,是则执行,后退出。
其次,判断是否为High状态,是则执行hot()判断,后退出。
最后,low状态,执行hot()判断,后退出。
系统仅在B_step(RT_MODEL_B_T *const B_M)函数中调用了上面的函数
if ((zcEvent_idx_0 != NO_ZCEVENT) || (zcEvent_idx_1 != NO_ZCEVENT)) {
/* Gateway: Chart */
if ((int8_T)zcEvent_idx_0 == 1) {//上升沿off开关
/* Event: '
:17' */
sfEvent = B_event_off_switch;
B_chartstep_c3_B(&sfEvent, B_DW);
}
if ((int8_T)zcEvent_idx_1 == -1) {//下降沿on开关
/* Event: ':18' */
sfEvent = B_event_on_switch;
B_chartstep_c3_B(&sfEvent, B_DW);
}
}
从上面的程序看,仅仅在发生上升沿和下降沿的时候才会调用状态转换函数,而在这两个动作时仅产生B_event_on_switch和B_event_off_switch这两个事件,所以B_chartstep_c3_B()仅仅能执行55行和89行这两个分支。
举报