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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 18 von 18

Thema: FC Move mittels Any-Pointer

  1. #11
    Registriert seit
    24.02.2011
    Beiträge
    5
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo, ich habe den FC32 nun so nachprogrammiert.

    Bei mir verhält er sich aber nicht ganz richtig, weil der Offset nicht richtig berechnet wird:

    ich habe 4 DBD und das 10 mal im SicherungsDB
    wenn ich den FC nochmal aufrufe, dann erhöht er zwer den Offset aber nur um ein DW und nicht um 4 DW, ich habe haltepunkte gesetzt, und die akkus kontrolliert.

    L P##Ziel
    LAR1

    L W [AR1,P#2.0]
    T #Datenlaenge
    L W [AR1,P#4.0]
    T #Ziel_DBNr

    AUF DB [#Ziel_DBNr]

    L DBW 2
    L DBW 0
    >=I
    SPBN weit
    L 0
    T DBW 2

    weit: L #Datenlaenge
    L DBW 2
    *I
    SLW 3
    T #Offset

    L DBW 2
    L 1
    +I
    T DBW 2

    L DBW 2


    intressanterweise ist bei L #Datenlaenge der Akkuwert auf 10 (das ist die maximale anzahl an sicherungen), dieser wird doch vor der Sprungmarke gelesen, um zu checken, ob die DB voll ist. es ist egal ob ich #datenlaenge oder dbw 2 einlese an der stelle. Gibt es für dieses Phänomen eine Erklärung?

    wenn ich das Ganze mal 4 mache (4 Bytes ist ein DW) dann gehts einwandfrei.

    und dann hab ich noch eine zweite Frage:

    Für was werden die Register (DB,AR1,AR2) in NW 1 und 6 gesichert bzw wiederhergestellt? hat das was mit dem Bausen auf sich, der den FC aufgerufen hat?

  2. #12
    Registriert seit
    08.04.2008
    Ort
    Köln
    Beiträge
    844
    Danke
    39
    Erhielt 244 Danke für 199 Beiträge

    Standard

    Hallo dkaserer!

    Wie rufst Du den FC 32 auf? Stell doch mal den Aufruf hier rein.

    Zitat Zitat von dkaserer Beitrag anzeigen
    Für was werden die Register (DB,AR1,AR2) in NW 1 und 6 gesichert bzw wiederhergestellt? hat das was mit dem Bausen auf sich, der den FC aufgerufen hat?
    => Such mal nach Multiinstanz.

    Grüße
    Gebs

  3. #13
    Registriert seit
    24.02.2011
    Beiträge
    5
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Bei mir heist er FC10, ist aber egal

    CALL FC 10
    Start :=M4.0
    Quelle :=P#DB110.DBX 16.0 DWORD 4
    RET_VAL:=LW40
    Ziel :=P#DB120.DBX 4.0 DWORD 4

  4. #14
    Registriert seit
    08.04.2008
    Ort
    Köln
    Beiträge
    844
    Danke
    39
    Erhielt 244 Danke für 199 Beiträge

    Standard

    Hallo dkaserer!

    Da haben wir doch schon das Problem!!!

    Der Baustein von Toki ist so programmiert, dass er den Offset in
    Bytes berechnet.
    Entweder programmierst Du die Berechnung des Offsets um, oder Du
    gibst beim Aufruf die Länge in Bytes an.

    Grüße
    Gebs

  5. #15
    Registriert seit
    24.02.2011
    Beiträge
    5
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke Gebs, also noch mal zum Verständnis

    wenn ich einen ANY Zeiger übergebe, dann ist der Wiederholungsfaktor in BYTE angegeben, ganz egal welcher Datentyp das ist?

    dann müsste man sich den Wiederholungsfaktor anhand des Datentyps ausrechnen.

  6. #16
    Registriert seit
    08.04.2008
    Ort
    Köln
    Beiträge
    844
    Danke
    39
    Erhielt 244 Danke für 199 Beiträge

    Standard

    Hallo dkaserer,

    wenn ich einen ANY Zeiger übergebe, dann ist der Wiederholungsfaktor in BYTE angegeben, ganz egal welcher Datentyp das ist?
    Nein, der Wiederholungsfaktor bezieht sich auf das Datenformat.
    4 DBD = 8 DBW = 16 DBB

    dann müsste man sich den Wiederholungsfaktor anhand des Datentyps ausrechnen.
    Du musst Dir hier Dein Offset anhand Wiederholungsfaktor und Datentyp ausrechnen.
    Wie Du den Datentyp aus einem ANY auslesen kannst steht hier:
    http://www.sps-forum.de/showthread.php?t=12923

    Grüße
    Gebs


    Grüße
    Gebs

  7. #17
    Registriert seit
    24.02.2011
    Beiträge
    5
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    OK jetzt hab ichs kapiert!

    Danke für deine Hilfe.

  8. #18
    Avatar von Toki0604
    Toki0604 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    14.10.2010
    Ort
    Telgte
    Beiträge
    653
    Danke
    97
    Erhielt 129 Danke für 99 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo dkaserer,

    da Wiederholungsfaktor/Datenformat etc. schon so schön erläutert wurden, möchte ich noch kurz auf deine Frage bezüglich der Sicherung der Register eingehen.
    Das ist keine Erfindung von mir, sondern ich habe mir das von 4Lagig (glaube ich) damals abgeschaut und mir zu eigen gemacht.
    Es geht darum das dieser Baustein in mitten anderer Codes aufgerufen werden kann.
    Falls diese Codes sich darauf verlassen was vor dem Aufruf dieses Bausteins in den Registern steht (stehen müsste), könnte es ungewollt Fehlfunktionen in der Programmierung geben.
    Um dem grundsätzlich vorzubeugen, ob notwendig oder nicht, wird der Zustand der Register nach Aufruf des Bausteins in den Ursprungszustand zurückversetzt.
    Es soll angeblich Firmen geben die darauf sogar bestehen ?!
    Ich hatte selbst noch keine Anwendung bei der dies zum Tragen kam, aber ich finde es immer gut wenn etwas verlassen wird wie es vorgefunden wurde

    Gruß
    Toki
    Programmierumgebung: Step7 V5.5, WinCCflex2008-SP3, TIA-PortalV13, MicroWinV4.0

Ähnliche Themen

  1. Move in CFC
    Von Shettyman im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 18.12.2010, 17:27
  2. ST Move
    Von c.wehn im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 12.12.2009, 12:39
  3. Zugriff auf Adressen mittels Pointer
    Von Jiss im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 11.12.2009, 07:56
  4. Move Befehl in SCL
    Von Felse im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 03.03.2009, 09:19
  5. CoDeSys - Move
    Von mark_ im Forum Sonstige Steuerungen
    Antworten: 7
    Letzter Beitrag: 04.06.2007, 17:23

Lesezeichen

Berechtigungen

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