Saltatu nabigazioa

Etapen programazioa

Aztertutako prozesua nahiko sinplea da eta agian badaude emaitza berdina lortzeko, baina proposatutako pausuen bitartez errazagoa egingo zaizu edozein arazoari erantzun egokia ematea. Ziklo honen Ladder edo KOP diagrama egin aurretik, hiru elementu talde definituko ditugu:

  1. Sarrerak: kasu honetan bi etengailu eta bi ibiltarte amaiera.
  2. Memoria markak: prozesuaren kontrol egokia eramateko, automataren memorian definitzen ditugun elementuak. Kasu honetan:
    • Lau etapak: atera, itxaron, sartu, itxaron.
    • Arrisku egoera.
  3. Irteerak: kasu honetan bi solenoideak.

Bakarrik bi etapekin prozesu berdina lortu dezakegu, baina ez da ideia txarra itxarote denborak etapa gisa tratatzea, ez baita arraroa une horietan zerbait berezia egin behar izatea (argi bat piztu, zerbait berotu, ...). Lau etapa definituz prozesuaren kontrol zorrotzagoa eraman dezakegu eta errazagoa izango da erantzun azkarra ematea behar berrien aurrean.

Elementu hauek definitzeko kode hau erabili dezakegu:

// Konexioak: sarrerak
#define S1_zikloa_hasi        CONTROLLINO_DI0
#define SegurtasunEtengailua  CONTROLLINO_DI1
#define a0                    CONTROLLINO_DI2
#define a1                    CONTROLLINO_DI3

// Konexioak: irteerak
#define Aplus   CONTROLLINO_DO0
#define Aminus  CONTROLLINO_DO1

// Etapen egoera
unsigned int Etapa1 = LOW;   // Zilindroa atera
unsigned int Etapa2 = LOW;   // Itxaron
unsigned int Etapa3 = LOW;   // Zilindroa jaso
unsigned int Etapa4 = HIGH;  // Itxaron (hasieran etapa honetan gaude)
unsigned int arriskua = LOW;  // Arrisku egoera

Horretaz gain, tenporizadore bakoitzarentzat bi elementu definitu behar ditugu:

  • Tenporizadorearen iraupena (milisegundotan).
  • Igarotako denbora gordetzeko aldagai bat (long motakoa).

Hala ba: honako kode puska jarri behar dugu programaren hasieran:

// Tenporizadoreak kontrolatzeko aldagaiak
#define T_E2  5000            // 2. etaparen iraupena: 5 segundu
unsigned long t2 = 0;         // 2. etapa: hemen gordeko du denbora milisegundutan
#define T_E4  2000            // 4. etaparen iraupena: 2 segundu
unsigned long t4 = 2000;      // 4. etapa: hemen gordeko du denbora milisegundutan.
                              // Automata piztean itxarote denbora igaro dela adieraziko dugu

Beraz, programaren egitura antolatzeko, orden hau jarraituko dugu:

  1. Sarreren egoera irakurri.
  2. Sarrerak memoria markekin erlazionatu KOP bitartez.
  3. Irteeren egoera idatzi.