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

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

Thema: Problem beim Umstieg auf TIA und S7-1500

  1. #1
    Registriert seit
    21.09.2004
    Beiträge
    104
    Danke
    54
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich muss nun leider auch nach 20 Jahren von meinem guten alten Classic Abschied nehmen.
    Hab gerade mal versucht ein paar Hilfsbausteine umzusetzen und hänge gerade bei einer kleinen Funktion die wir so immer wieder mal nutzen.

    Beschreibung der Funktion:
    Bei einem von aussen anparametrierbaren DB wird die gesamte Länge ausgelesen und dann anschliessend der gesamte DB ( egal wie er innendrin aussieht) auf einen Wert initialisiert.

    Das auslesen der DB- Länge scheint zu funktionieren, allerdings meckert der Compiler ständig in meiner For Schleife.
    Hat jemand ne Ahnung woran das liegt.

    // Auslesen der absoluten Länge des DB's
    #RetvalAttrDB := ATTR_DB(REQ := TRUE, DB_NUMBER := #MeldeDB, DB_LENGTH => #DB_length, ATTRIB => #Attrib);
    // Alle bits wortweise zurücksetzen in einer Schleife
    FOR #i := 0 TO UDINT_TO_INT(#DB_length) - 2 DO
    #MeldeDB.DW[#i]:=0;-----> hier bei DW meckert immer der Compiler
    END_FOR;

    Danke schonmal für Eure Hilfe
    Zitieren Zitieren Problem beim Umstieg auf TIA und S7-1500  

  2. #2
    CNC840D ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    21.09.2004
    Beiträge
    104
    Danke
    54
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Ha glaub ich die Lösung selber gefunden.
    Aber evtl. gints ja noch was besseres?

    Hier meine Lösung
    / Alle bits wortweise zurücksetzen in einer Schleife
    FOR #i := 0 TO UDINT_TO_INT(#DB_length) - 2 DO
    POKE(area:=16#84,
    dbNumber:=#MeldeDB,
    byteOffset:=#i,
    value:=#Wert,
    ENO => ENO);
    END_FOR;

  3. #3
    Registriert seit
    17.07.2009
    Ort
    Am Rande der Ostalb
    Beiträge
    6.114
    Danke
    1.246
    Erhielt 1.403 Danke für 1.098 Beiträge

    Standard

    Wenn ich Poke-Befehle sehe, dann stellen sich mir die wenigen noch verbliebenen Haare

    Nutz doch den Umstieg auf TIA um auf symbolische Programmierung zu wechseln.
    Man muß zwar Anfangs viel Hirnschmalz und Zeit investieren, aber das zahlt sich sehr sehr schnell aus.

    Dein aktuelles Problem kannst du mit FILL wahrscheinlich einfacher lösen.

    Gruß
    Blockmove

  4. Folgende 2 Benutzer sagen Danke zu Blockmove für den nützlichen Beitrag:

    Credofire (11.02.2019),rostiger Nagel (10.02.2019)

  5. #4
    Registriert seit
    15.05.2015
    Beiträge
    276
    Danke
    8
    Erhielt 56 Danke für 55 Beiträge

    Standard

    FILL kann bei TIA zu Problemen führen wenn Strings damit gelöscht werden. Die Längeninfos des Strings werden such initialisiert und das führt zu Problemen (zu noch mehr als bei Classic) bei der Weiterverarbeitung der Strings. Ausserdem funktioniert FILL nur im nicht optimierten Bereich. Bei uns werden DBs die zur Laufzeit initialisiert werden müssen nur noch aus UDTs aufgebaut und mir Leerdatensätzen überschrieben. Das gwht in FUP mit Move, in SCL als Zuweisung und funktioniert auch im optimierten Bereich. Ausnahme ist wie im Beispiel der Melde DB, der immer nicht optimiert ist und nur Bits enthält. Hier verwenden wir noch FILL.

  6. #5
    Registriert seit
    17.07.2009
    Ort
    Am Rande der Ostalb
    Beiträge
    6.114
    Danke
    1.246
    Erhielt 1.403 Danke für 1.098 Beiträge

    Standard

    Zitat Zitat von TP-Inc Beitrag anzeigen
    FILL kann bei TIA zu Problemen führen wenn Strings damit gelöscht werden. Die Längeninfos des Strings werden such initialisiert und das führt zu Problemen (zu noch mehr als bei Classic) bei der Weiterverarbeitung der Strings. Ausserdem funktioniert FILL nur im nicht optimierten Bereich. Bei uns werden DBs die zur Laufzeit initialisiert werden müssen nur noch aus UDTs aufgebaut und mir Leerdatensätzen überschrieben. Das gwht in FUP mit Move, in SCL als Zuweisung und funktioniert auch im optimierten Bereich. Ausnahme ist wie im Beispiel der Melde DB, der immer nicht optimiert ist und nur Bits enthält. Hier verwenden wir noch FILL.
    FILL ist bei Strings nie eine gute Lösung ... Weder bei Classic noch bei TIA.
    POKE funktioniert auch nur bei nicht optimierten DBs.

    Ansonsten stimme ich dir zu 100% zu.
    Sauber definerte Datentypen machen einem das Leben leichter.
    Man kommt aber auch viel schneller in die Reinitialiserungshölle damit
    Segen und Fluch zugleich eben

  7. #6
    Registriert seit
    25.06.2017
    Ort
    Oerlinghausen
    Beiträge
    1.217
    Danke
    109
    Erhielt 218 Danke für 174 Beiträge

    Standard

    Zitat Zitat von CNC840D Beitrag anzeigen
    Das auslesen der DB- Länge scheint zu funktionieren, allerdings meckert der Compiler ständig in meiner For Schleife.
    . . .
    FOR #i := 0 TO UDINT_TO_INT(#DB_length) - 2 DO
    #MeldeDB.DW[#i]:=0;-----> hier bei DW meckert immer der Compiler
    END_FOR;
    Darf man erfahren, wie die Meckereien des Compilers lauten?
    Warnt er vielleicht nur, weil sich die ZielBereiche überschneiden?
    Funktioniert es denn
    - entweder mit #MeldeDB.DB[#i]:=0
    - oder, wenn #i mit Schrittweite 2 erhöht wird?

  8. #7
    Registriert seit
    17.03.2010
    Ort
    Bonn
    Beiträge
    344
    Danke
    4
    Erhielt 78 Danke für 72 Beiträge

    Standard

    ich vermute mal bei dem Nick CNC840D gehts hier um Sinumerik.
    Warum muss der Melde DB ich vermute mal DB2 komplett mit null überschrieben werden ?
    die letzte Begründung die ich hörte war "Das haben wir schon immer so gemacht"


    @TP-Inc warum führt Fill auf eine String in TIA zu mehr Problemen als in Classic ?

  9. #8
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    13.074
    Danke
    1.071
    Erhielt 3.866 Danke für 3.119 Beiträge

    Standard

    Zitat Zitat von Heinileini Beitrag anzeigen
    Darf man erfahren, wie die Meckereien des Compilers lauten?
    Der Compiler meckert, weil es in TIA-SCL die Schreibweisen MyDB.DB[..], MyDB.DW[..], MyDB.DD[..] für indizierten Zugriff auf absolute Adressen/Speicherbereiche der CPU nicht mehr gibt und man dafür nun die neuen Anweisungen PEEK und POKE verwenden muß. (damit die Schreibweise nicht mit Zugriffen auf Arrays verwechselt wird?)

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  10. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    Heinileini (11.02.2019)

  11. #9
    CNC840D ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    21.09.2004
    Beiträge
    104
    Danke
    54
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Hallo Peter,

    Sinumerik war mal...muss hier gerade innerhalb ein-/2 Woche unser altes Standard-Projekt von Classic auf TIA umziehen.
    Wir versuchen das nun schon seit 2 jahren aber irgendwie war ich ständig on Tour und mein Chef hatte immer andere Ideen
    Ich weis das PEEk POKE usw. nicht unbedingt der Hit sind aber auf die schnelle fiel mir halt nix besseres ein.
    Zudem muss ich erstmal ein bisschen Erfahrung mit TIA sammeln. Ich programmier zwar schon ein paar Jährchen, aber TIA hab ich bis jetzt vermieden.

    Ich gelobe auf jedenfall Besserung..brauch aber halt noch ein wenig Zeit

  12. #10
    Registriert seit
    17.03.2010
    Ort
    Bonn
    Beiträge
    344
    Danke
    4
    Erhielt 78 Danke für 72 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von CNC840D Beitrag anzeigen

    Sinumerik war mal...Ich gelobe auf jedenfall Besserung..brauch aber halt noch ein wenig Zeit
    da bin ich ja erst mal beruhigt kein 840Dsl -> XXXX Migrations- Projekt das mir von der Hotline durchgereicht wird.

Ähnliche Themen

  1. TIA Umstieg von 400er auf 1500
    Von Deep Blue im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 02.08.2018, 19:46
  2. TIA Umstieg auf S7-1500
    Von Oliver im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 11.11.2015, 22:26
  3. Sonstiges Umstieg S7-400 auf S7-1500
    Von Füller im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 08.10.2014, 12:07
  4. Umstieg auf das TIA Portal und die S7-1500
    Von Grollmus im Forum Werbung und Produktneuheiten
    Antworten: 0
    Letzter Beitrag: 08.08.2013, 09:39
  5. Step 7 Was ist beim Umstieg von Step 7 V5.4 auf V5.5 zu beachten
    Von Georgius im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 20.07.2013, 11:00

Lesezeichen

Berechtigungen

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