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

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

Thema: BLKMOV und überlappende Bereiche

  1. #11
    Registriert seit
    10.10.2008
    Beiträge
    43
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi,

    interessant @ 312er. Ich bin immer wieder erstaunt wie gut es Siemens schafft in den verschiedenen (aber irgendwie gleichen) Produkten doch immer wieder elementare Unteschiede reinzubringen. Anyway, darum gehts ja jetzt nicht.

    Wenn Siemens nicht doch mehr Logik eingebaut hat, dann werden mit Sicherheit Bytes kopiert, da das nunmal die kleinste Speichereinheit ist (und wegen der Anmerkung in der Hilfe: "Wenn ein Bereich vom Datentyp BOOL kopiert wird, muss die angegebene Länge des Bereichs durch 8 teilbar sein, da sonst die Anweisung nicht ausgeführt wird.").

    Dass die Kopierreihenfolge in Richtung aufsteigender Adressen erfolgt, steht auch in der Hilfe. Da hatte ich nicht mehr dran gedacht, danke.

    Was mich auch noch im Zusammenhang mit BLKMOV interessieren würde ist die tatsächliche Performance. Also wie viele BLKMOVs von der max. DB-Größe (also 64kByte) können in einer Sekunde ausgeführt werden? Hat das zufällig schonmal jemand ermittelt? Wenn nein prüfe ich es selbst. Dass es hier keine Zahl für alle vorhandenen Steuerungen gibt ist mir schon klar, aber typenspezifische Aussagen wären mal nett.

    Viele Grüße
    Max

  2. #12
    Registriert seit
    29.03.2004
    Beiträge
    5.739
    Danke
    143
    Erhielt 1.686 Danke für 1.225 Beiträge

    Standard

    Zitat Zitat von Blockmove Beitrag anzeigen
    Ist aber so
    Laut Handbuch dürfen sich Quell- und Zielbereich beim Blockmove nicht überlagern.
    Bei einer 315er funktioniert das aber problemlos und man kann ein sehr schnelles und einfaches FiFo programmieren.
    Auf einer 312 funktionieren diese überlappenden Zugriffe nicht.
    Ich hätte ja sehr starke Bedenken etwas zu verwenden, wovon die Herstellerdokumentation sagt es funktioniert nicht, und ich dann selber an einer bestimmten Version feststelle dass es gerade zufällig hier funktioniert. Denn damit ist nicht garantiert, dass es bei einer kleinsten Firmwareänderung immer noch funktioniert.

    Evtl. wird da im SFC in der SPS unterlagert die C-Funktion memcpy() aufgerufen. Und bei dieser ist bei überlappenden Speicherbereichen die Funktion mit "undefined behaviour" gekennzeichnet. Das heißt es kann funktionieren oder auch nicht. Jedes Tool zur statischen Codeanalyse wird dir das zu Recht anmeckern.

  3. #13
    Registriert seit
    17.07.2009
    Ort
    Am Rande der Ostalb
    Beiträge
    5.480
    Danke
    1.141
    Erhielt 1.242 Danke für 973 Beiträge

    Standard

    @Thomas
    Natürlich hast du damit recht.

    Es ist nicht unbedingt empfehlendswert Blockmove so zu nutzen.
    Laut Siemens liegt es wirklich am memcpy

    Gruß
    Dieter
    Geändert von Blockmove (02.08.2015 um 13:50 Uhr)

  4. #14
    Registriert seit
    10.10.2008
    Beiträge
    43
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hi,

    das wäre natürlich auch noch eine Möglichkeit @ Verwendung von memcpy. Da hatte ich auch bereits dran gedacht. Manchmal (Untertreibung) vermisse ich die ganzen C-Standardfunktionen in S7-Programmen.

    Gruß
    Max

  5. #15
    Registriert seit
    17.07.2009
    Ort
    Am Rande der Ostalb
    Beiträge
    5.480
    Danke
    1.141
    Erhielt 1.242 Danke für 973 Beiträge

    Standard

    Zitat Zitat von Löwensenft Beitrag anzeigen
    Hi,

    das wäre natürlich auch noch eine Möglichkeit @ Verwendung von memcpy. Da hatte ich auch bereits dran gedacht. Manchmal (Untertreibung) vermisse ich die ganzen C-Standardfunktionen in S7-Programmen.

    Gruß
    Max
    Thomas bezog sich auf das memcpy des Compilers mit dem die Firmware für die S7-CPU geschrieben wurde.

    Für die S5-Steuerungen konntest du bei Siemens früher für richtig viel Geld sogar einen C-Compiler bekommen.

    Gruß
    Dieter

  6. #16
    Registriert seit
    10.10.2008
    Beiträge
    43
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hi,

    ich weiß schon. Ich komme eigentlich auch aus der schönen und luxuriösen Hochsprachen-Welt (man lernt etwas erst zu schätzen wenn man es nicht mehr hat) und greife mir in letzter Zeit immer öfter an den Kopf und frag mich wer bei Siemens die Entscheidungen für den Programmiersprachenumfang und die Entwicklungsumgebung trifft. Man versucht scheinbar krampfhaft alles einfach zu halten ohne die Möglichkeiten zu geben doch etwas anspruchsvollere Dinge in AWL/SCL umsetzen zu können. Denn im Grunde steckt da ein kleiner µC dahinter, der so funktioniert und so viel kann wie jeder andere µC auch, den ich mit C und nem entsprechenden Compiler programmieren kann. Naja.

    Gruß
    Max

  7. #17
    Registriert seit
    10.10.2008
    Beiträge
    43
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi,

    eventuell eine Nice-To-Know-Information. Ich habe nun mal die Performance von BLKMOV auf meinem Zielsystem getestet (IPC427D, i7-3517UE, 4GB RAM, WES7 SP1, 80GB SSD, WinAC RTX 2010, Bestell-Nr. 6AG4140-8BL04-0HB0).

    Hier braucht der Aufruf
    Code:
    CALL "BLKMOV" (
        SRCBLK  := P#DB30001.DBX 0.0 BYTE 65534,
        RET_VAL := #tmpRetVal,
        DSTBLK  := P#DB30002.DBX 0.0 BYTE 65534)
    im Schnitt 7.6µs.

    Mit nur 10000 Bytes sind es ca. 1.4µs.

    Ich glaube, bevor ich in Zukunft nochmal mit Absolutadressen rumhantiere (aufgrund von dynamisch zu verwendenden DBs), kopiere ich mir den benötigten DB ab sofort in einen Arbeits-DB und greif symbolisch drauf zu. Schön ist zwar anders (ich würde ja lieber bspw. nen Pointer in nen UDT casten), aber hauptsache symbolisch auf die Daten zugreifen.

    Gruß
    Max

Ähnliche Themen

  1. TIA Problem (U)BLKMOV bei SCL und TIA v13 SP1
    Von misu68 im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 06.03.2015, 17:07
  2. Antworten: 23
    Letzter Beitrag: 09.12.2014, 07:36
  3. Wago 750-641 Dali Master überlappende Gruppenzuordnung
    Von Tati im Forum CODESYS und IEC61131
    Antworten: 0
    Letzter Beitrag: 21.11.2011, 12:03
  4. BLKMOV, ein FB und der Any-Pointer
    Von Krumnix im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 11.06.2009, 09:18
  5. zeit- bereiche abfragen
    Von Koala im Forum HMI
    Antworten: 0
    Letzter Beitrag: 09.09.2004, 16:04

Stichworte

Lesezeichen

Berechtigungen

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