Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 17 von 17

Thema: singulärer Programmaufruf

  1. #11
    Registriert seit
    12.04.2005
    Ort
    Black Forest
    Beiträge
    1.336
    Danke
    27
    Erhielt 130 Danke für 117 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Gucki Beitrag anzeigen
    und warum ist das so? Also warum hat man eigentlich als Programmierer, der ja verschiedene Programmierarten, wie logikorientiertes Programmieren, objektorientiertes Programmieren, funktionales Programmieren, etc. erlernt hat, hier Probleme und scheitert? Oder ist das nur bei "nicht-studierten" Programmierern der Fall? Zu welchem Programmierstil ist die SPS-Programmierung unterzuordnen?
    Also aus meiner Erfahrung, meist sind die "nicht-studierten" die Leute welche´die besseren SPS Programme schreiben
    Das primäre Problem liegt wohl meist darin, das viele nicht verstehen wie die

    a) zyklische Abarbeitung wirklich funktioniert
    b) Zusammenhänge zwischen der SPS (Programmfunktionen) und Mechanik sowie Fluid verhalten
    c) Ergonomisches Programmdesign auf den Bediener zu gestalten

    „Eine Frage raubt mir den Verstand bin ich verrückt oder sind es die Anderen ?“

    Albert Einstein

  2. #12
    Registriert seit
    26.12.2009
    Beiträge
    98
    Danke
    22
    Erhielt 9 Danke für 7 Beiträge

    Standard

    I think it would be wise to spend some milliseconds on the plcopen sites:

    http://www.plcopen.org/

    MfG Kaputt

  3. #13
    Registriert seit
    19.04.2014
    Beiträge
    15
    Danke
    0
    Erhielt 3 Danke für 2 Beiträge

    Standard

    oh alles klar, vielen Dank für die zahlreichen ausführlichen Erklärungen. Da steckt natürlich mehr dahinter, als es zunächst den Anschein hat, die erfahrenen unter euch, wissen was ich meine. Insofern ist das aber schade, denn es gibt mittlerweile so viele verschieden INformatik-Richtungen an den Unis (Medizinische Inf., Technische Inf., Wirtschaftsinf., Medieninf., und und und...), also irgendeine sollte doch in Richtung SPS doch zumindest eine Grundlage darstellen, oder nicht? Wenn ich die Kommentare so lese, ist das anscheinend überhaupt nicht der Fall, was irgendwo schade ist...

  4. #14
    BZ-REX ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    29.05.2015
    Beiträge
    3
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ralle, vielen Dank.
    Im weiteren Verlauf der Diskussion kommt deutlich heraus, wie die SPS eigentlich gedacht ist, ich muss aber tortzdem das Hochfahren realisieren.
    Deine Idee habe ich gut verstanden, bei der Umsetzung scheitere ich aber noch.

    Der Ablaufplan endet normalerweise mit einem Sprung. Nun kann ich vor den Sprung eine Transition FALSE setzen, dann sollte es nie zum Sprung kommen. Davor setze ich eine Wiederholvariable = 0, sodass das Programm beim nächsten Durchlauf gar nicht mehr aufgerufen wird. Dies führt im Betrieb nicht zu Problemen? Ich hab zwar nicht Informatik studiert aber nach meinem Gefühl ist so ein dead-end nicht die optimale Lösung.
    Kann ich im FUP einfach eine Var setzen und diese in der ersten Zeile abfragen? Das hat bei mir nicht geklappt.

    Dann noch eine dumme Frage zur Abarbeitung:
    Wenn ich das Hauptprogramm geschrieben habe wird es zeilenweise abgearbeitet. Wenn ich nun Netzwerke konstruiere die nur im ersten Durchlauf aktiv sind, setze ich ab dem 2. Durchlauf einen Sprung über diese Netzwerke (mit der genannten Var). In einer ersten Simulation hat dies aber nicht geklappt.
    Da nicht gewartet wird, werden nur alle Netzwerke zeilenweise gestartet oder wie muss ich mir das vorstellen?

    Gruß

    BZ-REX

  5. #15
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.697 Danke für 1.949 Beiträge

    Standard

    Das kommt nun ein wenig darauf an, mit welcher Sprache du hauptsächlich programmierst.
    Springen kannst du immer, in KOP, FUP, AWL und auch in SCL/ST, wobei da Sprunge m.E. nicht genutzt werden sollten, sondern If .. then - Anweisungen.

    In KOP/FUP/AWL nutzt man bei SIemens z.B. Anweisungen wie SPB (Springe bedingt):

    Code:
    UN #bMyVar //boolsche Variable
    SPB M001
    
    ... //Code, der nur bei bMyVar = True ausgeführt wird
    
    M001: NOP 0
    In SCL/ST sieht das dan so aus:

    Code:
    If bMyVar Then
    
    ... //Code, der nur bei bMyVar = True ausgeführt wird
    
    END_IF;
    Wenn ich Ablaufsprache nutzte, dann mache ich so einen STOP nicht am Ende des Bausteins, der Ablauf kann und sollte da ganz normal enden., es wird eine globale Variable gesetzt, die dann auch überall wieder abgefragt werden kann.
    Entweder du sorgst beim Aufruf des Bausteins dafür, dass der Ablauf nicht mehr gestartet wird oder du hast im Ablauf als erstes eine Transition, die deine Boolsche Variable abfragt und dann nicht weitermacht. So kann man dann auch bestimmen, was bei einem Neuanlauf der SPS passieren soll, u.U. will man ja den entsprechenden Ablauf auch dann nicht starten.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  6. Folgender Benutzer sagt Danke zu Ralle für den nützlichen Beitrag:

    BZ-REX (01.06.2015)

  7. #16
    BZ-REX ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    29.05.2015
    Beiträge
    3
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    1000 Dank Ralle, für die stets schnell und gute Antwort!
    Inzwischen habe ich eine bessere Vorstellung wie das funktionieren kann.
    Leider konnte ich mein Programm noch nicht testen, aber das folgt baldmöglichst. Die meisten meiner Probleme habe ich mit dem Ablaufplan gelöst und einer Transition "FALSE".
    Es fehlt nurnoch eine verschachtelte Bedingung in der die Physik und Programm synchronisiert werden müssen, vlt. werde ich da die Ableitung bemühen oder ich werde die CASE-Lösung versuchen...
    In jedem Fall sehe ich jetzt Licht am Ende des Tunnels, danke!

  8. #17
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.186
    Danke
    923
    Erhielt 3.291 Danke für 2.660 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Im Grunde ist ein nur einmaliger Programmdurchlauf ganz einfach zu realisieren mit einem "Merker" (STAT... oder DBX... oder M..., je nach Zweck remanent oder nicht-remanent) der nach Programmausführung auf TRUE gesetzt wird:
    Code:
    IF bBedingung AND NOT bFunktion_wurde_ausgefuehrt THEN
    
      ... //Code, der nur einmal ausgeführt werden soll
    
      bFunktion_wurde_ausgefuehrt := TRUE;
    END_IF;
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

Ähnliche Themen

  1. Antworten: 11
    Letzter Beitrag: 06.03.2016, 13:27
  2. Programmaufruf in einer loopschleife?
    Von gustave im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 15.09.2010, 13:46
  3. Programmaufruf im ST
    Von Daberer im Forum CODESYS und IEC61131
    Antworten: 4
    Letzter Beitrag: 24.08.2010, 10:45
  4. probleme mit programmaufruf
    Von 00schneider im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 08.12.2009, 10:17
  5. Programmaufruf im Unterprogramm SBR_0
    Von Andyzrx im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 07.07.2009, 09:14

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •