>//if (Yt == 300) {task_x=1;}
//printf ( Vt_y n% f n , Vt_y);
//printf ( x n% d n , Yt);
}; DEACCEL_Sx:
//секція входу (RUNENTRY) {
//printf ( DEACCEL n% d n );
};=(Xc-Xt); ((((dx gt; 0) amp; amp; (Vt_x gt; 0)) || ((dx lt; 0) amp; amp; (Vt_x lt; 0))) amp; amp; (abs (dx) gt; indexstep_x)) {(indexstep_x lt; Vm_step_x) {NEXTSTATE=ACCEL_Sx; } Else {NEXTSTATE=CONST_Sx;}} {_ x=indexstep_x - 1;=mainmass_x [indexstep_x] .dt;// v taktah (dx gt; 0) {if (++ phase gt; 4) {phase=1; }; }; (Dx lt; 0) {if (--phase lt; 1) {phase=4; }; };=Getoutbuf () amp; phases_mask_x; (temp | phases_signals_x [phase - 1]); (indexstep_x == 0) {sost=BRAKE_Sx;} else {sost=DEACCEL_Sx;}=WAIT_Sx;
//printf ( dt_ms n% d n , mainmass_y [indexstep_y] .dt_ms);
}; CONST_Sx:
//секція входу (RUNENTRY) {
//printf ( CONST n% d n );
};=(Xc-Xt); ((((dx gt; 0) amp; amp; (Vt_x lt; 0)) || ((dx lt; 0) amp; amp; (Vt_x gt; 0))) || (abs (dx) lt;=indexstep_x)) {NEXTSTATE=DEACCEL_Sx; } {((abs (dx) - 1) lt;=indexstep_x) {sost=DEACCEL_Sx;} else {sost=CONST_Sx;} (dx gt; 0) {if (++ phase gt; 4) {phase=1; }; }; (Dx lt; 0) {if (--phase lt; 1) {phase=4; }; };=Getoutbuf () amp; phases_mask_x; (temp | phases_signals_x [phase - 1]);=WAIT_Sx;
}; STEP_Sx:
//секція входу (RUNENTRY) {
//printf ( CONST n% d n );
};
//dx=(Xc-Xt);
//if ((((dx gt; 0) amp; amp; (Vt_x lt; 0)) || ((dx lt; 0) amp; amp; (Vt_x gt; 0))) || (abs (dx) lt;=indexstep_x)) {NEXTSTATE=DEACCEL_Sx; }
//else {
//if ((abs (dx) - 1) lt;=indexstep_x) {sost=DEACCEL_Sx;} else {sost=CONST_Sx;} _ x=1;=mainmass_x [indexstep_x] .dt;// v taktah (dx gt; 0) {if (++ phase gt; 4) {phase=1; }; }; (Dx lt; 0) {if (--phase lt; 1) {phase=4; }; };=Getoutbuf () amp; phases_mask_x; (temp | phases_signals_x [phase - 1]);=BRAKE_Sx;=WAIT_Sx;
//} ;: work=0;
}//end swith
};
//_ x_init (void)
{= SYSPAGE_ENTRY (qtime) - gt; cycles_per_sec/1000 * Ttormoz_ms;
//printf ( sled_x_init n ); 0;
};
А.3 Лістинг коду завдання Sled_Y
int sled_y (void)
{short int temp;
//змінні состоянійint STATE=INITSTATE;// Поточний стан задачіint NEXTSTATE=STOP_S;//наступний стан завдання (якщо завдання не змінила свій стан, то=- 1 Якщо на даному перегляді вона не змінює свого стану, то NextStatee=- 1 * /; int RUNENTRY;//ознака виконання секції входу для даного состояніяint phase=1;
//інтервалиuint64_t dt;//часовий інтервал між кроками в тактах
//Переменниеuint64_t TendStep;//час закінчення кроку в тактахuint64_t TendT;//час закінчення спрацьовування гальма в тактах
static int sost;// int BSM_x; int64_t dy; (NEXTSTATE!=- 1)//задача змінила свій стан
{(TASKID, STATE, NEXTSTATE);//зареєструємо цю подію
STATE=NEXTSTATE;=- 1;=1;
} RUNENTRY=0; (STATE)
{STOP_S:
//секція входу (RUNENTRY) {
//printf ( STOP_y n% d n );
//printf ( STOP_yt n% d n , Yt);
}; ((vihod_0X == 1) amp; amp; (vihod_0Y == 1)) {
//// printf ( xt n% d n , Xt);
//// printf ( xc n% d n , Xc);=Yc-Yt; (dy!=0) {_y=0;=BRAKE_S;=STOP_S;
}
}; BRAKE_S:
//секція входу (RUNENTRY) {
//printf ( BRAKE n% d n ); (sost == STOP_S) {(num_Ty);=getoutbuf () amp; phases_mask_y; (temp | phases_signals_y [0]);
} else {(num_Ty);=getoutbuf () amp; phases_mask_y; (temp | 0); _ y=0;
}=ClockCycles () + Ttormoz;
//printf ( x n% d n , Yt);
} (ClockCycles () gt;=TendT) {
//printf ( x n% d n , Yt); (sost == STOP_S) {(dy == 1) {NEXTSTATE=STEP_S;} else {NEXTSTATE=ACCEL_S ;}
} else {NEXTSTATE=STOP_S;}
}; ACCEL_S:
//секція входу (RUNENTRY) {
//printf ( ACCEL n% d n );
};
/...