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

Seite 2 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 11 bis 20 von 33

Thema: Datenbausteinbereich umkopieren mit blokmove

  1. #11
    Registriert seit
    06.10.2003
    Beiträge
    3.410
    Danke
    449
    Erhielt 504 Danke für 407 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Waldi1954 Beitrag anzeigen
    .. Deine Frage mit dem Offset habe ich nicht ganz verstanden. ..
    Dann hast du es wahrscheinlich auch nicht berücksichtigt. Wenn du auf diese Art und Weise auf statische Lokaldaten zugreifst, bzw. auch auf Bausteinparameter eines FBs, dann musst du die Startadresse der FB-Instanz zu den Adressen addieren, dann klappt das auch mit Multiinstanzen. Diese Startadresse steht im AR2.
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

  2. #12
    Registriert seit
    26.09.2010
    Beiträge
    64
    Danke
    9
    Erhielt 12 Danke für 7 Beiträge

    Standard

    Hallo zusammen


    Nochmals kurz zur Erinnerung,
    dieses Programm läuft seit ca. einem Jahr auf einer Et 200 S und holt Produktion und Personaldaten von einer SK Interbase Datenbank ab.
    Kurz zum Adressregister zwei.
    Ich habe des AR2 kurz vor BlokMove ausgelesen, mit dem Wert H 8400 0000 also zeigt er auf einen globalen DB mit der Pointer Adresse null.
    Der Instanz DB wird nicht als MultiDB genutzt. Er ist nur Multiinstanzfähig.



    Aber egal was ich für eine Adressen eingebe, dies kann nicht zum Absturz der Steuerung führen sondern müsste mit einer Fehlermeldung
    beendet werden.(Ret_Val)

    Ich mache nach dem Aufruf von BlokMove einem Programmaussprung um sicherzustellen, dass kein nachfolgender Programmcode den Absturz verursacht.
    Wenn ich die Bereiche symbolisch übergebe, wird die Anweisung ausgeführt.
    Bei der 300 kann immer nur ein Instanz DB geöffnet sein. Bei der 1500 ?


    Ich vermute, dass beim Aufruf mit einen ANY Pointer, ein Systemfehler bei BlokMove verursacht wird. Entweder in der CPU oder im Compiler. Werde mich am Montag mit der Hotline in Verbindung setzen, vielleicht weiß ich danach mehr.


    Ich bedanke mich nochmals für euren Einsatz. Ich werde auf jeden Fall den Beitrag mit der Fehlerursache ergänzen.


    Mit Grüße Waldi



  3. #13
    Registriert seit
    26.09.2010
    Beiträge
    64
    Danke
    9
    Erhielt 12 Danke für 7 Beiträge

    Standard

    Hallo zusammen

    Habe das Problem gelöst.
    Ursache ist die Deklaration des ANY-Pointers.

    Bei 300 Datentyp ANY
    Bei 1500 Datentyp CONN_ANY
    wird dann aber auch falsch übersetzt von der Migration. Habe auch nirgends ein Hinweis darauf gefunden dass das so zu ändern ist.

    Sorry War zu schnell geht leider auch nicht.

    Viele Grüße Waldi
    Geändert von Waldi1954 (10.01.2016 um 11:26 Uhr)

  4. #14
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.184
    Danke
    923
    Erhielt 3.290 Danke für 2.659 Beiträge

    Standard

    Zitat Zitat von Waldi1954 Beitrag anzeigen
    Der Instanz DB wird nicht als MultiDB genutzt. Er ist nur Multiinstanzfähig.
    Aufgrund Deines Nichtwissens der Rolle des AR2 bei der Multiinstanz Adressberechnung ist Dein FB vermutlich NICHT multiinstanzfähig. Er ist wohl lediglich als multiinstanzfähig markiert, aber tatsächlich nicht multiinstanzfähig programmiert.


    Zitat Zitat von Waldi1954 Beitrag anzeigen
    Aber egal was ich für eine Adressen eingebe, dies kann nicht zum Absturz der Steuerung führen sondern müsste mit einer Fehlermeldung
    beendet werden.(Ret_Val)
    Tut es doch! Wenn Du mal einen Blick auf Deine Bilder wirfst, da sieht man daß der MOVE_BLK_VARIANT einen Fehler meldet.


    Zitat Zitat von Waldi1954 Beitrag anzeigen
    der Zielbereich ist 2047 Byte lang.
    [...]
    Ziel P#DB200.DBX457.0 Byte 227
    Deine Angaben sind widersprüchlich bzw. ungenau. In den Bildern arbeitest Du mit einer Länge von 243 Byte.

    Auf den Bildern rufst Du nicht BLKMOV auf sondern MOVE_BLK_VARIANT. Warum?
    Dein Aufruf des MOVE_BLK_VARIANT liefert einen Fehlerstatus -32430 = W#16#8152
    Status W#16#8152 bedeutet: Der Operand am Parameter SRC ist nicht typisiert.

    Ich kenne die S7-1500 nicht, könnte mir aber aufgrund anderer bekanntgewordener Firmwarefehler und Compilerfehler vorstellen, daß trotz Fehlermeldung ein Zugriff auf die fehlerhafte Adresse ausgeführt wird.

    Doch bist Du ganz sicher, daß die fehlerauslösende Programmstelle das BLKMOV bzw. MOVE_BLK_VARIANT ist? Kannst Du die Fehlerstelle eindeutig identifizieren? Verschwindet der Bereichsfehler, wenn Du den Aufruf des MOVE_BLK_VARIANT deaktivierst/überspringst?


    Ich kann mir auch noch vorstellen, daß das Problem vielleicht von einer fehlerhaften Verwendung von TEMP-Speicher kommt. Meine Frage in #9 hast Du nicht beantwortet.
    Zitat Zitat von PN/DP Beitrag anzeigen
    Wie wird die Adresse in der Variablen #"ADR PA-SelectString 2" berechnet? Kann es sein, daß da auch mal 0 drinsteht wenn BLKMOV aufgerufen wird?
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  5. #15
    Registriert seit
    26.09.2010
    Beiträge
    64
    Danke
    9
    Erhielt 12 Danke für 7 Beiträge

    Standard

    Hallo Harald


    1) es gibt in der 1500 keinen anderen Baustein als in dieser Variante, welcher den SFC20 entspricht.
    2) mit der Speicherlänge von 2048 wollte ich nur ausdrücken dass der Zielbereich lang genug ist um nicht ins leere zu springen.
    3) Der Instand DB wird nicht als Multiinstanz benutzt . Multiinstanz wird bei der 1500 nur als optimierte Zugriff eingebunden, also symbolisch.


    Dieser Instanz DB ist nicht mit optimierten zugriff erzeugt, sodass er feste Adressen hat.
    Die Adressen auf die ich springen will sind im DB vorhanden. Bei einem Multi DB spring ich auch nicht ins Leere, sondern nur auf einer falsche Adresse, da er länger ist.

    Ich benutze keine Multiinstanz DBs.
    Der MoveBlok_Variant auf den du dich beziehst ist ein anderer Typ den es in der 1500 noch gibt.

    Der um den es geht, ist der als Text kommentierte BlokMove. Sorry hätte ich besser kommentieren müssen.


    Bei dem Versuch diesen Baustein einen ANY Pointer zuzuweisen, stürzt die Steuerung schon beim Aufruf des Bausteins sofort ab.
    Ich habe dem ANY Pointer auch einen globalen DB mit fester Adresse zugewiesen. Übergabe als P#DBxxx geht, als Pointer nicht.

    Nicht der Inhalt des Pointer ist die Ursache, sondern die Verwendung als Parameter-Übergabe.

    Temp nein. Erst zuweisen, dann aufrufen. Typ ist ANY.
    Ich benutze ständig in meinen Programmen indirekte Programmierung, kenne mich also schon damit aus.
    Übersehen kann jeder mal was.


    Gruß Waldi


    Geändert von Waldi1954 (10.01.2016 um 18:20 Uhr)

  6. #16
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.697 Danke für 1.949 Beiträge

    Standard

    Ich habe dir doch hier ein Beispiel gegeben. Damit mache ich das in einer 1500-er.
    Klar für Multiinstanzen muß man da noch AR2 beachten, siehe PN/DP, aber ich würde das erstmal ohne Multiinstanz testen und dann, wenn es funktioniert weitergehen.
    Das kannst du noch für dich abwandeln.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  7. #17
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.184
    Danke
    923
    Erhielt 3.290 Danke für 2.659 Beiträge

    Standard

    Zitat Zitat von Waldi1954 Beitrag anzeigen
    1) es gibt in der 1500 keinen anderen Baustein als in dieser Variante, welcher den SFC20 entspricht.
    Laut SIMATIC S7-xxxx Vergleichsliste für Programmiersprachen und laut Ralles Programmbeispiel gibt es BLKMOV auch für die S7-1500. BLKMOV soll nur nicht mehr für Neuentwicklungen benutzt werden. Für old-style zusammengebastelte ANY-Pointer muß BLKMOV aber verwendet werden.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  8. #18
    Registriert seit
    26.09.2010
    Beiträge
    64
    Danke
    9
    Erhielt 12 Danke für 7 Beiträge

    Standard

    Hallo
    Antwort von der Hotline
    Bezogen auf ANY
    Indirekte Adressierung ist nur noch Symbolisch möglich. Zwar ging es noch über Umwegen, aber beim nächsten Update kann das zu Problemen führen.
    Hinweis von der Hotline!
    Warum ist in STEP 7 (TIA Portal) V12 die Mischung vonRegisterpassing und expliziter Parameterübergabe bei der S7-1500 nicht möglich?

    https://support.industry.siemens.com/cs/de/de/view/67655405

    Gruß Waldi

  9. #19
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.732
    Danke
    314
    Erhielt 1.520 Danke für 1.282 Beiträge

    Standard

    Zitat Zitat von Waldi1954 Beitrag anzeigen
    Hallo
    Antwort von der Hotline
    Bezogen auf ANY
    Indirekte Adressierung ist nur noch Symbolisch möglich. Zwar ging es noch über Umwegen, aber beim nächsten Update kann das zu Problemen führen.
    Hinweis von der Hotline!
    Warum ist in STEP 7 (TIA Portal) V12 die Mischung vonRegisterpassing und expliziter Parameterübergabe bei der S7-1500 nicht möglich?

    https://support.industry.siemens.com/cs/de/de/view/67655405

    Gruß Waldi
    Jetzt wenn du dem geneigten Mitleser noch mitteilst, was deine Antwort sowie dein Link mit deinem Problem zu tun haben sollen ...?

    Wenn das was du da machst, sprich einen BLKMOV (nicht MOVE_BLK_VARIANT wie von Harald erkannt) zukünftig zu Problemen führt,
    dann war lapidar gesprochen Siemens bei einem Firmware-Update mal wieder zu dämlich, was leider eine immer häufiger zutreffende Variante zu sein scheint.

    Mfg
    Manuel
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

  10. #20
    Registriert seit
    26.09.2010
    Beiträge
    64
    Danke
    9
    Erhielt 12 Danke für 7 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Manuel

    habe das Beispiel von Ralle ausprobiert. Ist allerdings etwas schwer zu verstehen. Nicht aus mangelnden Kenntnissen,
    sondern an fehlenden Informationen. Aus einer Symbolik alleine lässt sich nicht alles erkennen.
    Es ist ja nur ein Teilauszug, den man nicht zurück verfolgen kann. Aber das Ergebnis war das Selbe.
    Der Link verweist auf Handbücher. Unter anderem geht es auch um das LAR1 + AR2 mit den Hinweis, dass die korrekte Ausführung der Funktion nicht mehr unterstützt wird.
    Den genaueren Textinhalt bitte selber nachlesen. Die 1500 ist von Siemens auf Symbolik ausgerichtet. BlokMove kann in SCL problemlos verwendet werden.
    Außerdem wurde es von der Hotline an einen Beispiel-Programm nachvollzogen, mit der Aussage, dass es nicht mehr unterstützt wird.

    Ich gebe nur die Info von der Hotline weiter.
    Du spricht immer wieder von MoveBlok. Ich habe doch in diesen Beitrag darauf verwiesen, dass es sich um den geklammerten BlokMove handelt.
    Öffne doch bitte TIA und rufe den Baustein mit der Anweisung call SFC20 auf und es wird genau dieser erscheinen.
    MoveBlok kann nur Array mit gleichen Tatentypen umkopieren.

    Noch ein Hinweis in eigener Sache. Die Zitathinweise mit dem Gesamtauszug finde ich nicht sehr hilfreich.
    Stattdessen wäre es besser, die Einwende mit Fragen des Sachinhaltes zu stellen bzw. zu beantworten. Diese müssen nicht immer 100% korrekt sein.
    Auch wage Vermutungen oder Hinweise können manchmal weiterhelfen.
    Mit Grüßen Waldi
    Geändert von Waldi1954 (12.01.2016 um 23:49 Uhr)

Ähnliche Themen

  1. Step 7 DB umkopieren
    Von spirit im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 04.11.2014, 11:10
  2. TP070 ohne Projekt umkopieren
    Von kassla im Forum HMI
    Antworten: 0
    Letzter Beitrag: 14.01.2010, 21:00
  3. Antworten: 4
    Letzter Beitrag: 05.02.2009, 13:02
  4. SCL: DB-Bereiche umkopieren
    Von dinner4one im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 27.06.2008, 21:17
  5. String umkopieren
    Von Ralle im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 13.09.2007, 20:08

Stichworte

Lesezeichen

Berechtigungen

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