Arduino schéma - arduino.sk

PID trojstavová regulácia.

Vaše nápady a pomoc s Vašimi projektami
Príspevky: 10
Registrovaný: Pon 19. Jan 2015 0:16:45

Re: PID trojstavová regulácia.

Poslaťod Finkis » Sob 14. Feb 2015 0:05:43

scr.jpg

Príspevky: 37
Registrovaný: Pon 15. Sep 2014 13:29:24

Re: PID trojstavová regulácia.

Poslaťod JK_Soft » Sob 14. Feb 2015 0:11:59

Finkis píše:
scr.jpg

Presne to iste zobrazí aj mne. Ale knižnica ethercard nie je vyfarbená. Tak ju asi nepozná.

Príspevky: 10
Registrovaný: Pon 19. Jan 2015 0:16:45

Re: PID trojstavová regulácia.

Poslaťod Finkis » Sob 14. Feb 2015 0:13:41


Príspevky: 174
Registrovaný: Ned 16. Mar 2014 23:22:00

Re: PID trojstavová regulácia.

Poslaťod posjirka » Sob 14. Feb 2015 15:05:56

stáhnul jsem si tady

https://github.com/jcw/ethercard

knihovnu ethernetu a ztroskotalo mi to na knihovně Bounce

zkusil jsem tyto 2 knihovny

https://www.pjrc.com/teensy/td_libs_Bounce.html
http://playground.arduino.cc/Code/Bounce

a ani jedna mi nepomohla... jsem ve stadiu tomto:

Kód: Vybrať všetko
D:\arduino-1.0.5-r2\libraries\Bounce\Bounce.cpp:4:22: error: WProgram.h: No such file or directory
D:\arduino-1.0.5-r2\libraries\Bounce\Bounce.cpp: In constructor 'Bounce::Bounce(uint8_t, long unsigned int)':
D:\arduino-1.0.5-r2\libraries\Bounce\Bounce.cpp:11: error: 'millis' was not declared in this scope
D:\arduino-1.0.5-r2\libraries\Bounce\Bounce.cpp:12: error: 'digitalRead' was not declared in this scope
D:\arduino-1.0.5-r2\libraries\Bounce\Bounce.cpp: In member function 'void Bounce::write(int)':
D:\arduino-1.0.5-r2\libraries\Bounce\Bounce.cpp:20: error: 'digitalWrite' was not declared in this scope
D:\arduino-1.0.5-r2\libraries\Bounce\Bounce.cpp: In member function 'int Bounce::update()':
D:\arduino-1.0.5-r2\libraries\Bounce\Bounce.cpp:46: error: 'millis' was not declared in this scope
D:\arduino-1.0.5-r2\libraries\Bounce\Bounce.cpp: In member function 'long unsigned int Bounce::duration()':
D:\arduino-1.0.5-r2\libraries\Bounce\Bounce.cpp:58: error: 'millis' was not declared in this scope
D:\arduino-1.0.5-r2\libraries\Bounce\Bounce.cpp: In member function 'int Bounce::debounce()':
D:\arduino-1.0.5-r2\libraries\Bounce\Bounce.cpp:71: error: 'digitalRead' was not declared in this scope
D:\arduino-1.0.5-r2\libraries\Bounce\Bounce.cpp:73: error: 'millis' was not declared in this scope


možná bych být tebou vzal původní kod a odmazal co nepotřebuješ (ETHERNET,...) a postupně oživoval.
Já když něco píšu tak tam dávám odkazy na knihovny, které jsem použil. Pak se tyto problémy minimalizuji...

Príspevky: 37
Registrovaný: Pon 15. Sep 2014 13:29:24

Re: PID trojstavová regulácia.

Poslaťod JK_Soft » Sob 14. Feb 2015 21:28:28


Príspevky: 2
Registrovaný: Uto 19. Máj 2015 21:34:10

Re: PID trojstavová regulácia.

Poslaťod steve22184 » Uto 07. Júl 2015 19:56:47

JK_Soft píše:Aj tu je niečo podobné https://github.com/SauleVire/KKK_valdiklis_v2


Pri kompilácií projektu mi vyhodí túto chybovú hlášku: no match for 'operator==' (operand types are 'const char*' and 'MenuItem')
Pochopil som že operandy nie sú rovnakého typu a nevie ich porovnať ale ako to vyriešiť. Poradíte niekto prosím.

Obrázok užívateľa
Príspevky: 133
Registrovaný: Štv 06. Nov 2014 12:06:09

Re: PID trojstavová regulácia.

Poslaťod budvar10 » Str 08. Júl 2015 8:59:36

V prvom rade je otázka, čo provnávaš a či to vôbec dáva zmysel. Či sú to znakové reťazce v tomto konkrétnom prípade. A ak áno, sú v podstate dve možnosti:
1. dodefinovať požadovaný operátor pre daný class, alebo vytvoriť nový child class s daným operátorom
2. pretypovať objekty tak aby vyhovovali existujúcemu operátoru.

Príspevky: 2
Registrovaný: Uto 19. Máj 2015 21:34:10

Re: PID trojstavová regulácia.

Poslaťod steve22184 » Str 15. Júl 2015 19:14:19

budvar10 píše:V prvom rade je otázka, čo provnávaš a či to vôbec dáva zmysel. Či sú to znakové reťazce v tomto konkrétnom prípade. A ak áno, sú v podstate dve možnosti:
1. dodefinovať požadovaný operátor pre daný class, alebo vytvoriť nový child class s daným operátorom
2. pretypovať objekty tak aby vyhovovali existujúcemu operátoru.


Vyriešené, použil som neaktuálnu library MenuBackend :roll: po aktualizácií to už funguje.

Príspevky: 33
Registrovaný: Pia 26. Jún 2015 21:17:41

Re: PID trojstavová regulácia.

Poslaťod barado » Str 26. Okt 2016 22:03:51

Pri hľadaní na nete som našiel kód, ktorý by mal pochádzať z funkčného bloku Siemensu a mal by umožňovať aj trojstavovú reguláciu z výstupu PID bloku. Je to SCL jazyk Siemens-u a bude to treba upraviť. Neviem, či sa niekto na to podujme a urobí z toho nejakú použiteľnú library.
Tu je nejaká dokumentácia aj k tomu bloku: http://plc4good.org.ua/files/02_materials/pid/S7pidcob.pdf

Kód: Vybrať všetko
FUNCTION_BLOCK FB43
TITLE ='pulse generator'
AUTHOR : SIMATIC
FAMILY : ICONT
NAME : PULSEGEN
VERSION : '1.6'
// reversed by komatic
VAR_INPUT
INV : REAL ;                          //input variable
PER_TM : TIME  := T#1S;               //period time
P_B_TM : TIME  := T#50MS;             //minimum pulse/break time
RATIOFAC : REAL  := 1.000000e+000;    //ratio factor
STEP3_ON : BOOL  := TRUE;             //three step signal on
ST2BI_ON : BOOL ;                     //two step signal for bipolar manipulated value on
MAN_ON : BOOL ;                       //manual mode on
POS_P_ON : BOOL ;                     //positiv pulse on
NEG_P_ON : BOOL ;                     //negativ pulse on
SYN_ON : BOOL  := TRUE;               //impuls output synchronisation on
COM_RST : BOOL ;                      //complete restart
CYCLE : TIME  := T#10MS;              //sample time
END_VAR
VAR_OUTPUT
QPOS_P : BOOL ;                       //positiv pulse on
QNEG_P : BOOL ;                       //negativ pulse on
END_VAR
VAR
sInvAlt : REAL ;   
siZaehlPer : INT ;   
siZaehlPTm : INT ;   
sbPosP : BOOL  := TRUE ;   
END_VAR
VAR_TEMP
rCycle : REAL ;                       //Abtastzeit in real
rPerTm : REAL ;                       //Periodendauer in real
rMinPTm : REAL ;                      //Mindestimpulsdauer in real
rRatioFac : REAL ;                    //Verh?ltnisfaktor
Offset : REAL ;                       //Offset
PTm : REAL ;                          //Impulsdauer
PTmHlm : REAL ;                       //Obere Begrenzung der Impulsdauer
PTmLlm : REAL ;                       //Untere Begrenzung der Impulsdauer
END_VAR
BEGIN
IF COM_RST
THEN
  QPOS_P:=0 ;   
  QNEG_P:=0 ;   
  siZaehlPer:=0 ;   
  siZaehlPTm:=0 ;   
  sbPosP:=1 ;   
