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

Ergebnis 1 bis 10 von 10

Thema: VB libnodave Read multiple items

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Zusammen,

    Ich benötige hilfe bei der Funktion Read multiple items.

    Ich benutze VB 2005 und libnodave-0.8.4.5, das Verbinden (TCP-IP) und
    lesen,schreiben einzelner Bits klappt prima.
    Nun möchte ich aber mehrere Items(Eingänge) mit der Funktion
    Read multiple items einlesen. Anscheinen habe ich Probleme mit der Deklaration da alle was ich bisher gefunden habe nicht in Vb war habe ich leider Probleme dies entsprechen umzusetzten. Es wäre toll wenn mir jemand einen Code-Ausschnitt aus seinem Programm schreiben könnte bitte mit Deklaration.

    MFG
    René Morasch
    Zitieren Zitieren VB libnodave Read multiple items  

  2. #2
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    Zitat Zitat von Rmorasch Beitrag anzeigen
    da alle was ich bisher gefunden habe nicht in Vb war
    willkommen im forum (<- das mach ich nicht oft!)

    welche sprachen hatten denn die anderen beispiele?
    der prozedur-aufruf sollte (eigentlich) bei der übergabe der argumente gleich sein ...

    mach mal beispiel und mach mal, wie du gemacht hast... hier, in diesem forum ... am besten mit den code-tags ... ist das # im antwort-editor
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  3. #3
    Rmorasch ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    13.10.2009
    Beiträge
    5
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hey,
    Vielen dank für die schnelle Antwort also
    das einzige was ich der Doku entnehmen kann ist dieses hier, ich
    denke es müsste Delphi sein oder ???
    Ohne die Deklaration bekomme ich aber schon bei schreiben Probleme.

    PDU p;
    daveResultSet rs;
    davePrepareReadRequest(dc, &p);
    daveAddVarToReadRequest(&p,daveInputs,0,0,1);
    daveAddVarToReadRequest(&p,daveFlags,0,0,4);
    daveAddVarToReadRequest(&p,daveDB,6,20,2);
    daveAddVarToReadRequest(&p,daveFlags,0,12,2);
    res=daveExecReadRequest(dc, &p, &rs);


    Meine Deklaration sieht so aus:

    Public localMPI AsInteger = 0, plcMPI AsInteger = 2
    Public fds As libnodave.daveOSserialType
    Public di As libnodave.daveInterface
    Public dc As libnodave.daveConnection
    Public res AsInteger
    Public buf(1000) AsByte

    PublicSub S7_Verbinden() 'Verbindung herstellen mit S7-CPU
    If S7_Online = FalseThen
    fds.rfd = openSocket(102, "192.168.15.191")
    fds.wfd = fds.rfd
    fds.wfd = fds.rfd
    If fds.rfd > 0 Then
    di = New libnodave.daveInterface(fds, "My Interface 1", localMPI, libnodave.daveProtoISOTCP, libnodave.daveSpeed1500k)
    di.setTimeout(1000000)
    res = di.initAdapter
    If res = 0 Then
    dc = New libnodave.daveConnection(di, plcMPI, 0, 2) ' rack amd slot don't matter in case of MPI
    res = dc.connectPLC()
    If res = 0 Then
    Me.Button_Verbingung_herstellen.BackColor = Color.LightGreen
    S7_Online =
    True
    Else
    Me.Button_Verbingung_herstellen.BackColor = Color.LightSalmon
    EndIf
    EndIf
    EndIf
    EndIf
    EndSub
    PublicSub S7_Abrechen() ' Verbindung abrechen mit S7-CPU
    Offline = True
    If S7_Online = TrueThen
    dc.disconnectPLC()
    di.disconnectAdapter()
    ' End connection to adapter
    libnodave.closePort(fds.rfd) ' Clean up
    Me.Button_Verbingung_herstellen.BackColor = Color.LightSalmon
    S7_Online =
    False
    EndIf
    EndSub
    Zitieren Zitieren Libnodave Read multiple items  

  4. #4
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    ok, code-tags sauberst ignoriert, feiner einstand ...

    an welcher stelle DEINER programmierung klemmt es? hast du evtl. einen memeber nicht richtig deklariert, versuchst ihn aber trotzdem der prozedur überzubügeln?
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  5. #5
    Rmorasch ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    13.10.2009
    Beiträge
    5
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Also ich versuchs mal Zeile für Zeile

    PDU p; müsste in VB Dim p AsNew PDU sein
    daveResultSet müsste in VB Dim rs As resultSet

    Und hier mein erstes Problem
    davePrepareReadRequest(dc, &p); müsste in VB ???

    dc.prepareReadRequest() kann wohl nicht sein

  6. #6
    Registriert seit
    04.04.2008
    Beiträge
    389
    Danke
    85
    Erhielt 39 Danke für 24 Beiträge

    Standard

    wenn es nur darum geht, mehrere Speicherbereiche, beispielsweise aus dem Bereich der Merker, zu lesen, benutze ich dc.readBytes.

    Ohne Absicherung gegen Lesefehler:
    Code:
    Public Sub Merkerbereich()
    Dim a, b, c AsInteger
    res = dc.readBytes(libnodave.daveFlags, 0, 0, 7, buf)
    a = dc.getU8 '8 Bit-Wert ohne Vorzeichen
    b = dc.getS16 '16 Bit-Wert mit Vorzeichen
    c = dc.getS32 '32 Bit-Wert mit Vorzeichen
    txtMB0.Text = a
    txtMW1.Text = b
    txtMD3.Text = c
    End Sub
    
    Ich lese 7 Bytes und schreibe sie in den Speicher buf.
    Die formweit gültige Deklaration für buf muss mindestens sein:
    Dim buf(6) as Byte

    Die drei Werte werden dann in Textboxen geschrieben. Der Programmcode kann natürlich auch dem Click-Ereignis eines Buttons zugeordnet werden.


    Gruß
    Earny

  7. #7
    Rmorasch ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    13.10.2009
    Beiträge
    5
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Vielen Dank für die Antwort,

    Leider hatte ich vergessen das ich sämtliche Typen lesen möchte
    bzw. der Benutzer übergibt die Variablen(Eingänge,Ausgänge,Merker usw.)
    deshalb kann ich Dein Vorschlag so nicht übernehmen.

  8. #8
    Registriert seit
    04.04.2008
    Beiträge
    389
    Danke
    85
    Erhielt 39 Danke für 24 Beiträge

    Standard

    habe das mit den "sämtlichen" Typen möglicherweise nicht ganz verstanden.
    Die dc.readBytes-Methode geht natürlich nicht nur mit Merkern, sondern auch z.B. mit:

    Eingängen: daveInputs
    Ausgängen: daveOutputs
    Timer: daveTimer
    Zähler: daveCounter
    Datenbaustein: daveDB
    Peripherieeingänge: daveP

    Gruß
    Earny

  9. #9
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.746
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    ja das geht schon mit den ganzen sachen, aber dann ist ja für jede anfrage eine extra pdu nötig, oder?

    so wie er es vorhat nicht, odr?
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten
    Zitieren Zitieren ja...  

  10. #10
    Rmorasch ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    13.10.2009
    Beiträge
    5
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Zusammen,
    Und erst einmal vielen Dank für die Antworten.
    readBytes macht keinen Sinn. Stellt euch einfach den Variablen-Editor in Step7
    vor dort sind ja Eingänge, Ausgänge usw. gemixt in einer Liste und nun sollte ich
    halt die Möglichkeit haben diese Varaiblen auch alle auf einmal einzulesen mti dem
    Befehl Read multiple items. Ich sehe hierzu keine andere Möglichkeit.
    Sollte also jemand ein brauchbaren Code-Ausschnitt haben nur her damit bin für alles
    dankbar was mich etwas weiter bring.

Ähnliche Themen

  1. (Libnodave) Read Request Frage an die Experten
    Von ronnie.b im Forum Hochsprachen - OPC
    Antworten: 8
    Letzter Beitrag: 28.07.2011, 08:11
  2. PLCS¡m + NetToPLCSim + multiple connections
    Von jondownloads im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 20.05.2011, 23:04
  3. LibNodave und Multiple Read (mit nicht existierenden Elementen)
    Von Jochen Kühner im Forum Hochsprachen - OPC
    Antworten: 2
    Letzter Beitrag: 25.08.2010, 23:27
  4. S7-1200 multiple ISO-on-TCP connections
    Von Tim Kamrath im Forum Hochsprachen - OPC
    Antworten: 1
    Letzter Beitrag: 24.08.2010, 18:04
  5. 200ms delay beim CP 243-1 read mit libnodave
    Von Wollli im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 02.06.2009, 14:25

Stichworte

Lesezeichen

Berechtigungen

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