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

Page 1 of 2 12 LastLast
Results 1 to 10 of 11

Thread: Problem beim Umstieg auf TIA und S7-1500

  1. #1
    Join Date
    21.09.2004
    Posts
    106
    Danke
    54
    Erhielt 3 Danke für 3 Beiträge

    Default


    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
    Reply With Quote Reply With Quote Problem beim Umstieg auf TIA und S7-1500  

  2. #2
    CNC840D is offline Erfahrener Benutzer
    Themenstarter
    Join Date
    21.09.2004
    Posts
    106
    Danke
    54
    Erhielt 3 Danke für 3 Beiträge

    Default

    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
    Join Date
    17.07.2009
    Location
    Am Rande der Ostalb
    Posts
    6,219
    Danke
    1,276
    Erhielt 1,448 Danke für 1,124 Beiträge

    Default

    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
    Join Date
    15.05.2015
    Posts
    284
    Danke
    8
    Erhielt 56 Danke für 55 Beiträge

    Default

    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
    Join Date
    17.07.2009
    Location
    Am Rande der Ostalb
    Posts
    6,219
    Danke
    1,276
    Erhielt 1,448 Danke für 1,124 Beiträge

    Default

    Quote Originally Posted by TP-Inc View Post
    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
    Join Date
    25.06.2017
    Location
    Oerlinghausen
    Posts
    1,387
    Danke
    125
    Erhielt 239 Danke für 192 Beiträge

    Default

    Quote Originally Posted by CNC840D View Post
    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
    Join Date
    17.03.2010
    Location
    Bonn
    Posts
    356
    Danke
    4
    Erhielt 83 Danke für 76 Beiträge

    Default

    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
    Join Date
    22.06.2009
    Location
    Sassnitz
    Posts
    13,442
    Danke
    1,086
    Erhielt 3,960 Danke für 3,199 Beiträge

    Default

    Quote Originally Posted by Heinileini View Post
    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 is offline Erfahrener Benutzer
    Themenstarter
    Join Date
    21.09.2004
    Posts
    106
    Danke
    54
    Erhielt 3 Danke für 3 Beiträge

    Default

    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
    Join Date
    17.03.2010
    Location
    Bonn
    Posts
    356
    Danke
    4
    Erhielt 83 Danke für 76 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Quote Originally Posted by CNC840D View Post

    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.

Similar Threads

  1. TIA Umstieg von 400er auf 1500
    By Deep Blue in forum Simatic
    Replies: 14
    Last Post: 02.08.2018, 18:46
  2. TIA Umstieg auf S7-1500
    By Oliver in forum Simatic
    Replies: 8
    Last Post: 11.11.2015, 21:26
  3. Sonstiges Umstieg S7-400 auf S7-1500
    By Füller in forum Simatic
    Replies: 4
    Last Post: 08.10.2014, 11:07
  4. Umstieg auf das TIA Portal und die S7-1500
    By Grollmus in forum Werbung und Produktneuheiten
    Replies: 0
    Last Post: 08.08.2013, 08:39
  5. Step 7 Was ist beim Umstieg von Step 7 V5.4 auf V5.5 zu beachten
    By Georgius in forum Simatic
    Replies: 7
    Last Post: 20.07.2013, 10:00

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •