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

Seite 5 von 7 ErsteErste ... 34567 LetzteLetzte
Ergebnis 41 bis 50 von 65

Thema: RANT: Konstrukte bei denen man sich manchmal fragt

  1. #41
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.405 Danke für 2.002 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    @Axel:
    Du wirst sicherlich Recht haben, dass das so entstanden sein könnte - als eine Entschuldigung kann ich das aber nicht akzeptieren.
    Genau das, was René schreibt, kenne ich (auch von meinen Kollegen) zur Genüge und bin auch schon zwei-drei Mal darüber gestolpert. Die 2 Sekunden mehr Zeit kann man sich schon nehmen ...

    Gruß
    Larry

  2. #42
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.356
    Danke
    455
    Erhielt 694 Danke für 519 Beiträge

    Standard

    Hahaha.. das ist mal ein lustiger Beitrag.

    Ich hatte vor kurzem eine lustige Konstellation in einem SPS-Programm einer Fremdfirma. Es ging um eine einfache Uhrzeit-Synchronisation zwischen dem Panel und der CPU.

    Das Panel schickt die Uhrzeit als einzelne INT-Varaiblen an die SPS. Im STAT-Bereich des FB ist ein DATE_AND_TIME angelegt. Als es dann aber an das zusammensetzen des DT ging wurde es ein wenig merkwürdig.

    Da stand dann sowas.
    Code:
    L Daten.Jahr
    ITB
    T DB11.DBB20   //Zuerst werden die Zeitwerte auf irgendeinen DB transferiert.
    L Daten.Monat
    ITB
    T DB11.DBB21
    
    //.... und so weiter
    
    //dann geht's an das setzen der Uhrzeit
    Call SET_CLK
    IN= #DT_VarAusStat  // wurde eigentlich noch nirgends beschrieben
    Bin dann eh schnell drauf gekommen dass der DB11 der Instanz-DB des hiesigen FBs war.
    Das war die lustigste Art der "indirekten Adressierung" von STAT-Daten die ich jemals gesehen hab.

    Ich glaub Larry pflegt zu sagen: Von hinten, durch die Brust, ins Auge.
    Geändert von RONIN (03.04.2014 um 21:53 Uhr)
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  3. #43
    Registriert seit
    29.03.2004
    Beiträge
    5.741
    Danke
    143
    Erhielt 1.687 Danke für 1.226 Beiträge

    Standard

    Ich finde ja, dass die Probleme mit der Verwendung von uninitialisierten Temp-Variablen eigentlich ein Fall für eine Compilerwarnung wären.

    Denn der könnte überprüfen ob eine Temp-Variable gelesen, bevor sie geschrieben wird, und dann zumindest eine Warnung ausgeben. Gleiches wenn ich einen FC habe und eine Out-Variable nicht beschreibe. Das wäre für den Compiler-Hersteller nur ein geringer Aufwand, würde aber viele Fehler vermeiden helfen.

  4. #44
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.356
    Danke
    455
    Erhielt 694 Danke für 519 Beiträge

    Standard

    Zitat Zitat von Thomas_v2.1 Beitrag anzeigen
    Ich finde ja, dass die Probleme mit der Verwendung von uninitialisierten Temp-Variablen eigentlich ein Fall für eine Compilerwarnung wären.


    Wie viel Blödsinn wäre uns und der Welt damit wohl erspart geblieben.
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  5. #45
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard

    Aber nur als Warnung bitte. Nicht dass die Initialisierung bzw. das Beschreiben vor dem Lesen an mehreren Stellen nur Bedingt bearbeitet wird. Und dann kann der Kompiler ggf. nicht erkennen ob sicher irgendwo initialisiert wird oder ob alle Schreibzugriffe in einer Konstellation übersprungen werden.
    mfG Aventinus

  6. #46
    Registriert seit
    14.08.2004
    Beiträge
    824
    Danke
    45
    Erhielt 73 Danke für 66 Beiträge

    Standard

    Zitat Zitat von bugatti66 Beitrag anzeigen
    Der Omron Kontaktplan ist einer der Besten, den ich je gesehen habe.
    1) Arrays lassen sich nur mit Signed-Integer-Typen indexieren.
    2) Es gibt keine Bit-Manipulation mit Integertypen, sondern nur mit Word-typen
    3) Addition, Subtraktion etc. sind nur für integertypen definiert, aber nicht für Word-Typen
    4) Die Konvertierung kann nicht einfach auf Kontaktplanniveau erfolgen. Daher gibt es jede Menge Warnungen vom Compiler.
    5) Typkonvertierungen in ST werden immer von Warnungen des Compiler begleittet, so dass wirkliche Fehler wie ein doppeltes Schreiben auf eine Variable nicht auffallen.
    6) Das endet in ST damit, dass man wieder Willen und das bei bester Planung Unmengen von Konvertierungen durchführen muss, weil selbst so simple Funktionen wie SHL() nur einen Word-Typ zurückgeben.
    7) Es gibt eine FOR-Schleife, die aber ohne Index-Variable ist, daher kann man dann auch gleich eine State-Machine implementieren.

    Omron war nicht einmal in der Lage FBs für die CANbus-Initialisierung zu liefern, die in jeder Situation funktionieren. Stellt man nämlich eine feste Zykluszeit ein, funktionieren die nicht mehr, weil da gepfuscht wurde und nicht auf das Ende des FINS-Kommandos getestet wurde.

  7. #47
    Avatar von vollmi
    vollmi ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.620
    Danke
    777
    Erhielt 647 Danke für 493 Beiträge

    Standard

    Nächste krasses Konstruktion.
    Ich hab echt manchmal mühe da durchzublicken was eigentlich das Ziel sein sollte.

    Code:
          U     "SPS4 - IO DB160"._DBX_10_4 // Not-Aus
          SPB   OE0
          U     #Oelanlage_Freigabe         // Pumpe Freigabe
          SPB   OE1
    OE0:  R     #Schalten_Oelanlage_Pu1
          R     #Schalten_Oelanlage_Pu2
          R     #Oelanlage_Anlauf
          R     #Umschaltung
          R     T      1
          R     "SPS -> BR"._DBX_202_6
          SPA   OE12
    
    
    // Öldruck abwarten, notfalls umschalten    
    OE1:  UN    #Schalten_Oelanlage_Pu1     // Eine Pumpe einschalten
          UN    #Schalten_Oelanlage_Pu2
          SPB   OE3
          U     #Schalten_Oelanlage_Pu1     // Beide Pumpen in Betrieb
          U     #Schalten_Oelanlage_Pu2
          SPB   OE12
          U     T      1                    // Anlauf fertig
          U     #Oelanlage_Anlauf
          SPB   OE11
          UN    #Oelanlage_Anlauf           // keine 30bar nach Anlauf
          UN    #Umschaltung
          UN    #RM_Oeldruck_Pumpen_30bar
          SPB   OE2
          U     T      1
          U     #Umschaltung
          SPBN  OE12
          U     #RM_Oeldruck_Pumpen_30bar   // 30bar nach Umschaltung
          SPB   OE12
          U     #Schalten_Oelanlage_Pu1     // keine 30bar nach Umschaltung
          SPB   OE7
          U     #Schalten_Oelanlage_Pu2
          SPB   OE5
    
    
    OE2:  U     #Schalten_Oelanlage_Pu1     // Umschaltung keine 30bar nach Anlauf
          SPB   OE6
          U     #Schalten_Oelanlage_Pu2
          SPB   OE4
          SPA   OE12
    
    
    // Ein-/Umschaltung
    OE3:  S     #Oelanlage_Anlauf
          L     "SPS -> BR"._DBW_100_0      // Betriebsstunden Pumpe1
          L     "SPS -> BR"._DBW_102_0      // Betriebsstunden Pumpe2
          <I    
          SPB   OE5
          SPA   OE7
    
    
    OE4:  R     #Schalten_Oelanlage_Pu2     // Umschalten
          S     #Umschaltung
          R     T      1
          S     "SPS -> BR"._DBX_202_6
    OE5:  S     #Schalten_Oelanlage_Pu1
          SPA   OE12
    
    
    OE6:  R     #Schalten_Oelanlage_Pu1     // Umschalten
          S     #Umschaltung
          R     T      1
          S     "SPS -> BR"._DBX_202_6
    OE7:  S     #Schalten_Oelanlage_Pu2
          SPA   OE12
    
    
    OE11: R     #Oelanlage_Anlauf           // Anlauf fertig
          R     T      1
    OE12: NOP   0
    
          U(    
          O     #Oelanlage_Anlauf
          O     #Umschaltung
          )     
          FR    T      1
          L     S5T#5S
          SS    T      1
          U     T      1
          R     #Start_Timer
    Ist übrigens ein FB. Wieso da ein S5 Timer sein musste ist mir schleierhaft.
    Ab den vielen Sprüngen wird mir direkt schwummrig.

    mfG René

  8. #48
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.405 Danke für 2.002 Beiträge

    Standard

    @René:
    Du hast da aber auch ein wirklich Könner am Start gehabt ...
    Ich finde das auch schrecklich, was sich so manch einer als Code einfallen läßt um vielleicht ein paar Bytes an Code zu sparen aber dafür einen hohen Preis mit der Durchschaubarkeit bezahlt ...

    Gruß
    Larry

  9. #49
    Registriert seit
    20.06.2007
    Ort
    NRW
    Beiträge
    106
    Danke
    2
    Erhielt 14 Danke für 14 Beiträge

    Standard

    Zitat Zitat von drfunfrock Beitrag anzeigen
    Omron war nicht einmal in der Lage FBs für die CANbus-Initialisierung zu liefern, die in jeder Situation funktionieren. Stellt man nämlich eine feste Zykluszeit ein, funktionieren die nicht mehr, weil da gepfuscht wurde und nicht auf das Ende des FINS-Kommandos getestet wurde.
    Also ich glaube Dir, dass Du irgendwie ziemlich sauer bist, wenn Du nach Monaten damit nochmal hervorkommst.
    Was sollen das denn für komische FBs sein.
    Kann man die sich irgendwo runterladen ?

    Arbeitest Du jetzt immer noch an dem Projekt?

  10. #50
    Avatar von vollmi
    vollmi ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.620
    Danke
    777
    Erhielt 647 Danke für 493 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von bugatti66 Beitrag anzeigen
    Also ich glaube Dir, dass Du irgendwie ziemlich sauer bist, wenn Du nach Monaten damit nochmal hervorkommst.
    Was sollen das denn für komische FBs sein.
    Kann man die sich irgendwo runterladen ?

    Arbeitest Du jetzt immer noch an dem Projekt?
    Ich arbeite leider immernoch ab und zu in dem Projekt. Da sollen halt noch Erweiterungen rein (solche die in meinen anderen Projekten einwandfrei laufen und der Kunde gefallen dran gefunden hat)

    Direkt veröffentlichen will ich das natürlich trotzdem nicht erstens soll nicht daraus ersichtlich werden WER das programmiert hat und auch nicht in welcher Anlage.

    Nochmal n kleines Schmankerl, vonwegen InstanzDBs


    Ich such Verwendungsstelle #AK_Freigabe finde nur diese eine hier am Anfang des FBs. Denke mir "Kann doch nicht sein"
    Suche dann in den Referenzen diesen Instanzdb. Ist doch herrlich:


    Solche S/R Orgien sind mir an sich schon ein Gräuel ich muss mich schon überwinden am Schluss des OB1 noch einen Baustein aufzurufen wo für den Notaus noch eine sichere Stellung gesetzt wird.
    Aber hier wird echt der Vogel abgeschossen. Muss ich erwähnen dass etwa die hälfte dieser S/Rs eh zu 100% in der hälfte des Bausteins unbedingt in einen Zustand versetzt werden?

    mfG René

Ähnliche Themen

  1. Strukturen Vergleichen in denen Arrays vorkommen
    Von SteffenD im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 31.07.2013, 09:18
  2. WCf 2008 SP2 HF3 hängt sich manchmal auf
    Von Günni1977 im Forum HMI
    Antworten: 3
    Letzter Beitrag: 26.11.2010, 09:14
  3. CX hängt sich manchmal auf bei "Route hinzufügen"
    Von karlheinzsps im Forum CODESYS und IEC61131
    Antworten: 17
    Letzter Beitrag: 03.03.2010, 13:15
  4. blutender Anfänger fragt .....
    Von Martha72 im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 16.07.2009, 11:46
  5. Warum man sich OPC sparen sollte...
    Von seeba im Forum Stammtisch
    Antworten: 8
    Letzter Beitrag: 19.06.2006, 10:58

Lesezeichen

Berechtigungen

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