Advertisement
Guest User

Untitled

a guest
Nov 18th, 2015
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SCL 5.74 KB | None | 0 0
  1. (********************************************************************
  2.  * COPYRIGHT --  
  3.  ********************************************************************
  4.  * Programm: Liftsteuerung
  5.  * Datei: LiftsteuerungCyclic.st
  6.  * Autor: Adin
  7.  * Erstellt: 5. November 2015
  8.  ********************************************************************
  9.  * Implementierung des Programms Liftsteuerung
  10.  ********************************************************************)     
  11. PROGRAM _CYCLIC
  12.  
  13.     (*GRUNDSÄTZLICHE ANLEITUNG ZUM CASE:
  14.      Wenn Taster_rauf oder Taster_runter betätigt wird und sich kein Objekt
  15.      in der Lichtschranke befindet, dann wird der Verriegelungsmechanismus
  16.      der Tür aktiviert und die Endschalter jeweils betätigt, wenn die
  17.      Tür im jeweiligen Stockwerk geschlossen ist. 
  18.      Wenn der für das Stockwerk passende Endschalter betätigt ist,
  19.      dann wird der Motor aktiviert, welcher im Rechtslauf den Lift
  20.      nach oben befördert und im Linkslauf nach unten.*)
  21.      
  22.  
  23.     (*Sorgt dafür, dass Steuerung des Fahrstuhls nur bei keinen vorhandenen
  24.     Fehlern möglich ist*)
  25.     IF Fehler = 'Kein Fehler' THEN
  26.         (*CASE-Funktion für Zustände des Lifts, je nach Tasterbetätigung
  27.         und Aktivität, wird in die jeweiligen Zustände gesprungen*)  
  28.         CASE Zustandsvariable OF
  29.  
  30.         (*Erdgeschoss, Lifttür ist offen*)    
  31.         Stockwerk_0_offen :
  32.  
  33.             Endschalter_Tuer_offen0 := TRUE;
  34.             Endschalter_Tuer_zu0 := FALSE;
  35.             Endschalter_unten := TRUE;
  36.             Motor_Bremse := TRUE;
  37.             Motor_links := FALSE;
  38.             IF Endschalter_unten = TRUE AND Endschalter_Tuer_offen0 = TRUE THEN
  39.                 Motor_Bremse := FALSE;
  40.             END_IF;
  41.  
  42.             IF  Taster_rauf = TRUE AND Tuer_Lichtschranke = FALSE THEN
  43.                 Tuer_verriegelt := TRUE;
  44.                 Endschalter_Tuer_zu0 := TRUE;
  45.                 Motor_Bremse := FALSE;
  46.                 Endschalter_Tuer_offen0 := FALSE;
  47.                 Zustandsvariable := 2;
  48.             END_IF;
  49.    
  50.         (*Ergeschoss, Lifftür ist geschlossen*)
  51.         Stockwerk_0_zu :
  52.  
  53.             IF  Endschalter_Tuer_zu0 = TRUE THEN
  54.                 Motor_rechts := TRUE;
  55.                 Endschalter_unten := FALSE;
  56.                 Taster_rauf := FALSE;
  57.                 Taster_runter := FALSE;
  58.                 Zustandsvariable := 3;
  59.             END_IF;
  60.        
  61.         (*Erster Stock, Lifftür ist offen*)   
  62.         Stockwerk_1_offen :
  63.            
  64.             Endschalter_Tuer_zu1 := FALSE;
  65.             Endschalter_mitte := TRUE;
  66.             Motor_Bremse := TRUE;
  67.             Motor_links := FALSE;
  68.             Motor_rechts := FALSE;
  69.        
  70.             IF  Endschalter_mitte = TRUE THEN
  71.                 Motor_Bremse := FALSE;
  72.                 Tuer_oeffnet := TRUE;
  73.                 Tuer_verriegelt := FALSE;
  74.                 Endschalter_Tuer_offen1 := TRUE;
  75.             END_IF;
  76.        
  77.             IF  Taster_rauf = TRUE OR Taster_runter = TRUE AND
  78.                 Tuer_Lichtschranke = FALSE THEN
  79.                 Tuer_verriegelt := TRUE;
  80.                 Tuer_oeffnet := FALSE;
  81.                 Endschalter_Tuer_zu1 := TRUE;
  82.                 Endschalter_Tuer_offen1 := FALSE;
  83.                 Zustandsvariable := 4;
  84.             END_IF;
  85.    
  86.         (*Erster Stock, Lifftür ist geschlossen*)
  87.         Stockwerk_1_zu :
  88.            
  89.             IF  Endschalter_Tuer_zu1 = TRUE AND Taster_rauf = TRUE THEN
  90.                 Endschalter_mitte := FALSE;
  91.                 Motor_rechts := TRUE;
  92.                 Taster_rauf := FALSE;
  93.                 Taster_runter := FALSE;
  94.                 Zustandsvariable := 5;
  95.             ELSIF  Endschalter_Tuer_zu1 = TRUE AND Taster_runter = TRUE THEN
  96.                 Endschalter_mitte := FALSE;
  97.                 Taster_rauf := FALSE;
  98.                 Taster_runter := FALSE;
  99.                 Motor_links := TRUE;
  100.                 Zustandsvariable := 1; 
  101.             END_IF;
  102.        
  103.         (*Zweiter Stock, Tür ist offen*)  
  104.         Stockwerk_2_offen :
  105.        
  106.             Endschalter_Tuer_zu2 := FALSE;     
  107.             Tuer_verriegelt := FALSE;
  108.             Endschalter_oben := TRUE;
  109.             Motor_Bremse := TRUE;
  110.             Motor_rechts := FALSE;
  111.            
  112.             IF Endschalter_oben = TRUE THEN
  113.                 Motor_Bremse := FALSE;
  114.                 Tuer_oeffnet := TRUE;
  115.                 Tuer_verriegelt := FALSE;
  116.                 Endschalter_Tuer_offen2 := TRUE;
  117.             END_IF;
  118.            
  119.             IF  Taster_runter = TRUE THEN
  120.                 Tuer_verriegelt := TRUE;
  121.                 Tuer_oeffnet := FALSE;
  122.                 Zustandsvariable := 6;
  123.             END_IF;
  124.                        
  125.         (*Zweiter Stock, Tür ist geschlossen*)
  126.         Stockwerk_2_zu :
  127.            
  128.             Endschalter_Tuer_zu2 := TRUE;
  129.             Endschalter_Tuer_offen2 := FALSE;
  130.            
  131.             IF  Endschalter_Tuer_zu2 = TRUE THEN
  132.                 Endschalter_oben := FALSE;
  133.                 Motor_links := TRUE;
  134.                 Taster_rauf := FALSE;
  135.                 Taster_runter := FALSE;
  136.                 Zustandsvariable := 3;
  137.             END_IF;
  138.                
  139.     END_CASE;
  140. (*********************************FEHLERMELDUNGEN******************************)
  141.     END_IF;
  142.     (*Gegenseitige Verriegelung, um das aktiv sein beider Taster zu verhindern*)
  143.     IF  Taster_rauf = TRUE THEN
  144.         Taster_runter := FALSE;
  145.     ELSIF Taster_runter = TRUE THEN
  146.         Taster_rauf := FALSE;
  147.     END_IF;
  148.     (*Fehlermeldung, falls Endschalter der anzeigen soll, dass Tür offen ist
  149.     in falschem Stockwerk aktiv ist*)
  150.     IF  (Endschalter_Tuer_offen0 = TRUE AND (Endschalter_Tuer_offen1 = TRUE
  151.         OR Endschalter_Tuer_offen2 = TRUE)) OR
  152.         (Endschalter_Tuer_offen1 = TRUE AND (Endschalter_Tuer_offen0 = TRUE
  153.         OR Endschalter_Tuer_offen2 = TRUE)) OR
  154.         (Endschalter_Tuer_offen2 = TRUE AND (Endschalter_Tuer_offen1 = TRUE
  155.         OR Endschalter_Tuer_offen0 = TRUE)) = TRUE THEN
  156.         Fehler := 'Endschalter, die offene Türen anzeigen sollen sind defekt';
  157.     END_IF;
  158.     (*Fehlermeldung, falls Motoren und Bremse gleichzeitig aktiv sind*)
  159.     IF  Motor_Bremse = TRUE AND (Motor_links = TRUE OR Motor_rechts = TRUE) THEN
  160.         Fehler := 'Motor und Bremse laufen gleichzeitig';
  161.     END_IF;
  162.     (*Fehlermeldung, falls ein Objekt(Mensch) in der Lichtschranke der Tür ist*)
  163.     IF Tuer_Lichtschranke = TRUE THEN
  164.         Fehler := 'Objekt in Lichtschranke';
  165.     END_IF;
  166.     (*Fehlermeldung, falls Endschalter für 2 Stockwerke aktiv sind*)
  167.     IF  (Endschalter_unten = TRUE AND (Endschalter_mitte = TRUE
  168.         OR Endschalter_oben = TRUE)) OR
  169.         (Endschalter_mitte = TRUE AND (Endschalter_unten = TRUE
  170.         OR Endschalter_oben = TRUE)) OR
  171.         (Endschalter_oben = TRUE AND (Endschalter_mitte = TRUE
  172.         OR Endschalter_unten = TRUE)) = TRUE THEN
  173.         Fehler := 'Endschalter, die Stockwerk anzeigen sollen sind defekt';
  174.     END_IF;
  175.  
  176.  
  177. END_PROGRAM
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement