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

Seite 5 von 8 ErsteErste ... 34567 ... LetzteLetzte
Ergebnis 41 bis 50 von 78

Thema: Strukturiertes Programmieren durch Programmbausteine

  1. #41
    Registriert seit
    03.04.2008
    Beiträge
    5.985
    Danke
    230
    Erhielt 770 Danke für 660 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Wenn ich so lese, dann stellt sich mir die Frage, warum gibt es flags?
    Es ist doch Mist, wenn in verschiedenen Bausteinen ein Ausgang oder flag zugewiesen bzw gesetzt / rückgesetzt werden.
    Wo soll ein Instandhalter anfangen Fehler zu suchen?

    Und dabei ist es doch völlig egal, in welcher Programmiersprache das Programm erstellt wird.

    Und es ist so, dass die Hochsprachenprogrammierer?, die sich als PLC Programmierer profilieren wollen, zuerst einmal die Technik verstehen sollen.

    PLC ist eben eine andere Welt und das ist auch gut so.


    bike

    btw: Also ich kann auch Netzwerke in jeder Sprache schreiben und in in einer Länge, die in keinem Editor angeschaut werden können. Doch muss das sein?
    "Any fool can write code that a computer can understand.
    Good programmers write code that humans can understand."
    --Martin Fowler

  2. #42
    Registriert seit
    01.10.2012
    Beiträge
    199
    Danke
    12
    Erhielt 55 Danke für 36 Beiträge

    Standard

    Als Beispiel das Thema Betriebzustände. Es gibt AUS/HAND/AUTO/EINRICHTEN. Der Ausgang ist eine Lampe und sie soll ausser bei AUS bei allen anderen Zuständen an sein. Da mach ich die Verknüpfungen in einem FC und setze mir dafür Bits in einem DB oder halt Merker. Wenn ich dann den Ausgang für die Lampe ansteuer sieht das so aus.
    Code:
    if DB1.DBX0.0       // Auto FC1 Zeile 20
       or DB1.DBX0.1  // Hand FC1 Zeile 40
       OR DB1.DBX0.2 // Einrichten FC1 Zeile 60
       then
       A1.0:=true; // Lampe EIN 
    else 
       A1.0:=false; // Lampe AUS
    end_if;
    Die andere Schreibweise ist ja dasselbe, nur verkürzt. Nur wenn hier einer reinschaut ist es auf Anhieb klar was fehlt bzw. wo was herkommt um weiter zu suchen. Ausserdem kann man besser kommentieren.

    Nochmal, es geht mir nicht um irgendwelche Grundsatzdiskussionen, aber ich hab mir früher als Instandhalter oft sowas gewünscht um gerade im Stress früh 3.00 Uhr auf die Schnelle nachschauen zu können. Gerade weil sich das SCL in Step7 beim Beobachten mitunter so zickig hat.
    Nüchtern betrachtet war es besoffen besser.

  3. #43
    Registriert seit
    27.07.2012
    Ort
    AUT
    Beiträge
    467
    Danke
    82
    Erhielt 152 Danke für 85 Beiträge

    Standard

    Um mich auch mal hier in der Grundsatzdiskussion einzubringen:
    Ich finde dass obiges OR in FUP oder KOP viel übersichtlicher und besser gelöst ist (imho ist es sogar in AWL klarer). Nicht umsonst hat sich für binäre Logiken FUP und KOP durchgesetzt. Bei komplexeren Dingen sieht es natürlich wieder anders aus.
    Regards NRNT

  4. #44
    Registriert seit
    25.11.2010
    Ort
    OWL
    Beiträge
    644
    Danke
    21
    Erhielt 139 Danke für 119 Beiträge

    Standard

    Zitat Zitat von bike Beitrag anzeigen
    Wenn ich so lese, dann stellt sich mir die Frage, warum gibt es flags?
    Es ist doch Mist, wenn in verschiedenen Bausteinen ein Ausgang oder flag zugewiesen bzw gesetzt / rückgesetzt werden.
    Wo soll ein Instandhalter anfangen Fehler zu suchen?
    Klar, meistens beginnt die Fehlersuche beim Ausgang. Wenn der nur an einer Stelle des Programms zugewiesen wird, hat man natürlich einen eindeutigen Einsprungspunkt für die Suche. Aber wie geht es dann weiter? Im Hauptprogramm wird ja etwas stehen wie
    Code:
    HWAusgang:=(Hand AND HandAusgang) OR (Auto AND AutoAusgang);
    Angenommen, Auto=1, AutoAusgang=0. Dann muss ich ja doch in dem Programmteil oder FB weitersuchen, in dem AutoAusgang programmiert ist.

    Wenn ich die Ausgangszuweisungen in den FB's für die einzelnen Betriebsarten habe, fange ich mit der Suche auf der anderen Seite an. Erstmal schauen, welche Betriebsart aktiv ist, und dann in den entsprechenden FB springen. Dort habe ich dann alles, was ich brauche, vor mir, inklusive der Ausgangszuweisung.
    Ich erhebe für so eine Struktur keineswegs allein selig machenden Anspruch, aber für die Art der Maschinen, die wir bauen, hat sie sich als recht praktikabel erwiesen.

  5. #45
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.647
    Danke
    1.059
    Erhielt 2.044 Danke für 1.627 Beiträge

    Standard

    @Bapho:
    es geht konkret um dieses besipiel!

    Zitat Zitat von Bapho Beitrag anzeigen
    klar geht das auch, aber wie liest sich das dann wenn es komplexer wird

    Code:
    a1.0:=((e1.0 and e1.1) or e7.0) and (e2.0 and (not e2.1 or 3.1)) and ((e3.0 and not e3.3) or A2.0));
    dann schaut da der arme Instanthalter rein und kratzt sich nachdenklich am Hinterkopf

    edit: Strichpunkt vergessen
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  6. #46
    Registriert seit
    03.04.2008
    Beiträge
    5.985
    Danke
    230
    Erhielt 770 Danke für 660 Beiträge

    Standard

    Es gibt meist mehr als einen Weg zum Ziel.
    Es ist doch aber meist aufwendiger, wenn man in den verschieden Funktionen schauen muss, in welcher der Ausgang aktiviert wird.
    Ich finde es persönlich leichter, wenn im Querverweis immer nur eine Position angezeigt wird, an der die Zuweisung erfolgt.
    Wenn komplette Funktionen portabel programmiert werden, dann kann man ohne viel zu tun diese verschiedene Projekte einfügen.

    Jeder nach seiner Art, denn die einzig glücklich machende Lösung gibt es wohl nicht.


    bike
    "Any fool can write code that a computer can understand.
    Good programmers write code that humans can understand."
    --Martin Fowler

  7. #47
    Registriert seit
    01.10.2012
    Beiträge
    199
    Danke
    12
    Erhielt 55 Danke für 36 Beiträge

    Standard

    Zitat Zitat von vierlagig Beitrag anzeigen
    @Bapho:
    es geht konkret um dieses besipiel!
    So wie ich es oben geschrieben habe, die 3 Zustände in 3 separaten if Zweigen erzeugen und ein Bit setzen, dann nur die Bits und für den Ausgang verknüpfen.
    Oder reitest du so drauf rum weil ich ganz hinten eine Klammer zuviel hab?
    Nüchtern betrachtet war es besoffen besser.

  8. #48
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.647
    Danke
    1.059
    Erhielt 2.044 Danke für 1.627 Beiträge

    Standard

    Zitat Zitat von Bapho Beitrag anzeigen
    So wie ich es oben geschrieben habe, die 3 Zustände in 3 separaten if Zweigen erzeugen und ein Bit setzen, dann nur die Bits und für den Ausgang verknüpfen.
    Oder reitest du so drauf rum weil ich ganz hinten eine Klammer zuviel hab?
    ich reite nicht darauf rum, schon gar nicht wegen einer Klammer.

    Du hast dies als Beispiel für Unübersichtlichkeit ins Feld geführt und musst Dich nun leider an der Übersichtlichkeit messen lassen.
    Obiger Extrakt mit den Datenbausteinzugriffen spiegelt nicht das Eingangs erwähnte Beispiel wider.

    Wie dem auch sei - ST/SCL ist nach wie vor nach meinem Dafürhalten nicht für ausschweifendere Bitoperationen geeignet, wohl aber für das Arbeiten mit Zustandsentsprechungen im INT-Format so dass man auf so komfortable Befehle wie CASE zurückgreifen kann.
    Geändert von vierlagig (27.05.2014 um 15:17 Uhr)
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  9. #49
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    9.404
    Danke
    799
    Erhielt 2.766 Danke für 2.234 Beiträge

    Standard

    Zitat Zitat von Bapho Beitrag anzeigen
    So wie ich es oben geschrieben habe, die 3 Zustände in 3 separaten if Zweigen erzeugen und ein Bit setzen, dann nur die Bits und für den Ausgang verknüpfen.
    Oder reitest du so drauf rum weil ich ganz hinten eine Klammer zuviel hab?
    Ist das so schwer, das einfach mal mit Deinem IF..THEN-Konstrukt zu formulieren? Oder würdest Du dann feststellen, daß es keineswegs übersichtlicher aussieht? (und viel mehr Platz auf dem Bildschirm oder Ausdruck benötigt?)

    Nochmal zu den Instandhaltern - es geht nicht darum, ob die womöglich zu dumm für AWL oder SCL oder mehrfach-Zuweisungen sind, sondern die haben einfach keine Zeit zu verschwenden wenn die Anlage steht. Da ist keine Zeit erst 7 falsche Programmstellen zu beobachten... oder die ganze Bildschirmseite Text zu lesen statt das fehlende Bit in KOP direkt auf den ersten Blick zu sehen. Oder noch zusätzlich eine Variablentabelle öffnen zu müssen, um zu sehen, ob die im beobachteten Programmteil eindeutig zu sehende Zuweisung auch tatsächlich am Ende des Zyklus am Ausgang ankommt.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  10. #50
    Registriert seit
    21.02.2011
    Ort
    Deutschland, Baden-Würtemberg
    Beiträge
    904
    Danke
    104
    Erhielt 103 Danke für 84 Beiträge

    Standard

    Wie dem auch sei - ST/SCL ist nach wie vor nach meinem Dafürhalten nicht für ausschweifendere Bitoperationen geeignet, wohl aber für das Arbeiten mit Zustandsentsprechungen im INT-Format so dass man auf so komfortable Befehle wie CASE zurückgreifen kann.
    Ich stimme bedingt zu.
    Bei Operationen, welche in einem Baustein hunderte Bitzuweisungen auf Eingänge von Datenbausteinen haben, würde FUP zwar besser aussehen, aber die Arbeit bei einer Änderung vervielfachen. Bei sehr kleinen Bit-Logiken hat ST auch wieder den Vorteil der (finde ich) Übersichtlichkeit.

    Bei mittleren, sich nie ändernden Situationen mag vieleicht eine visuelle Sprache richtig gewählt sein.

    Habe ich große Mengen an Variablennamen zu ändern (als Beispiel), dann kann ich dies ganz locker in word oder einem .txt bearbeiten und einfach in das ST Programm einfügen.
    Mit FUP oder anderen "visuellen" Sprachen geht das leider nicht.

    Ich handhabe es so, dass ich alles, was den Anwender angeht (vieleicht die ersten beiden Bausteinebenen) mit FUP zuweise. Alles andere ist ausschließlich ST und kann schön von Projekt zu projekt einfach kopiert werden anstatt umständlich exportiert/importiert oder als .lib angelegt.

    Piece and Out für heute!
    Grüße und schönen Feierabend für alle die, wie ich, gleich nach Hause gehen!
    Flo

Ähnliche Themen

  1. Dokumentation erstellte Programmbausteine
    Von husox81 im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 19.04.2010, 18:15
  2. Programmbausteine schachteln
    Von Seraph im Forum Programmierstrategien
    Antworten: 9
    Letzter Beitrag: 02.11.2009, 22:59
  3. Strukturiertes bibliotheksfähiges Programm
    Von Snake im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 15.10.2008, 11:30
  4. Opensource SPS-Programmbausteine
    Von Anonymous im Forum Programmierstrategien
    Antworten: 8
    Letzter Beitrag: 06.01.2006, 08:18
  5. Opensource SPS-Programmbausteine
    Von Der Nörgler im Forum Stammtisch
    Antworten: 9
    Letzter Beitrag: 25.11.2005, 19:52

Lesezeichen

Berechtigungen

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