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

Seite 1 von 4 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 35

Thema: Behinderungen symbolischer Programmierung - Wie umgehen ?

  1. #1
    Registriert seit
    23.04.2008
    Beiträge
    75
    Danke
    16
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich schreibe meine S7-Programme als AWL-Quelltext und habe mich entschlossen aus Gründen der Überschaubarkeit, Wiederverwendbarkeit und Verläßlichkeit dies rein symbolisch zu tun. Also keine Verwendung von absoluten Operanden im Quelltext. (Ausnahme sind Ein- und Ausgänge in dafür speziellen Funktionen).

    Nun ist aber leider der AWL-Compiler von Siemens so gebaut, daß er die rein symbolische Programmierung mehr behindert als fördert. Während sich die siemenschliche Lust an Fehlermeldungen und Pedanterie voll austobt, fehlt es an elementaren Zugriffsmöglichkeiten auf das, was hinter den Symbolen steht.Vieles, was auf absoluter Ebene leicht und einfach zu machen ist, erfordert auf symbolischer Ebene lange Umwege und Verrenkungen.

    Um rein symbolisch auf Bits von einem WORD in einem Datenbaustein zuzugreifen, brauch ich zb eine Funktion die mir die Nummer des DB herausgibt, für eine Anypointerbastelei um mit Blockmove dann ein WORD in eine UDT zu laden. Oder ich brauche eine Funktion, die Bit für Bit vom WORD ins UDT schaufelt. Und eine weitere für den Rückweg. Das geht natürlich ganz schön auf die Performance und Zykluszeit, wenn es häufig geschehen muß. Und das alles nur, damit der Compiler nicht meckert.

    Wie geht ihr mit solchen Problemen um? Welche Tricks gehen am wenigsten auf Kosten der Zykluszeit. Welche Umwege sind die kürzesten?
    Zitieren Zitieren Behinderungen symbolischer Programmierung - Wie umgehen ?  

  2. #2
    Registriert seit
    01.10.2007
    Ort
    Waiblingen
    Beiträge
    3.317
    Danke
    767
    Erhielt 536 Danke für 419 Beiträge

    Standard

    hab ich bei Siemens auch mal angeregt, einen symbolischen Bitindexzugriff auf die Bits eines Wortes ...

    ansonsten kenne ich aus meiner Praxix nur einen konkreten Anwendungsfall: Schieberegister. Da schiebt man gerne wortweise und braucht aber die Bits ... - hab ich umgestellt, indem ich die Bitschieberei tatsächlich als Bitschieberei code. allerdings bin ich noch nicht soweit gegangen, so ein Schieberegister als UDT zu definieren, um dann auch per Indexzeiger variabel auf zur Laufzeit bestimmbare Bits zugreifen zu können ...

  3. #3
    Registriert seit
    22.11.2005
    Ort
    kl.Odenwald
    Beiträge
    716
    Danke
    111
    Erhielt 85 Danke für 71 Beiträge

    Standard

    Symbolische Programmierung ist so ne Sache mit S7, eine falsche Einstellung eines Kollegen oder Instandhalters im Bausteinordner kann dir etliches zerschiessen. Ich verwende Quellen eigentlich ausschließlich für SCL (geht ja auch nicht anders). Den Wechsel zwischen Bit und WORD/DWORD Zugriff mache ich mit einem entsprechenden UDT, der mit dem Befehl AT auf den entsprechenden Bereich gelegt wird.
    Im Kop/Fup Bereich habe ich noch Konvertierungsfunktionen geschrieben
    WORD_TO_BITS und umgekehrt. Hin und wieder kommen sie zum Einsatz.
    Mit Zykluszeiten hatte ich dadurch noch keine Probleme.
    "Das Leben ist viel zu kurz, um schlecht zu essen !"
    (Johann Lafer zur SWR3 Grillparty)

  4. #4
    Registriert seit
    23.04.2008
    Beiträge
    75
    Danke
    16
    Erhielt 0 Danke für 0 Beiträge

    Standard

    @Perfektionist

    Und ? Hat Siemens reagiert ? Wenn der Aufwand, den Siemens betreibt um Fehlermeldungen zu generieren, was alles nicht geht, in Lösungen gesteckt würde, sähe es viel besser aus.

    In C gibts zB ein sogenanntes "casting", eine extra angesagte Typumwandlung. Also man sagt dem Compiler:" sieh das jetzt doch einfach mal als WORD und mecker nicht rum, ich weiß schon was ich tu". Oder eine "union" , die schon bei der Deklaration erklärt, daß man auf diesen Speicherbereich mit mehreren Typen zugreifen kann.
    Geändert von Machtnix (23.04.2008 um 15:52 Uhr)
    Nieder mit der Schwerkraft. Freien Fall für freie Bürger !

  5. #5
    Registriert seit
    23.04.2008
    Beiträge
    75
    Danke
    16
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Versteh ich nicht, was an symbolischer Programmierung so gefährlich sein sollte. Sags mal genauer. An meine Programme geht normalerweise niemand anderes dran, aber es interessiert mich trotzdem.

    Mir gehts bei symbolischer Programmierung um Wiederverwertung, schnelles Zurechtfinden auch in älteren Programmen, einfaches Ändern und Erweitern. Deshalb bevorzuge ich auch Quellen, eine pro CPU, in denen alles wesentliche drinsteht. Die Symboltabelle brauch ich eigentlich nur für die Zuordnung der Nummern von Bausteinen und Timern und die sind ja im Prinzip beliebig austauschbar. Ein- und Ausgänge sind in speziellen Bausteinen(FCDigEin,FCDigAus,FCAnaEin...) im Quelltext zugeordnet.

    SCL hab ich mir nur mal kurz angeschaut und dabei nichts gefunden, wodurch mir der Umstieg lohnenswert erschiene.
    Nieder mit der Schwerkraft. Freien Fall für freie Bürger !
    Zitieren Zitieren @kiestumpe  

  6. #6
    Registriert seit
    01.10.2007
    Ort
    Waiblingen
    Beiträge
    3.317
    Danke
    767
    Erhielt 536 Danke für 419 Beiträge

    Standard

    Zitat Zitat von Machtnix Beitrag anzeigen
    ...
    Und ? Hat Siemens reagiert ?
    ...
    auf dieses kleine Wunder warte ich noch ...

    vielleicht kommt es mit S7 V6.0?

  7. #7
    Registriert seit
    16.12.2004
    Ort
    Schleswig-Holstein
    Beiträge
    400
    Danke
    21
    Erhielt 24 Danke für 21 Beiträge

    Standard

    @Machtnix, das Problem gibt es meistens wenn zwei oder mehr Leute am selben PC/PG arbeiten. Wenn einer die Priorität von "Absolut" auf "Symbolisch" oder umgekehrt umschaltet und der andere entscheidet sich entweder ein Symbol oder eine Absolut-Adresse zu umzubennen bzw. zu ändern bei falscher Priorität kann das gewaltig in die Hosen gehen. Das gesagt, ich habs gelegentlich selbst gemacht aus versehen und es tut echt Weh!

    Übrigens, ich programmiere auch bevorzugt symbolisch.

  8. #8
    Registriert seit
    11.10.2006
    Ort
    Verden (Aller)
    Beiträge
    532
    Danke
    31
    Erhielt 58 Danke für 49 Beiträge

    Standard

    Ich arbeite fast ausschließlich mit DBs. Da kann man jedem Objekt in der Anlage einen DB zuweisen, mit einem prägnanten Namen und schon hat man keinen M 23.4 sondern "DB_Beleuchtung".Tageslichtsensor, zum Bleistift. EAs bleiben latürnich so, werden aber möglichst sinnig benannt und schon kann man prima symbolisch tippeln.
    Ist bei Siemens aber von Vorteil, wenn man noch in etwa weiß, welchen EA- oder Merkerbereich man wo verwendet.
    "Ein lahmer Drecksplanet ist das, ich habe nicht das geringste Mitleid" (Prostetnik Vogon Jeltz)

  9. #9
    Registriert seit
    23.04.2008
    Beiträge
    75
    Danke
    16
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von derwestermann Beitrag anzeigen
    Ist bei Siemens aber von Vorteil, wenn man noch in etwa weiß, welchen EA- oder Merkerbereich man wo verwendet.
    EAs stehen bei mir unsymbolisch im Quelltext, aber geordnet alle in jeweils einem Baustein. Beispiel Ausschnitt:
    Code:
    // Baugruppenträger 0, Steckplatz 9
    
    U  E20.0 ;= "DPumpSt".P3.ESchrank; // Pumpstation Pumpe 3 Schrankbedienung
    U  E20.1 ;= "DPumpSt".P3.EWarte  ; // Pumpstation Pumpe 3 Warte /Automatik
    U  E20.2 ;= "DPumpSt".P3.ENTAus  ; // Pumpstation Pumpe 3 Nicht Taster AUS
    U  E20.3 ;= "DPumpSt".P3.ETsEin  ; // Pumpstation Pumpe 3 Taster EIN
    U  E20.4 ;= "DPumpSt".P3.ELmFu   ; // Pumpstation Pumpe 3 läuft über FU
    U  E20.5 ;= "DPumpSt".P3.ELmSdr  ; // Pumpstation Pumpe 3 läuft im Stern-Dreieck Betrieb (nicht FU)
    U  E20.6 ;= "DPumpSt".P3.EStoer  ; // Pumpstation Pumpe 3 Störung
    // E20.7 Reserve
    Merker werde ich ganz vermeiden und durch Global-DB ersetzen. Dann kann ich alles im Quelltext definieren und brauch die Symboltabelle nicht anrühren oder beachten.
    Nieder mit der Schwerkraft. Freien Fall für freie Bürger !

  10. #10
    Registriert seit
    25.09.2005
    Ort
    Neuss
    Beiträge
    278
    Danke
    11
    Erhielt 31 Danke für 29 Beiträge

    Daumen hoch


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich programmiere ausschließlich vollsymbolisch. Das meiste lässt sich problemlos damit machen (wenn man sich mal von der absoluten Denkweise getrennt hat). Was mir nicht gefällt ist das Handling S7->WinCC (Attribut S7_m_c). Warum kann man die sybolischen Variablennamen bei Multiinstanz-FBs nur IN und IN_OUT bzw. OUTS ins Leitsystem anlegen lassen - warum nicht mit STATS? Alle diese Daten werden beim FB im zugehörigen Instanz-DB gehalten. Das Handling -> WinCC funktioniert nicht mit ARRAY und UDT- / Strukturen (wäre für einige Anwendungen eine feine Sache). Die sybolische Bearbeitung auf der Step7-Seite ist eigentlich ganz brauchbar - nur bei der Übergabe an die OS (WinCC) hakt's halt noch.

Ähnliche Themen

  1. S7 224 Passwort umgehen?
    Von MacMan im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 16.12.2010, 14:17
  2. Zykluszeit umgehen
    Von brezeldieb im Forum Programmierstrategien
    Antworten: 7
    Letzter Beitrag: 07.12.2010, 23:58
  3. Symbolischer Name
    Von outbreak7 im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 26.02.2010, 11:24
  4. SCL : symbolischer Name
    Von Larry Laffer im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 14.06.2007, 06:56
  5. Symbolischer Abressierung vorrang geben???
    Von Jochen Kühner im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 27.01.2005, 12:57

Lesezeichen

Berechtigungen

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