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

Ergebnis 1 bis 8 von 8

Thema: libnodave mehrere doppelwörter

  1. #1
    Registriert seit
    24.03.2006
    Beiträge
    21
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Moin Moin, ich bastel immer nen bisschen mit der libary rum, ist echt klasse, aber eine frage habe ich mal.

    ist es irgendwie möglich einen ganzenbereich sagen wir mal db20.dbd0 bis db20.dbd60 in die steueuerung zuschreiben, oder muss ich das immer in doppelwortschritten machen ? mit z.b. tnodave.writedword?

    danke erstmal

    praseodym
    Zitieren Zitieren libnodave mehrere doppelwörter  

  2. #2
    Registriert seit
    19.09.2005
    Ort
    Freudenstadt
    Beiträge
    811
    Danke
    64
    Erhielt 101 Danke für 64 Beiträge

    Standard

    Zitat Zitat von Praseodym Beitrag anzeigen
    mit z.b. tnodave.writedword?
    Daraus schließe ich, daß Du mit meiner Komponente in Delphi arbeitest, richtig ?

    Schau Dir in dem Fall doch mal die Methode TNoDave.WriteBytes an, die schreibt einen ganzen Speicherbereich "am Stück" in die SPS, wobei die Blockgröße des Kommunikationsprotokolls berücksichtigt wird, und das Ganze automatisch in entsprechend vielen "Häppchen" übertragen wird.


    Gruß Axel
    Man muß sparn wo mn knn!

  3. #3
    Praseodym ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    24.03.2006
    Beiträge
    21
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Supi, das fuzt auch, abba wie addiere ich denn jetzt die wörter miteinander, so das ich den pointer auf den bereich zeigen lassen kann wo die "wörter" drinne liegen ? oder wie machst du das ? hättest nen kleines beispiel ?

    praseodym
    Code:
    var
      Form1: TForm1;
      mybuffer: ^integer;
      zahl: integer;
    implementation
    {$R *.dfm}
    
    
    procedure TForm1.FormCreate(Sender: TObject); begin zahl:= 65535; mybuffer:=@zahl; nodave1.Active:=true; nodave1.WriteBytes(mybuffer); end;
    procedure TForm1.FormDestroy(Sender: TObject); begin nodave1.Destroy; end;
    end.
    Zitieren Zitieren Supa, aber...  

  4. #4
    Registriert seit
    19.09.2005
    Ort
    Freudenstadt
    Beiträge
    811
    Danke
    64
    Erhielt 101 Danke für 64 Beiträge

    Standard

    Zitat Zitat von Praseodym Beitrag anzeigen
    wie addiere ich denn jetzt die wörter miteinander, so das ich den pointer auf den bereich zeigen lassen kann wo die "wörter" drinne liegen ?
    Bei lauter Werten vom Typ Doppelwort kannst Du einfach ein Array von diesem Typ nehmen und den Zeiger auf's erste Feld an WriteBytes übergeben.

    Wenn es verschiedene Datentypen sind, dann mit GetMem den notwendigen Speicher reservieren, mit ein wenig Zeigerarithmetik die Werte da reinschreiben und den Zeiger auf diesen Speicherbereich an WriteBytes übergeben. Vergiß nicht, den Speicher mit FreeMem wieder freizugeben, wenn Du ihn nicht mehr brauchst, sonst ist deine Applikation ein "Speicherfresser".


    Gruß Axel
    Man muß sparn wo mn knn!

  5. #5
    Praseodym ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    24.03.2006
    Beiträge
    21
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Lächeln

    super, klasse! ersteinmal vielen dank, werde das nachher gleich einmal ausprobieren !!

    übrigens, super komponente !


    danke, praseodym
    Zitieren Zitieren danke  

  6. #6
    Registriert seit
    22.02.2007
    Ort
    Sponheim
    Beiträge
    190
    Danke
    3
    Erhielt 10 Danke für 9 Beiträge

    Standard

    Ich hänge mich hier mal...

    übrigens, super komponente !
    Dem schließe ich mich an!!!

    Aber eine kleine Verbesserung hätte ich noch. Das mit den Zeigern finde ich beim Schreiben so umständlich.

    Wäre es denn nicht einfacher, wenn das beim Schreiben wie auch beim Lesen funktionieren würde. Also mit WriteInt, WriteDInt, WriteBit usw. in einen Buffer schreiben und den dann gesammelt mit WriteBytes(...) an die SPS schicken.

    Gruß
    Marc

  7. #7
    Registriert seit
    19.09.2005
    Ort
    Freudenstadt
    Beiträge
    811
    Danke
    64
    Erhielt 101 Danke für 64 Beiträge

    Standard

    Zitat Zitat von marcengbarth Beitrag anzeigen
    Wäre es denn nicht einfacher, wenn das beim Schreiben wie auch beim Lesen funktionieren würde. Also mit WriteInt, WriteDInt, WriteBit usw. in einen Buffer schreiben und den dann gesammelt mit WriteBytes(...) an die SPS schicken.
    Die Write...-Methoden schreiben immer direkt in die SPS, weil bei einer Visu z.B häufig ein einzelner Wert in die SPS geschrieben wird, wenn der Bediener beispielsweise einen Sollwert ändert, zusammenhängende Datenbereiche aber eher selten beschrieben werden.

    Trotzdem danke für die Anregung, ich schau mir bei nächster Gelegenheit mal an, ob sich das irgendwie realisieren läßt.


    Gruß Axel
    Man muß sparn wo mn knn!

  8. #8
    Registriert seit
    22.02.2007
    Ort
    Sponheim
    Beiträge
    190
    Danke
    3
    Erhielt 10 Danke für 9 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Die Write...-Methoden schreiben immer direkt in die SPS, weil bei einer Visu z.B häufig ein einzelner Wert in die SPS geschrieben wird, wenn der Bediener beispielsweise einen Sollwert ändert, zusammenhängende Datenbereiche aber eher selten beschrieben werden.
    Ja, das ist klar und ist auch echt gut so und muss ja auch so bleiben. Man müsste vielleicht neue Methoden anlegen, um in einen Buffer zu schreiben.
    Mal sehen, vielleicht hab ich abends etwas Zeit, dann schau ich mir die Sourcen mal an...

Ähnliche Themen

  1. Libnodave mehrere readrequests
    Von Praseodym im Forum Hochsprachen - OPC
    Antworten: 3
    Letzter Beitrag: 09.08.2011, 19:07
  2. Antworten: 6
    Letzter Beitrag: 07.02.2011, 07:49
  3. Doppelwörter Schieben
    Von Waelder im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 08.03.2007, 16:35
  4. Doppelwörter hochzählen MD1>MD2 usw.
    Von mkd im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 19.12.2006, 07:13
  5. Mehrere S7-200 mit libnodave beobachten
    Von caret im Forum Hochsprachen - OPC
    Antworten: 2
    Letzter Beitrag: 18.12.2006, 12:36

Lesezeichen

Berechtigungen

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