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

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 27

Thema: Libnodave Siemens Logo 8

  1. #1
    Registriert seit
    08.01.2015
    Beiträge
    9
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Gemeinde !
    Ich lese hier schon eine weile mit und bin am verzweifeln.
    Ich versuche seit Tagen mit Visual Studio Express 2005 eine Verbindung zur Siemens Logo mit der Libnodave bibliothek herzustellen.
    Ich möchte gerne eine Visualisierung für die Logo erstellen komm aber nicht weiter.
    Mein Ziel währe es:
    Anzeige der Eingänge
    Anzeige der Ausgänge
    Schalten von Merkern

    Eigendlich nicht so kompliziert sollte man meinen, aber scheinbar für mich schon wer kann mich etwas unterstützen ?
    Ich bin für jede Hilfe dankbar !

    Danke

    Hier der Quellcode:
    Public Class Form1

    Public fds As libnodave.daveOSserialType
    Public di As libnodave.daveInterface
    Public dc As libnodave.daveConnection
    Public res As Integer
    Public buf(100) As Byte
    Public localMPI As Integer = 0
    Public rack As Integer = 0
    Public slot As Integer = 2
    Public plcMPI As Integer = 2
    Public Connection As Boolean = False
    Public IP As String = "192.168.46.166"

    Private Sub ConnectPLC()
    fds.rfd = libnodave.openSocket(102, IP)
    fds.wfd = fds.rfd

    If fds.rfd > 0 Then ' if step 1 is ok
    di = New libnodave.daveInterface(fds, "IF1",0, libnodave.daveProtoISOTCP,libnodave.daveSpeed187k)

    di.setTimeout(1000000)
    res = di.initAdapter
    If res = 0 Then ' init Adapter is ok
    ' rack amd slot don't matter in case of MPI
    dc = New libnodave.daveConnection(di, 1, 1, 0)
    res = dc.connectPLC()
    If res = 0 Then
    Connection = True
    Label1.Text = "Connected " + IP
    End If
    End If
    End If
    End Sub

    Public Sub disconnectPLC()
    dc.disconnectPLC()
    MessageBox.Show("DisConnected " + IP, "DisConnected")
    End Sub
    Private Sub Timer1_Tick()
    Dim a As Byte

    If Connection Then res = dc.readBytes(libnodave.daveInputs, 0, 0, 1, buf)
    If res = 0 Then
    a = dc.getU8
    If IsBitSet(a, 0) Then
    Panel1.BackColor = Color.Lime
    Else
    Panel1.BackColor = Color.DarkGreen
    End If
    If IsBitSet(a, 1) Then
    Panel2.BackColor = Color.Lime
    Else
    Panel2.BackColor = Color.DarkGreen
    End If
    Else
    Label1.Text = "Read data. " + libnodave.daveStrerror(res)
    End If

    End Sub
    Public Function IsBitSet(ByVal InByte As Byte, ByVal Bit As Byte) As Boolean
    'Is a n'th bit in InByte 1 of not?
    IsBitSet = ((InByte And (2 ^ Bit)) > 0)
    End Function
    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
    disconnectPLC()

    End Sub

    Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
    connectPLC()

    End Sub


    End Class

    Danke
    Zitieren Zitieren Libnodave Siemens Logo 8  

  2. #2
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.197
    Danke
    926
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    Wo genau kommst Du denn nicht weiter?

    Bei der Verbindung zur LOGO müssen Rack und Slot beide 0 sein.

    Tip: Der Quellcode läßt sich besser lesen, wenn Du ihn im Forumbeitrag in CODE-Tags einfügst (der #-Button im Beitragseditor). Dann sieht er so aus:
    Code:
    Public Class Form1
    
        Public fds As libnodave.daveOSserialType
        Public di As libnodave.daveInterface
        Public dc As libnodave.daveConnection
        Public res As Integer
        Public buf(100) As Byte
        Public localMPI As Integer = 0
        Public rack As Integer = 0
        Public slot As Integer = 2
        Public plcMPI As Integer = 2
        Public Connection As Boolean = False
        Public IP As String = "192.168.46.166"
    
        Private Sub ConnectPLC()
            fds.rfd = libnodave.openSocket(102, IP)
            fds.wfd = fds.rfd
    
            If fds.rfd > 0 Then       ' if step 1 is ok
        di = New libnodave.daveInterface(fds, "IF1",0, libnodave.daveProtoISOTCP,libnodave.daveSpeed187k)
    
                di.setTimeout(1000000)
                res = di.initAdapter
                If res = 0 Then       ' init Adapter is ok
                    ' rack amd slot don't matter in case of MPI
                    dc = New libnodave.daveConnection(di, 1, 1, 0)
                    res = dc.connectPLC()
                    If res = 0 Then
                        Connection = True
                        Label1.Text = "Connected " + IP
                    End If
                End If
            End If
        End Sub
    
        Public Sub disconnectPLC()
            dc.disconnectPLC()
            MessageBox.Show("DisConnected " + IP, "DisConnected")
        End Sub
    Private Sub Timer1_Tick()
            Dim a As Byte
    
            If Connection Then res = dc.readBytes(libnodave.daveInputs, 0, 0, 1, buf)
            If res = 0 Then
                a = dc.getU8
                If IsBitSet(a, 0) Then
                    Panel1.BackColor = Color.Lime
                Else
                    Panel1.BackColor = Color.DarkGreen
                End If
                If IsBitSet(a, 1) Then
                    Panel2.BackColor = Color.Lime
                Else
                    Panel2.BackColor = Color.DarkGreen
                End If
            Else
                Label1.Text = "Read data. " + libnodave.daveStrerror(res)
            End If
    
        End Sub
    Public Function IsBitSet(ByVal InByte As Byte, ByVal Bit As Byte) As Boolean
            'Is a n'th bit in InByte 1 of not?
            IsBitSet = ((InByte And (2 ^ Bit)) > 0)
        End Function
     Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
            disconnectPLC()
    
        End Sub
    
        Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
            connectPLC()
    
        End Sub
        
      
    End Class
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  3. #3
    taurus1902 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    08.01.2015
    Beiträge
    9
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Wo genau muß ich Rack und Slot eintragen ? an welcher Stelle ?
    Als erstes müßte ich es schaffen eine Verbindung zur Logo herzustellen
    2 Schritt abfragen der ein und ausgänge
    3 Schritt Schalten der Merker

    aber ich habe keine ahnung wie ich das umsetzen soll.
    Meine vorstellung währe für die I/O Checkboxen und für die Merker buttons.
    Wenn ich das Programm Starte sollte automatisch die Verbindung zur Logo hergestellt werden.
    Wo oder besser wie fange ich da an ???

  4. #4
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.197
    Danke
    926
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    In der LOGO muß die Server-Verbindung eingestellt werden, siehe mal hier (Dein PC entspricht der S7-300 in dem Beispiel)

    In Deinem Programm ändere wie folgt, dann sollte der Connect funktionieren:
    Code:
        Public rack As Integer = 0
        Public slot As Integer = 0
        Public plcMPI As Integer = 2 'bei daveProtoISOTCP egal, ich nehme trotzdem immer 2
    
    '...
    
                    dc = New libnodave.daveConnection(di, plcMPI, rack, slot)
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  5. #5
    taurus1902 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    08.01.2015
    Beiträge
    9
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    ok das habe ich geändert. Danke schon mal
    aber wie bekomme ich jetzt die I/O angezeigt ?

  6. #6
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.197
    Danke
    926
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    Wie/wann wird denn Deine Sub Timer1_Tick() aufgerufen? Die sollte die Eingänge I1 bis I8 in einem Byte lesen und den Zustand von I1 und I2 als hellgrün/dunkelgrün irgendwo (Panel1, Panel2 ?) anzeigen.

    Hast Du Deinen Programmcode nicht selber geschrieben? (Wo hast Du den denn her?)

    Kommst Du schon bis zum erfolgreichen "Connect"?


    Adressübersetzung LOGO = LibNoDave
    * I1 ... I24 = E0.0 ... E2.7
    * Q1 ... Q16 = A0.0 ... A1.7
    * M1 ... M27 = M0.0 ... M3.2

    Ich habe keine Ahnung, ob man auch auf Analogeingänge zugreifen kann. Notfalls kann man die aber auf VM-Variablen mappen. Ich vermute, die werden dann von LibNoDave als DB1.DBx... angesprochen.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  7. #7
    Registriert seit
    19.08.2011
    Beiträge
    26
    Danke
    2
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Hi,

    Zitat Zitat von PN/DP Beitrag anzeigen
    Ich habe keine Ahnung, ob man auch auf Analogeingänge zugreifen kann. Harald
    Geht genauso, ab E-Byteposition 8 max. 32 Byte wortweise für die Rohwerte oder über korrespondierenden DB1.Offset1032..;

    was bei der Logo8 nicht mehr geht (im Vegleich zur Logo7) ist über Typgrenzen hinweg auszulesen, also mit einer Abfrage EB00..EB39 alle binären und analogen Eingänge,
    bzw. über DB1 auch alle Eingänge und Ausgänge auf einmal, dito für Ausgänge und Merker.

  8. #8
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.197
    Danke
    926
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    Ich habe noch nie mit einer LOGO kommuniziert, doch ich dachte bisher, daß man die Struktur/Belegung des als DB1 angesprochenen VM-Bereichs selber in der LogoSoft festlegen muß, d.h. daß es keinen automatisch korrespondierenden DB1 gibt
    Gibt es irgendwo eine Dokumentation darüber? Und über die Adressierung der Analogeingänge als EW8 ...? Und die Adressen der Netzvariablen?

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  9. #9
    Registriert seit
    02.01.2015
    Beiträge
    524
    Danke
    95
    Erhielt 109 Danke für 104 Beiträge

    Standard

    Hallo PN/DP,

    im Anhang ein Auszug aus der Online-Hilfe. Bitte beachten: die 0BA7 und 0BA8 haben unterschiedliche Bereiche.
    Angehängte Dateien Angehängte Dateien

  10. Folgender Benutzer sagt Danke zu GUNSAMS für den nützlichen Beitrag:

    PN/DP (12.01.2015)

  11. #10
    Registriert seit
    19.08.2011
    Beiträge
    26
    Danke
    2
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi,

    Zitat Zitat von PN/DP Beitrag anzeigen
    Gibt es irgendwo eine Dokumentation darüber? Und über die Adressierung der Analogeingänge als EW8 ...? Und die Adressen der Netzvariablen?
    oder auch online: http://www.automation.siemens.com/md...archengine=NEW
    Suche nach VM-Adressen, 1.Treffer.

  12. Folgender Benutzer sagt Danke zu egal für den nützlichen Beitrag:

    PN/DP (12.01.2015)

Ähnliche Themen

  1. Siemens LOGO, einfacher Timer - LOGO 230RC 6ED1 052-FB00-0BA1
    Von KroMa im Forum Sonstige Steuerungen
    Antworten: 26
    Letzter Beitrag: 31.01.2014, 14:58
  2. Antworten: 6
    Letzter Beitrag: 18.08.2013, 16:19
  3. Antworten: 0
    Letzter Beitrag: 08.05.2012, 10:04
  4. Antworten: 1
    Letzter Beitrag: 30.01.2012, 13:06
  5. Antworten: 11
    Letzter Beitrag: 16.12.2008, 12:16

Stichworte

Lesezeichen

Berechtigungen

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