371,8 → 371,6 |
rtExtModePauseIfNeeded(rtmGetRTWExtModeInfo(S), |
(boolean_T *)&rtmGetStopRequested(S)); |
|
cprintf(".(%dus out = %lf)",(int)(rtmGetT(S)*1000000.0),*(real_T *)(rtmGetY(S))); |
|
if (rtmGetStopRequested(S)) break; |
rt_OneStep(S); |
|
396,7 → 394,7 |
int input_ports = rtmGetNumU(S); |
real_T *input; |
|
cprintf("Number of inputs = %d\n",input_ports); |
cprintf("Number of Inputs = %d\n",input_ports); |
|
input = (real_T *)rtmGetU(S); |
|
413,39 → 411,100 |
|
} |
|
TASK OUTPUT_body(void *arg) { |
|
int output_ports = rtmGetNumY(S),i; |
real_T *output; |
|
cprintf("Number of Outputs = %d\n",output_ports); |
|
output = (real_T *)rtmGetY(S); |
|
while(1) { |
|
cprintf("T=%6lf ",rtmGetT(S)); |
|
for (i=0;i<output_ports;i++) |
cprintf("O[%d]=%6lf ",i,output[i]); |
cprintf("\n"); |
|
task_endcycle(); |
|
} |
|
return NULL; |
|
} |
|
int main() { |
|
HARD_TASK_MODEL RTW_task,INPUT_task; |
PID RTW_pid,INPUT_pid; |
HARD_TASK_MODEL RTW_task,INPUT_task,OUTPUT_task; |
PID RTW_pid,INPUT_pid,OUTPUT_pid; |
|
int RTW_period; |
int RTW_wcet; |
|
int INPUT_period; |
int INPUT_wcet; |
|
int OUTPUT_period; |
int OUTPUT_wcet; |
|
Init_RealTime_Workshop(); |
|
RTW_period =(int)(rtmGetStepSize(S) * 1000000.0); |
RTW_wcet = (int)(rtmGetStepSize(S) * 1000000.0 * 0.45); |
|
INPUT_period = (int)(10000.0); |
INPUT_wcet = (int)(10000.0 * 0.20); |
|
OUTPUT_period = (int)(20000.0); |
OUTPUT_wcet = (int)(20000.0 * 0.25); |
|
cprintf("Task Setup\n"); |
cprintf("RTW (P %8d W %8d)\n",RTW_period,RTW_wcet); |
cprintf("INPUT (P %8d W %8d)\n",INPUT_period,INPUT_wcet); |
cprintf("OUTPUT (P %8d W %8d)\n",OUTPUT_period,OUTPUT_wcet); |
|
hard_task_default_model(RTW_task); |
hard_task_def_mit(RTW_task,20000/*(int)(rtmGetStepSize(S) * 1000000.0)*/); |
hard_task_def_wcet(RTW_task,9000); |
hard_task_def_mit(RTW_task,RTW_period); |
hard_task_def_wcet(RTW_task,RTW_wcet); |
hard_task_def_usemath(RTW_task); |
hard_task_def_ctrl_jet(RTW_task); |
|
RTW_pid = task_create("RTW",RTW_body,&RTW_task,NULL); |
if (RTW_pid == NIL) { |
cprintf("Error: Cannot create RealTime Workshop Task\n"); |
cprintf("Error: Cannot create RealTime Workshop [RTW] Task\n"); |
sys_end(); |
} |
|
hard_task_default_model(INPUT_task); |
hard_task_def_mit(INPUT_task,20000); |
hard_task_def_wcet(INPUT_task,9000); |
hard_task_def_mit(INPUT_task,INPUT_period); |
hard_task_def_wcet(INPUT_task,INPUT_wcet); |
hard_task_def_usemath(INPUT_task); |
hard_task_def_ctrl_jet(INPUT_task); |
|
INPUT_pid = task_create("INPUT",INPUT_body,&INPUT_task,NULL); |
if (INPUT_pid == NIL) { |
cprintf("Error: Cannot create RealTime Workshop Task\n"); |
cprintf("Error: Cannot create RealTime Workshop [INPUT] Task\n"); |
sys_end(); |
} |
|
hard_task_default_model(OUTPUT_task); |
hard_task_def_mit(OUTPUT_task,OUTPUT_period); |
hard_task_def_wcet(OUTPUT_task,OUTPUT_wcet); |
hard_task_def_usemath(OUTPUT_task); |
hard_task_def_ctrl_jet(OUTPUT_task); |
|
OUTPUT_pid = task_create("OUTPUT",OUTPUT_body,&OUTPUT_task,NULL); |
if (OUTPUT_pid == NIL) { |
cprintf("Error: Cannot create RealTime Workshop [OUTPUT] Task\n"); |
sys_end(); |
} |
|
task_activate(INPUT_pid); |
task_activate(RTW_pid); |
task_activate(OUTPUT_pid); |
|
while(simulation_run); |
|