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