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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 17

Thema: singulärer Programmaufruf

  1. #1
    Registriert seit
    29.05.2015
    Beiträge
    3
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Forum,
    als Neuling hier und in der SPS-Steuerung soll ich eine Anlage Betreiben. Die SPS soll mit CoDeSys programmiert werden.
    Um mich der Aufgabe von bekanntem Terrain zu nähern habe ich die die Struktur wie für eine höhere Programmiersprache (C++) geschrieben.
    Die Objektorientierung wollte ich durch Funktionsblocks und unterProgramme realisieren.

    Das Hauptprogramm soll die einzelnen Unterprogramme aufrufen. Einige Porgrammteile (bspw. Hochfahren) sollen aber nur einmal ausgeführt werden. Das heißt ich benötige eine Ende-Funktion am Ende des Programms.
    Darüber hinaus habe ich Programmteile denen die Idee der schrittweisen Abarbeitung der Programmzeilen zugrunde liegt. So muss eine Zeile beendet sein, bevor eine weitere aufrufe. Derzeit behelfe ich mir mit dem Ablaufplan um -insb. eine Warten-Funktion- zu realisieren. Leider wird mein Programm zunehmend komplex und ich stoße an die Grenzen dieser Idee (verschachtelte If-Bed.

    Der entscheidende Unterschied zu CoDeSys scheint mir im Programmablauf zu liegen. In CoDeSys wird jedes Programm als Dauerschleife ausgeführt, was sich für mein Pogramm als Schwierigkeit erweist.

    Nun die Fragen:
    1. Gibt es eine Endefunktion bspw. im Ablaufplan, dass ich nicht zu einem Punkt zurückspringen muss oder im ST am Ende des Programms?
    2. Gibt es die Möglichkeit Programme nur einmalig aufzurufen?
    3. Wie realisiert ihr das Hochfahren?
    4. Gibt es die Möglichkeit ein Programm Zeilenweise abzuarbeiten und so eine Warten-funktion zu integrieren?

    Für Hilfe und konstruktive Kritik bin ich sehr dankbar
    Zitieren Zitieren singulärer Programmaufruf  

  2. #2
    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

    Normalerweise legt man sich Variablen oder Structs an, die dann ensprechend genutzt werden.

    1. Man setzt am Ende des Programms eine Variable auf True, die nennt man z.B. PRG_Fertig, damit kann man dann arbeiten.
    2. Ja, man setzt am Ende eines Programmes ene Variable z.B. PRG_bearbeitet auf True, am Anfang des Programmes fragt man diese Variable ab. Ist sie True, springt man ans Ende dieses Programmes oder ruft den Baustein nicht mehr auf.
    3. Bei Start der SPS setzt man alle Variablen auf False (auch die aus 2.). Dafür gibt es in vielen SPS eine Routine (S7 --> OB 100, OB101) oder bereits eine Variable, die nur im ersten Zyklus True ist.
    Mit der letzten Anweisung im SPS-Programm setze ich mit i.A. eine Variable auf True, die besagt, dass der 1. Zyklus abgelaufen ist. Ist diese Variable nicht da, n´bin ich also im ersten Zyklus und kann damit arbeiten.
    4. Na ja, es gibt wie immer mehrere Möglichkeiten. Eine davon ist eine Schrittkette und auch für Schrittketten gibt es viele Möglichkeiten. In deinem Fall könnte ich mit vorstellen mit Case zu arbeiten.
    Man nimmt eine INT, diese wird in einer Case-Anweisung genutzt. Im Schritt 1 steht dies Variable auf 1, man springt in der Case-Anweisung zu Punkt 1. Ist dieser fertig abgearbeitet, erhöht man die Variable um 1, beim nächsten Mal wird dann also zu Punkt 2 gesprungen. Man kann auch dazwischen Freiräume lassen (immer um 10 erhöhen), um Schritte einfügen zu können. Pausen realisiert man mit Timern oder man schafft sich einen etwas komplexeren Schrittkettenbaustein, den man aus der Schrittkette heraus mit Variablen steuern kann.
    Eine weitere gute und recht einfache Möglichkeit, besonders, wenn man anfängt wäre, die Schrittketten in Ablaufsprache zu schreiben. (Das ist extra für Schrittketten da und Bestandteil von Codesys, siehe also Hilfedateien von Codesys)

    Ich empfehle dringenst, dir Bücher über SPS-Programmierung zu besorgen und diese zu lesen, denn aus meiner Erfahrung heraus, enden Programmmierversuche von PC-Programmierern bei SPS-Programmen in üblen Code-Katastrophen. das ist nicht abwertend gemeint, aber die Herangehensweise ist sehr sehr unterschiedlich und man muß komplett umdenken, was mir beim PC-Programmieren dann auch oft schwer fällt.
    Geändert von Ralle (29.05.2015 um 20:23 Uhr)
    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

  3. Folgende 2 Benutzer sagen Danke zu Ralle für den nützlichen Beitrag:

    BZ-REX (01.06.2015),ducati (31.05.2015)

  4. #3
    Registriert seit
    17.07.2009
    Ort
    Am Rande der Ostalb
    Beiträge
    5.480
    Danke
    1.141
    Erhielt 1.241 Danke für 973 Beiträge

    Standard

    Zitat Zitat von Ralle Beitrag anzeigen
    Ich empfehle dringenst, dir Bücher über SPS-Programmierung zu besorgen und diese zu lesen, denn aus meiner Erfahrung heraus, enden Programmmierversuche von PC-Programmierern bei SPS-Programmen in üblen Code-Katastrophen. das ist nicht abwertend gemeint, aber die Herangehensweise ist sehr sehr unterschiedlich und man muß komplett umdenken, was mir beim PC-Programmieren dann auch oft schwer fällt.
    Den Ratschlag kann ich nur beistimmen und noch um folgenden Rat ergänzen:
    Wenn du als PC-Programmierer mit SPS anfängst, dann lass die Finger weg von ST oder Anweisungsliste. Versuch deine Aufgaben mit KOP/FUP und ohne Sprünge zu lösen.
    So bekommst du am schnellsten ein Gespür für die Arbeitsweise einer SPS.

    Gruß
    Dieter

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

    Standard

    Zitat Zitat von Blockmove Beitrag anzeigen
    Den Ratschlag kann ich nur beistimmen und noch um folgenden Rat ergänzen:
    Wenn du als PC-Programmierer mit SPS anfängst, dann lass die Finger weg von ST oder Anweisungsliste.
    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?

  6. #5
    Registriert seit
    16.12.2009
    Beiträge
    75
    Danke
    3
    Erhielt 5 Danke für 5 Beiträge

    Standard

    Ursprünglich sollte eine SPS eine Schützschaltung ersetzen. Sie konnte sehr viel komplexer sein, lies sich ohne Schraubenzieher ändern, brauchte weniger Platz und geht seltener kaputt. Man könnte das noch weiter fortsetzen...
    Das wichtigste daran ist aber: Eine Schützschaltung hat kein "ENDE". So ein Schaltschrank arbeitet immer. Fährt ein mit einer SPS gesteuerter Aufzug nach oben und das Programm bleibt stehen, ist zu Ende oder muss erst noch auf etwas "warten", dann geht der Aufzug durch die Decke. Klar soweit?
    Von daher sind C++ und eine SPS etwas anderes.
    Das ändert nichts daran, dass man mit beiden die gleichen Aufgaben lösen kann.
    Grüße
    Tom

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

    Standard

    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?
    Weil eine SPS völlig anders arbeitet als eine Software auf einem PC-Betriebssystem.
    Weil Abstürze oder undeterministisches Verhalten absolut nicht tolerierbar sind.

    Weil eine SPS immer zu einem kontrollierten Ergebnis kommen muß, insbesondere bei Fällen, die der Programmierer nicht vorhergesehen hat. Und da sind Hochsprachen wie ST oder SCL prädestiniert, Programmierkonstrukte mit unvollständiger Logik zu erlauben oder einmal errechnete Entscheidungen nachträglich und schwer findbar wieder unwirksam zu machen. Gerade "studierten" Programmierern geben ST/SCL das Gefühl, Programmieren von SPS wäre kinderleicht und sie könnten einfach losprogrammieren... und beim Testen wird dann für jedes festgestellte Fehlverhalten eine Spezial-Behandlung hinterherprogrammiert, was dann zu den erwähnten Code-Katastrophen führt.

    Und weil bei Software-Fehlern in SPS Menschen verletzt werden können.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  8. #7
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 919 Danke für 740 Beiträge

    Standard

    Zitat Zitat von Gucki Beitrag anzeigen
    und warum ist das so?
    Ein Computerprogramm wird nur einmal komplett durchlaufen und soll normalerweise nicht zum Ende kommen.

    Das SPS-Programm soll dagegen in einer sehr kurzen Zeit zum Ende kommen und nirgendwo zwischendurch stehen bleiben, weil es dann nach Aktualisierung der Aus- und dem Einlesen der Eingänge von Neuem gestartet wird. (Dafür gibt es in der Regel auch eine Überwachung.)

    Mit diesem Unterschied tun sich Hochsprachenprogrammierer am Anfang oft schwer.


    Die Abarbeitung ist immer zeilenweise, aber z.B. Wartefunktionen erfolgen anders, als in einem Computerprogramm. Das Programm darf nicht an dieser Wartestelle stehen bleiben, sondern nur die Funktionen, die mit der Wartezeit verzögert werden sollen, werden übersprungen, damit das Programm zum Ende kommen kann. Die Wartezeit findet also nicht in einem einzelnen sondern über mehrere Programmdurchläufe hinweg statt.

  9. Folgender Benutzer sagt Danke zu hucki für den nützlichen Beitrag:

    ducati (31.05.2015)

  10. #8
    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

    Ich denke auch, heutzutage ist es vor allem dieses deterministische, vereinfacht auch zeilenweises Abarbeiten von Code, das lernt vielleicht keiner im Studium, das gilt vielleicht bei Dozenten als primitiv?
    Mir sagte mal ein Professor für Automatisierungstechnik an einer Uni auf NAchfrage zu Step7 etc. ganz stolz (oder eher hochmütig?): "Wir machen alles in C !". Dabei saß er vor seiner Sun-WS und ich wußte, weil ich ihn von meinem Studium her noch kannte, der hatte noch nie wirklich ein Programm für eine Industriemaschine geschrieben. Die machen heute Industrie 4.0, was auch immer das ist.
    Events, Callback-Funktionen usw. sind ja anscheinend langsam (zu meinem Leidwesen) ein wenig im Kommen, zumindest zeigt ja Codesys V3 wo man gerne hinwill.
    Es wird dann wie bei Windows-Programmen, man programmiert Events und wartet darauf, wenn das BS mal eben einen verschluckt, weil gerade beschäftigt, oder zu spät reagiert, weil gerade anderweitig beschäftigt, dann fließt der radioaktive Müll in den Fluß und nicht in den Tank, wen juckt das, Hauptsache inovative Technik. Aber Spaß beiseite, mir ist es lieber, eine SPS-Programm ist hinreichend "primitiv", aber nachvollziehbar und ganz klar deterministisch. Das ist nicht immer einfach hinzubekommen und auch ganz deutlich nicht das, was ein normales PC-Programm machen muß.
    Geändert von Ralle (30.05.2015 um 23:30 Uhr)
    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

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

    Blockmove (31.05.2015)

  12. #9
    Registriert seit
    17.07.2009
    Ort
    Am Rande der Ostalb
    Beiträge
    5.480
    Danke
    1.141
    Erhielt 1.241 Danke für 973 Beiträge

    Standard

    Zitat Zitat von Ralle Beitrag anzeigen
    Ich denke auch, heutzutage ist es vor allem dieses deterministische, vereinfacht auch zeilenweises Abarbeiten von Code, das lernt vielleicht keiner im Studium, das gilt vielleicht bei Dozenten als primitiv?
    Mir sagte mal ein Professor für Automatisierungstechnik an einer Uni auf NAchfrage zu Step7 etc. ganz stolz (oder eher hochmütig?): "Wir machen alles in C !". Dabei saß er vor seiner Sun-WS und ich wußte, weil ich ihn von meinem Studium her noch kannte, der hatte noch nie wirklich ein Programm für eine Industriemaschine geschrieben. Die machen heute Industrie 4.0, was auch immer das ist.
    Events, Callback-Funktionen usw. sind ja anscheinend langsam (zu meinem Leidwesen) ein wenig im Kommen, zumindest zeigt ja Codesys V3 wo man gerne hinwill.
    .
    Es ist ein Problem unserer Hochschulen, dass es hier keinen verbindlichen Lehrplan gibt.
    Jeder Prof. kann im Prinzip machen was er will.
    So gibt es ganz heftige Unterschiede im KnowHow der Absolventen.

  13. #10
    Registriert seit
    09.08.2006
    Beiträge
    3.627
    Danke
    912
    Erhielt 656 Danke für 542 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Blockmove Beitrag anzeigen
    Es ist ein Problem unserer Hochschulen, dass es hier keinen verbindlichen Lehrplan gibt.
    Jeder Prof. kann im Prinzip machen was er will.
    So gibt es ganz heftige Unterschiede im KnowHow der Absolventen.
    Ich hab auch schon öfters mal drüber nachgedacht, ob es sinnvoll ist, an den Hochschulen einen verbindlichen Lehrplan einzuführen. Aber ich denke nein. Dazu ist u.U. das Fachgebiet der Elektrotechnik oder auch Automatisierungstechnik viel zu breit aufgestellt. Da sollen sich die Hochschulen schon unterscheiden, worin sie ihren Schwerpunkt sehen.
    Aber sinnvoll wäre eine "Qualitätskontrolle" der Profs! Es gibt einfach viel zu viele Profs welche eine grottenschlechte Lehre machen. Sei es daher weil sie vom Thema zu wenig verstehen, sie zu stark auf abgehobene "Theorien" versteifen, einfach schlechte Pädagogen sind oder sich einfach mehr um ihre Forschung kümmern als um die Lehre...

    Aber zurück zum Thema Informatiker in der SPS-Programmierung: Wie oben schon geschrieben sollten SPSn ursprünglich Schützschaltungen ersetzten. Daher sollte jetzt auch ein einfacher "Elektriker" diese neuen SPS-Schaltungen entwickeln können, ohne großartiges Informatikstudium. Das erklärt vielleicht auch die andere Herangehensweise an ein SPS-Programm.
    Im einfachsten Fall schreibst Du einfach einen UND-Befehl A0.0:=E0.0 AND E0.1; in den OB1 und das Programm macht schon etwas. Und um es noch übersichtlicher zu gestalten eben in FUP oder KOP.

    Naja mittlerweile werden die Programme immer komplexer und die Arbeitgeber gehen dazu über, studierte Informatiker einzustellen. Und je nach deren Hoch- oder Übermut wollen die abundzu das Rad neu erfinden

    Mein alter Prof. an der Hochschule wollte auch nie verstehen, warum man eine mehrtägige Step7-Schulung benötigt... Aber der hatte auch nie eine Industriemaschine programmiert.

    Gruß.

  14. Folgende 2 Benutzer sagen Danke zu ducati für den nützlichen Beitrag:

    Blockmove (31.05.2015),ebt'ler (01.06.2015)

Ä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
  •