Szia!
Köszönöm a választ. Én azért olvasgattam mindenféle anyagokat, de ezek alapján sem volt teljesen egyértelmű a működés. Olvastam a te PID-es dolgaidat, azonban a példát még nem tudtam beizzítani. Gondoltam a hiányosságaim feltárására is jó ez a fórum.
1.
I_ITL_ON:=TRUE
Például ennek a működése sem volt teljesen világos, de a példaprogramban benne volt.
Most már kicsit tisztább.
2.
CYCLE :=T#10S
Szintén a példa hozta. Igazából az OB35-be tettem a PID-et. A S7 help az OB35-re 100ms intervallumot ír. Akkor a CYLE is 100ms kell legyen? Legalábbis így értem.
3.
PVPER_ON:=TRUE
...
a PIW 256-ban 0-100 tartományban kell tartani az értéket.
A hivatkozott doksiban a következő szerepel:
The process variable can be input in the peripheral (I/O) or floating-point
format. The CRP_IN function converts the PV_PER peripheral value to a
floating-point format of -100 to +100 % according to the following formula:
Output of CRP_IN = PV_PER *(100/27648)
The PV_NORM function normalizes the output of CRP_IN according to the following formula:
Output of PV_NORM = (output of CRP_IN) * PV_FAC + PV_OFF
PV_FAC has a default of 1 and PV_OFF a default of 0.
Nekem ebből az jön le, hogy a %-ra alakítás miatt a PIW 256 nem kell, hogy 0 és 100 között legyen. Mert PIW 256 = 0 -> 0% és PIW 256 = 27648 -> 100%.
Nálam ez úgy műkidik, hogy SP_INT = 6% és ha PIW 256 = 1659, akkor LMN = 0. És számításaim szerint 1659 a teljes bemeneti jeltartomány 6%-a.
Vagy megint hülye vagyok?
Az ábra jó, de sajnos a leírás közel sem olyan jó, mint a te kis PID-es programocskádban. Azonban azt még nem tudtam beizzítani ProTool és Step7 (full) hiányában.
Csaba
[ Szerkesztve ]