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

Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 26

Thema: Typ-Casting, Pointer, call by reference, wie geht das mit PCWORX?

  1. #11
    Registriert seit
    25.06.2008
    Ort
    Blomberg/Lippe
    Beiträge
    1.298
    Danke
    51
    Erhielt 130 Danke für 124 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Wobei, wenn das ganze so kompliziert ist, würde ich das mit XML-HTTP-Request lösen. Damit kannst du Variablen lesen und schreiben. Du musst da nicht mal viel vorbereiten in PC WorX. Nur die Variablen für die Kommunikation mit PDD kennzeichen.
    Gruß
    Mobi


    „Das Einfache kompliziert zu machen ist alltäglich. Das Komplizierte einfach zu machen –
    das ist Kreativität“ (Charles Mingus).

  2. #12
    e-hyp ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    18.12.2012
    Beiträge
    9
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Auf der PC-Seite ist die physikalische Darstellung in Bits und Modul-Reihenfolge zu abstrahieren.

    Und die Strukturen sollen auf beiden Seiten identisch sein. Das ist ja gerade die Idee daran. Ähnlich einem Dual-Port-RAm
    (Daher auch die Namen der Strukturen "DUPO")

    Aber es ist doch auch unerheblich, um was für Daten es sich handelt.

    im Wireshark bekommst du nur 1402 Byte lange Pakete, deren Inhalt nur aus 0en besteht (ausser Byte 0 für Blocknummer und Byte 1 für Blockanzahl)
    Was willst du daran sehen??

  3. #13
    Registriert seit
    25.06.2008
    Ort
    Blomberg/Lippe
    Beiträge
    1.298
    Danke
    51
    Erhielt 130 Danke für 124 Beiträge

    Standard

    Wieso nur 0x00? Wenn dann schon Werte, damit ich weiß, von wo bis wo das geht.
    Ich will mir das ganze auch mal nachbauen, mit einem Testtool, welches die 8KB dauernd sendet. zum testen.

    Aber wie gesagt am einfachsten ist es mit HTTP-Request, mit GET und POST.
    Gruß
    Mobi


    „Das Einfache kompliziert zu machen ist alltäglich. Das Komplizierte einfach zu machen –
    das ist Kreativität“ (Charles Mingus).

  4. #14
    e-hyp ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    18.12.2012
    Beiträge
    9
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Aber das hat doch alles nichts mit der Übertragung zu tun!
    Das gleiche Problem ist doch auch, wenn ich Daten aus einer Datei oder irgendeinem anderen Kanal mit Datenstrom bekomme.

    OK. Folgendes Problem OHNE Übertragung:
    Ich habe auf der SPS Seite einen BYTE-ARRAY von z.B. 8000 Bytes. Fix und fertig gefüllt mit übertragenen Werten und aus kleinen Häppchen korrekt zusammengesetzt.
    Dann habe ich eine hübsche STRUC, die ebenfalls insgesamt 8000 Bytes lang ist.
    Nun möchte ich den Inhalt des Blocks in diese Struktur mit möglichst wenig Programmieraufwand übertragen. Zum Glück liegen die Daten in exakt der gleichen Reihenfolge im Buffer, die auch die Struktur abbildet. Sogar auf korrekte gerade Adressierung innerhalb der Struktur ist geachtet.

    Am liebsten wäre etwas ähnliches, wie

    CopyMemory ((char *)Struktur, (char *)Block, 8000);

    aber nicht etwas, wie

    Struktur.abc := Block[404]*0xff + Block[405];
    Struktur.def := Block[406];
    Struktur.ghi := Block[407]*0xff + Block[408];
    ... usw...usw..usw..usw...
    (Und ein BUF_TO_* statt "Block[404]*0xff + Block[405]" macht es auch nicht einfacher.)

    Kann man einen Baustein basteln, der das Kann?

  5. #15
    Registriert seit
    25.06.2008
    Ort
    Blomberg/Lippe
    Beiträge
    1.298
    Danke
    51
    Erhielt 130 Danke für 124 Beiträge

    Standard

    Ich weiß schon was du meinst. Am besten wäre sowas wie bei Codesys mit Pointern. Aber das geht hier nicht.
    Deswegen würde ich einen Baustein machen, der die Bytes einfach zuordnet.
    Den würde ich dir gerne machen, aber dazu bräuchte ich halt das von Wireshark um es selber zu testen.
    Ich baue mir dann selber ein Tool, zwar nicht in C++ sondern in AutoIt, aber das ist genauso gut ind em Fall.
    Gruß
    Mobi


    „Das Einfache kompliziert zu machen ist alltäglich. Das Komplizierte einfach zu machen –
    das ist Kreativität“ (Charles Mingus).

  6. #16
    Registriert seit
    25.06.2008
    Ort
    Blomberg/Lippe
    Beiträge
    1.298
    Danke
    51
    Erhielt 130 Danke für 124 Beiträge

    Standard

    So?

    Rechts siehst du die Struktur. Und "Test" ist das Array.
    Das Array ist hier im Beispiel ARRAY_OF_BYTE_0_99 : ARRAY[0..99] OF BYTE;
    Und die Struktur ist
    Code:
    TYPE
        udtData :
        STRUCT
            Byte0 : BYTE;
            Byte1 : BYTE;
            Word2 : WORD;
            DWord4 : DWORD;
        END_STRUCT;
    END_TYPE
    Angehängte Grafiken Angehängte Grafiken
    Gruß
    Mobi


    „Das Einfache kompliziert zu machen ist alltäglich. Das Komplizierte einfach zu machen –
    das ist Kreativität“ (Charles Mingus).

  7. #17
    e-hyp ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    18.12.2012
    Beiträge
    9
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ich habs zwar nicht so mit der Darstellung der kleinen bunten Kästchen (wie gesagt, hoheitlicher hochsprachenprogrammierer), aber prinzipiell geht es wohl in die richtige Richtung.

    Nur: was macht der Baustein innen drin?

  8. #18
    Registriert seit
    25.06.2008
    Ort
    Blomberg/Lippe
    Beiträge
    1.298
    Danke
    51
    Erhielt 130 Danke für 124 Beiträge

    Standard

    Du kannst das ganze auch in ST schreiben.
    Aber MEMCPY macht das selbe wie CopyMemory, wie man auch den Namen entnehmen kann.
    Gruß
    Mobi


    „Das Einfache kompliziert zu machen ist alltäglich. Das Komplizierte einfach zu machen –
    das ist Kreativität“ (Charles Mingus).

  9. #19
    Registriert seit
    07.09.2011
    Beiträge
    145
    Danke
    0
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Jetzt mische ich mich dazu auch noch ein. Soweit ich es verstanden habe geht es um Datenübertragung von der SPS zum PC.

    Aber wie gesagt am einfachsten ist es mit HTTP-Request, mit GET und POST.
    Das ist meiner Meinung auch eine sehr einfache Lösung.

    D.h. man hat in der SPS eine Variable mit der Struct als PDD gekennzeichnet.
    Nun kann man die einzelnen Werte dieser Struct per HTML Request abfragen. Der Aufbau der Struct ist ja bekannt.
    Ich habe aber noch nicht weiter getestet ob man die Struct gleich in einem ganzen Stück abfragen kann.

  10. #20
    Registriert seit
    25.06.2008
    Ort
    Blomberg/Lippe
    Beiträge
    1.298
    Danke
    51
    Erhielt 130 Danke für 124 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Struct geht nicht. Da müsstest du dann Zwischenvariablen nehmen.
    Gruß
    Mobi


    „Das Einfache kompliziert zu machen ist alltäglich. Das Komplizierte einfach zu machen –
    das ist Kreativität“ (Charles Mingus).

Ähnliche Themen

  1. call-by-reference Beckhoff?
    Von gingele im Forum CODESYS und IEC61131
    Antworten: 6
    Letzter Beitrag: 22.07.2011, 09:12
  2. Störmeldungen, wie geht das?
    Von carsten im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 23.11.2007, 09:05
  3. Antworten: 1
    Letzter Beitrag: 08.11.2006, 14:28
  4. Antworten: 7
    Letzter Beitrag: 01.02.2006, 08:29

Stichworte

Lesezeichen

Berechtigungen

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