ELSE
  IF MAN_ON
  THEN
      IF STEP3_ON
      THEN
          IF POS_P_ON XOR NEG_P_ON
          THEN
              IF POS_P_ON
              THEN
                  QPOS_P:=1 ;   
                  QNEG_P:=0 ;   
              ELSE
                  QPOS_P:=0 ;   
                  QNEG_P:=1 ;   
              END_IF;
          ELSE
              QPOS_P:=0 ;   
              QNEG_P:=0 ;   
          END_IF;
      ELSE
          IF POS_P_ON
          THEN
              QPOS_P:=1 ;   
              QNEG_P:=0 ;   
          ELSE
              QPOS_P:=0 ;   
              QNEG_P:=1 ;   
          END_IF;
      END_IF;
      siZaehlPer:=0 ;   
      sbPosP:=1 ;   
  ELSE       
      IF siZaehlPer<=0
      THEN 
          rCycle:=DINT_TO_REAL(TIME_TO_DINT(CYCLE));
          rPerTm:=DINT_TO_REAL(TIME_TO_DINT(PER_TM));
          rMinPTm:=DINT_TO_REAL(TIME_TO_DINT(P_B_TM));
          siZaehlPer:=REAL_TO_INT(rPerTm/rCycle);
          IF siZaehlPer<0 THEN siZaehlPer:=0; END_IF;
          IF STEP3_ON
          THEN
              IF INV>0.0
              THEN
                  IF RATIOFAC>1.0
                  THEN
                      rRatioFac:=1.0/RATIOFAC;
                  ELSE
                      rRatioFac:=1.0 ;   
                  END_IF;
                  sbPosP:=1 ;   
              ELSE
                  IF RATIOFAC>1.0
                  THEN
                      rRatioFac:=1.0 ;   
                  ELSE
                      rRatioFac:=RATIOFAC;
                  END_IF;
                  sbPosP:=0 ;   
              END_IF;
              Offset:=0.0 ;   
          ELSE
              IF ST2BI_ON
              THEN
                  IF INV<-100.0
                  THEN
                      Offset:=0.0 ;   
                      rRatioFac:=0.0 ;   
                  ELSE
                      Offset:=0.5*rPerTm;
                      rRatioFac:=0.5 ;   
                  END_IF;
              ELSE
                  Offset:=0.0 ;   
                  IF INV<0.0
                  THEN
                      rRatioFac:=0.0 ;   
                  ELSE
                      rRatioFac:=1.0 ;   
                  END_IF;
              END_IF;
              sbPosP:=1 ;   
          END_IF;
          PTm:=ABS(INV*rRatioFac*rPerTm*0.01+Offset);
          IF (NOT STEP3_ON) AND ST2BI_ON THEN rRatioFac:=1.0; END_IF;
          PTmHlm:=rPerTm-rMinPTm;
          PTmLlm:=rMinPTm;
          IF PTm>PTmHlm THEN PTm:=rPerTm; END_IF;
          siZaehlPTm:=REAL_TO_INT(PTm/rCycle);
          IF (PTm<>sInvAlt) AND SYN_ON AND (siZaehlPer>2)THEN siZaehlPer:=1; END_IF;
          IF STEP3_ON
          THEN
              IF siZaehlPTm=0
              THEN
                  QPOS_P:=0 ;   
                  QNEG_P:=0 ;   
              ELSE
                  IF sbPosP
                  THEN
                      QPOS_P:=1 ;   
                      QNEG_P:=0 ;   
                  ELSE
                      QPOS_P:=0 ;   
                      QNEG_P:=1 ;   
                  END_IF;
              END_IF;
          ELSE
              IF siZaehlPTm = 0
              THEN
                  QPOS_P:=0 ;   
              ELSE
                  QPOS_P:=1 ;   
              END_IF;
              QNEG_P:=NOT QPOS_P;
          END_IF;
          siZaehlPer:=siZaehlPer-1 ;   
          IF siZaehlPTm>0
          THEN
              siZaehlPTm:=siZaehlPTm-1 ;   
          ELSE
              siZaehlPTm:=0 ;   
          END_IF;
      END_IF;       
   END_IF;
END_IF;   
sInvAlt:=INV;
END_FUNCTION_BLOCK

Príspevky: 33
Registrovaný: Pia 26. Jún 2015 21:17:41

Re: PID trojstavová regulácia.

Poslaťod barado » Štv 10. Nov 2016 21:10:30

Ahojte,
aj sa pokúsil ten kód niekto prepísať a vyskúšať?
Alebo je to blbosť?
Je škoda, že tu je tak mŕtvo...

Obrázok užívateľa
Príspevky: 300
Registrovaný: Pon 19. Nov 2012 12:01:08
Bydlisko: HC/BA

Re: PID trojstavová regulácia.

Poslaťod tomXX » Pon 05. Dec 2016 15:11:12

barado píše:Ahojte,
aj sa pokúsil ten kód niekto prepísať a vyskúšať?
Alebo je to blbosť?
Je škoda, že tu je tak mŕtvo...


Veru, skapal pes. Som rád, že urobím niečo svoje, nemám čas tu prepisovať kód ktorý nepotrebujem. Narodil sa mi druhý kinder, som rád že sa mám kedy najesť :D
blog.sitepoint.sk - zaujímavé riešenia okolo Arduina

Predchádzajúci

Späť na Projekty vo fáze vývoja