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

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

Thema: TIA V13 - Probleme bei Daten-Handling (Bool -> Byte)

  1. #11
    Registriert seit
    13.10.2007
    Beiträge
    12.026
    Danke
    2.784
    Erhielt 3.268 Danke für 2.156 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von PN/DP Beitrag anzeigen
    Dein Anhang, der evtl. die Siemens-Antwort auf Deine Anfrage enthalten sollte, kann nicht gefunden werden. Der Anhang ist ungültig... Vielleicht versuchst Du das Anhängen nochmal.
    Unter den Text gibt es ein Reiter "Angehängte Dateien", dort lässt sich der PDF runterladen.
    Dieser sagt aber nichts aus, außer das in diesen Fall die Fa. Heitec den Fall bearbeitet hat.
    - - -
    Wer als Werkzeug nur einen Hammer hat, sieht in jedem Problem einen Nagel.

  2. #12
    msfdgn ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    12.05.2009
    Beiträge
    12
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    @ Harald:
    erst einmal danke für die erste konstruktive Antwort/Frage in diesem Forum. Weil wenn man fragt / beschreibt was unklar ist, kann der Gegenüber auch die gewünschten Infos geben. (Nur zur zum Thema Polemik, ... Ich habe eine aus meiner Sicht normale Frage gepostet und um der Antwort "wende dich an Siemens Support" vorzubeugen, habe ich erwähnt, dass ich dort schon war - ohne Hähme.)
    Ich programmiere seit ca. 20 Jahren (was du nicht wissen kannst) und kenne daher sicherlich den Unterschied zwischen bit/bool und Byte. - Ich war davon ausgegeangen, dass man anhand meines STEP7-Programmierbeispiels mein Anliegen erkennen kann. Aber ich versuch gerne noch einmal mein Problem zu beschreiben:
    In dem einen Datenbaustein sind binäre / boolsche Informationen. Diese muss ich für die Weiterverarbeitung in einem betriebsinternen Standardbaustein im Byte-Format haben. Heißt also:
    DB1: z.B.
    Bit 0.0 = TRUE (1)
    Bit 0.1 = FALSE (0)
    Bit 0.2 = FALSE (0)
    Bit 0.3 = TRUE (1)
    Bit 0.4 = FALSE (0)
    Bit 0.5 = FALSE (0)
    Bit 0.6 = FALSE (0)
    Bit 0.7 = TRUE (1)
    ergibt in "Byte-Schreibweise" 10001001 entspricht hexadezimal 89
    Diese 89 (HEX) brauche ich als im Byte-Format als Eingabewert für einen Funktionsbaustein
    in STEP7 AWL also z.B.
    "L DB1.DBB0"
    "T DB2.DBB2"

    zu deinen Fragen:
    Programmiersprache -> KOP / FUP, CPU S7-1200, CPU 1215 AC/DC/DC
    wieviel Werte -> 10 Byte (aber nicht wirklich relevant, da von Projekt zu Projekt unterschiedlich)
    was soll trasnferiert werden ... -> s. Erklärung oben
    wie sieht der DB10 mit den BOOL-Werten aus -> ? -> Name Datentyp Startwert Remanenz ... Kommentar
    DatPkt00 BOOL FALSE leer Datenpunkt 00
    DatPkt01 BOOL FALSE leer Datenpunkt 01
    DatPkt02 BOOL FALSE leer Datenpunkt 02
    DatPkt03 BOOL FALSE leer Datenpunkt 03 , usw
    Wie soll nach dem Transfer der DB11 mit den BYTE-Werten aussehen -> ? Name Datentyp Startwert Remanenz ... Kommentar
    DatBy00 BYTE 16#0 leer Datenpunkte 00-07
    DatBy01 BYTE 16#0 leer Datenpunkte 08-15
    Wie ist die Symbolik des DB10, wie ist die Symbolik des DB11 -> tut mir leid die Frage verstehe ich nicht, ggf. s. vorstehende Beschreibung

    wg HEITEC / SIEMENS:
    ich wollte mit der Email nur zeigen, dass ich mich mit meiner Frage an SIEMENS (s. header) gewandt, die Antwort aber von HEITEC bekommen habe.

  3. #13
    Registriert seit
    03.04.2008
    Beiträge
    6.200
    Danke
    237
    Erhielt 815 Danke für 689 Beiträge

    Standard

    Also ich bin begeistert.
    Du schreibst von portieren STEP7 -> TIA V13.
    Dann von AWL und im Ergebnis geht es um eine CPU 1200.
    Du kannst von Step7 Standard nicht ohne umprogrammieren dein Projekt auf einer 1200er zum laufen bekommen.

    Wenn du die Programmierumgebung und deine Hardware richtig beschrieben hättest, wäre vieles einfacher gewesen.
    Eine solch chaotische Beschreibung des Problems von einem Programmierer mit 20 Jahre Erfahrung?


    bike
    "Any fool can write code that a computer can understand.
    Good programmers write code that humans can understand."
    --Martin Fowler

  4. #14
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.218
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    @msfdgn

    Tatsächlich habe ich deinen Post auch erst einmal ignoriert, weil die wichtigsten Infos fehlen. Diese hast du erst nachgeschoben, als Nachfragen kamen. Mit so einer ungenauen Problembeschreibung (fehlende CPU wird eine Antwort zur Zeitverschwendung). Deine Antworten inspirieren nicht gerade dazu, dir zu helfen, darüber könntest du durchaus mal nachdenken, man darf auch nicht zu dünnhäutig sein, im Grunde sind die Posts durchaus gut gemeint.

    Ich könnte mir vorstellen dass folgender Code vielleicht funktionieren könnte:

    Code:
    FUNCTION "FC_Bits_To_Byte" : Void
    { S7_Optimized_Access := 'TRUE' }
    VERSION : 0.1
       VAR_INPUT 
          DBBit         : DB_ANY;
          MyByteOffset     : Int;
          DBByte         : DB_ANY;
       END_VAR
    
    
       VAR_TEMP 
          MyByte         : Byte;
          MyInt         : Int;
       END_VAR
    
    
    
    
    BEGIN
        #MyByte := PEEK(area := 16#84, dbNumber := #DBBit, byteOffset := #MyByteOffset);
        POKE(area := 16#84, dbNumber := #DBByte, byteOffset := #MyByteOffset, value := #MyByte);
        
    END_FUNCTION
    Den FC wiederum könnte man in einer Schleife aufrufen und so mehrere Byte umkopieren.
    Ob das funktioniert kann ich leider nicht sagen, da die 1200-er (zumindest bei mir) nicht simuliert werden kann.

    PS: { S7_Optimized_Access := 'TRUE' } möglicherweise auf False???
    Geändert von Ralle (15.07.2014 um 10:49 Uhr)
    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

  5. Folgender Benutzer sagt Danke zu Ralle für den nützlichen Beitrag:

    msfdgn (15.07.2014)

  6. #15
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.163
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    - entweder mußt Du die jeweils 8 Quell-Bits zu einem Byte zusammenbasteln, z.B. bedingt Wortweise ODER-verknüpfen (dieses Standard-Verfahren sollte man mit 20 Jahren Programmiererfahrung schon kennen)
    Das geht in FUP/KOP etwa so:
    Code:
                     +--------+
                     |  MOVE  |
                  0--|        |--#Tempword
                     +--------+
    
                     +--------+
    "DB10".DatPkt00  |  ODER  |
    -----| |---------|EN      |
          #Tempword--|        |--#Tempword
          W#16#0001--|        |
                     +--------+
    
                     +--------+
    "DB10".DatPkt01  |  ODER  |
    -----| |---------|EN      |
          #Tempword--|        |--#Tempword
          W#16#0002--|        |
                     +--------+
    ...
    
                     +--------+
    "DB10".DatPkt07  |  ODER  |
    -----| |---------|EN      |
          #Tempword--|        |--#Tempword
          W#16#0080--|        |
                     +--------+
    
                     +--------+
                     |  MOVE  |
          #Tempword--|        |--"DB11".DatBy00
                     +--------+
    - oder wenn die Bits bereits passend in einer Byte-Adresse liegen, dann das ganze Byte lesen (move), was wohl nur absolut oder in SCL per AT-Sicht geht

    - oder Du mußt auf die Bits des Ziel-Byte einzeln zugreifen (Slice access). Das geht auch in FUP/KOP
    Code:
    "DB10".DatPkt00   "DB11".DatBy00.X0
    -----| |------------------( )
    
    "DB10".DatPkt01   "DB11".DatBy00.X1
    -----| |------------------( )
    
    ...
    
    "DB10".DatPkt07   "DB11".DatBy00.X7
    -----| |------------------( )
    ...
    Wie können Sie in STEP 7 (TIA Portal) bit-, byte- oder wortweise und symbolisch auf die unstrukturierten Datentypen zugreifen?

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

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

    msfdgn (15.07.2014)

  8. #16
    msfdgn ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    12.05.2009
    Beiträge
    12
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    zunächst einmal Danke an alle, die konstruktive Vorschläge gemacht haben.

    Dann Selbsterkenntnis: Es ist richtig, dass eine qualifizierte Lösungsfindung nur unter Nennung der CPU und Programmiersprache möglich ist. - Sorry dafür. (Allerdings zu meiner Ehrenrettung: Ich ging davon aus, dass es eine einfache, allgemeingültige Lösung gab -> vgl. mein 2-zeiliges STEP 7- Programmierbeispiel)

    Als nächstes zu Euren Lösungsvorschlägen. Die "Slice-Access-Lösung" habe ich gestern Nachmittag/Abend bereits umgesetzt, weil ich ja weiter musste. Das "hinkt" aber wegen meines Wunschs den "optimierter Bausteinzugriff" zu verwenden. Die Schleifenlösung war/ist mir durchaus bekannt, war mir als Ersatz für meine lade Byte, transferiere Byte - Lösung aus STEP 7 zu aufwendig. Die andere Lösung werde ich am Wochenede mal probieren. Der Hinweis auf den SIEMENS-Support-Link war gut, löst aber leider trotzdem das Problem nicht.

    @ Ralle:
    Ich kann dir leider nur bedingt Recht geben hinsichtlich der "gut gemeinten Posts". Wie man an meinen Status erkennen kann, bin ich noch nicht lange in dem Forum und auf gezielte Fragen gebe ich selbstverständlich auch nach bestem Wissen und Gewissen Antwort. (Ist ja in meinem Interesse) Da wäre es doch durch fair gewesen, mal nach (durchaus notwendigen) Details zu fragen, oder? - Und als Negativbeispiel "bike" - Kannst Du eine einzige verwertbare Information in seinen Posts finden? Wie man auch an seinem letzten Post erkennen kann, macht er sich ja nicht mal die Mühe zu lesen. Ich habe kein Wort geschrieben von "portieren" oder dass ich AWL in der 1200er programmieren will. Geschweige denn, dass ich ein ganzes STEP 7 Projekt ohne Umprogrammieren in eine 1200er implantieren will... - Aber es gibt ja auch kontruktive Beiträge. Nochmals Danke dafür.

  9. #17
    Registriert seit
    29.04.2012
    Beiträge
    195
    Danke
    13
    Erhielt 42 Danke für 37 Beiträge

    Standard

    Code:
    POKE_BLK( area_src:=16#84, dbNumber_src:=10, byteOffset_src:=0, area_dest:=16#84, dbNumber_dest:=11, byteOffset_dest:=0, count:=10);
    Schreibt die unter "count" angegebene Anzahl von Bytes beginnend mit dem angegebenen byteOffset des angegebenen Quelldatenbausteins, der Quell-E/A oder des Quellspeicherbereichs in den angegebenen byteOffset des angegebenen Zieldatenbausteins, der Ziel-E/A oder des Zielspeicherbereichs.
    Oder übersehe ich da was?
    There are two kinds of fools. One says, “This is old, and therefore good.” And one says, “This is new, and therefore better.”

  10. #18
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.163
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Der TE will den "optimierter Bausteinzugriff" verwenden - sprich: die Lösung muß vollsymbolisch (ohne Absolutadressen) funktionieren. Das macht z.B. mein erstes Beispiel mit dem wortweise ODER-verknüpfen.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

Ähnliche Themen

  1. Byte to Bool in SCL
    Von paula23 im Forum Simatic
    Antworten: 22
    Letzter Beitrag: 04.05.2017, 11:46
  2. TIA TIA V13 - Querverweise bei Absoluten Adressen
    Von Falkd im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 15.05.2014, 19:29
  3. Antworten: 2
    Letzter Beitrag: 11.05.2014, 08:14
  4. Antworten: 3
    Letzter Beitrag: 24.05.2012, 07:34
  5. Bool und Byte
    Von Anaconda55 im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 09.09.2008, 20:21

Stichworte

Lesezeichen

Berechtigungen

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