Skriptovací jazyk obsahuje i objekt jednoduchého PID regulátoru, který je možné použít pro zkoušení jednoduché regulace. Tento příklad pouze ukazuje funkci PID regulátoru. V praxi je pak třeba implementovat i příjem dat a generování regulačního zásahu například na CAN sběrnici. Nicméně to již bylo ukázáno v předchozích dílech seriálu.
Skript používá pro zadání požadované hodnoty prvek scrollbaru z okna skriptu. Jeho čtení se provádí funkcí ui_get_val0. Hodnotu scrollbaru 0-10000 přepočte na rozsah 0-100. Pro zobrazení pak používá objekt obj_datagraph který pomocí jednoduchého grafu vizualizuje data.
script:
type = TIMER_SCRIPT;
end
// Definice promennych
variables:
double val;
double inc;
int graph_value;
double setpoint;
int graph_setpoint;
end
// Definice objektu
objects:
obj_pid pid;
obj_datagraph graph;
end
init:
graph.open("PID");
graph.set_min(0);
graph.set_max(2000);
pid.set_dt(0.1);
pid.set_min(minusd(100));
pid.set_max(100);
pid.set_kp(0.1);
pid.set_kd(0.03);
pid.set_ki(0.5);
val=80;
end
shutdown:
end
body:
setpoint = ui_get_val0();
setpoint = setpoint/100;
inc = pid.calculate(setpoint, val);
logs("setpoint:");
logd(setpoint);
logs(" val:");
logd(val);
logs(" inc:");
logd(inc);
log_endl();
val = val + inc;
graph_value = truncd((val * 10)+1000);
graph_setpoint = truncd((setpoint * 10)+1000);
graph.set_value(0,graph_setpoint);
graph.set_value(1,graph_value);
graph.update();
end
Další díly seriálu:
- Díl 1: Periodické generování dat na CAN sběrnici.
- Díl 2: Uživatelské prvky pro řízení skriptu
- Díl 3: Simulace joysticku dle SAE J1939
- Díl 4: Monitorování a zápis událostí do souboru CSV
- Díl 5: Měření periody a zápis do CSV pomocí přiřazení objektu
- Díl 6: Komunikace pomocí TCP
- Díl 7: Komunikace pomocí sériové linky
- Díl 8: PID regulátor
- Díl 9: Výpočet CRC a objekt obj_dataset
- Díl 10: Volání funkce z externí DLL
- Díl 11: Odeslání emailu s hlášením
