S7 200 mit Netlink (? Lan) an PC

Senator42

Level-1
Beiträge
927
Reaktionspunkte
80
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Gemeinde,

ich müsste eine S7 200 mit Netlink mit einem PC verbinden um z.b. ein paar Worte im V speicher zu ändern.
(Mit Netlink Lite und S7 300, geht es bereits, eigenes kleines VB-Programm).
(Mit VB und Libnodave und einem PPI-Adapter komme ich auch an die S7 200)

Aber per Lan an die 200, muss ich dafür echt den Netlink pro für ca. 550 Euro kaufen?
Gehts günstiger? (S7 224 mit ein paar I/O sonst nix)

gruss
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das sollte doch auch mit den NetLink lite gehen.
habe ich gestern ausprobiert.
man kann das PPI statt MPI einstellen. jedoch kommt weder Mikrowin, noch LibNoDave online.
habs mit verschiedenen einstellungen probiert.
(zur s7-300 mit MPI geht alles.)

kann eigentlich LibNoDave mit einem USB/PPI zur S7-200 connecten?

anbei die Verbindungsversuche

Code:
Public Const CONNECTION_TYP_AS511 = 0
Public Const CONNECTION_TYP_MPI = 1
Public Const CONNECTION_TYP_MPI_IBH = 2
Public Const CONNECTION_TYP_PPI_IBH = 3
Public Const CONNECTION_TYP_PPI = 4

...
Function StartUp() As String
Dim Verbindung As String

    Connected = False
    
    Verbindung = "COM" + CStr(ComPortNr)
    ConnTyp = CONNECTION_TYP_PPI
    If TEST_S7_300 Then
        ConnTyp = CONNECTION_TYP_PPI_IBH ' geht nicht
        ConnTyp = CONNECTION_TYP_MPI_IBH ' geht
    End If
    
    If ONLINEMODE Then
        StartUp = Connect(ConnTyp, Verbindung)
    End If
    
End Function


Function Connect(iTyp As Integer, Verbindung As String) As String
Dim RetCode As Long
Dim l As Long

    Select Case iTyp
    Case 0:
        ' here MyParam have to edit
        MyParam.sIP = Verbindung ' "COM1"
        MyParam.iDaveCOMPORT = Right(Verbindung, 1) ' 1
        MyParam.iDaveProtoll = daveProtoAS511
        MyParam.iDaveLocaleMPI = 0
        MyParam.iDaveSpeed = daveSpeed187k
        MyParam.iDaveMPI = 2
        MyParam.iDaveRACK = 0
        MyParam.iDaveSLOT = 0
    Case 1:
        ' here MyParam have to edit
        MyParam.sIP = Verbindung ' "192.168.0.62"
        MyParam.sIP = "192.168.0.62"
        MyParam.iPort = 1099
        MyParam.iDaveProtoll = daveProtoMPI
        MyParam.iDaveLocaleMPI = 2
        MyParam.iDaveSpeed = daveSpeed187k
        MyParam.iDaveMPI = 2
        MyParam.iDaveRACK = 0
        MyParam.iDaveSLOT = 0
    Case 2:
        ' here MyParam complet
        MyParam.sIP = Verbindung ' "192.168.0.62"
        MyParam.sIP = "192.168.0.62"
        MyParam.iPort = 1099
        MyParam.iDaveProtoll = daveProtoMPI_IBH
        MyParam.iDaveLocaleMPI = 2
        MyParam.iDaveSpeed = daveSpeed187k
        MyParam.iDaveMPI = 2
        MyParam.iDaveRACK = 0
        MyParam.iDaveSLOT = 0
    Case 3:
        ' here MyParam have to edit
        MyParam.sIP = Verbindung ' "192.168.0.62"
        MyParam.sIP = "192.168.0.62"
        MyParam.iPort = 1099
        MyParam.iDaveProtoll = daveProtoPPI_IBH
        MyParam.iDaveLocaleMPI = 2
        MyParam.iDaveSpeed = daveSpeed19k
        MyParam.iDaveMPI = 2
        MyParam.iDaveRACK = 0
        MyParam.iDaveSLOT = 0
        
    Case 4:
        ' here MyParam have to edit
        MyParam.sIP = Verbindung ' "COM1"
        MyParam.iDaveCOMPORT = ComPortNr ' Right(Verbindung, 1) ' 1
        MyParam.iDaveProtoll = daveProtoPPI
'            MyParam.iDaveProtoll = daveSpeed19k
        MyParam.iDaveLocaleMPI = 0
        MyParam.iDaveSpeed = daveSpeed9k
        MyParam.iDaveMPI = 2
        MyParam.iDaveRACK = 0
        MyParam.iDaveSLOT = 0
    End Select

    DoEvents
    
    
    If iTyp = 0 Or iTyp = 4 Then ' serial AS511, PPI
        hSocket = setPort("COM" + CStr(MyParam.iDaveCOMPORT), "9600", Asc("E"))
    Else
        '    hSocket = openSocket(102, S7_IP) ' for ISO over TCP, siehe Doku zu libnodave
        ' 102 geht nicht bei NetLink Lite
        hSocket = openSocket(MyParam.iPort, MyParam.sIP)
    End If
    
    If hSocket > 0 Then
        
        hInterface = daveNewInterface(hSocket, hSocket, "Roberts_Verbindung", MyParam.iDaveLocaleMPI, MyParam.iDaveProtoll, MyParam.iDaveSpeed)
        
        l = daveGetTimeout(hInterface)
        Debug.Print "daveGetTimeout a "; l
        Call daveSetTimeout(hInterface, 2 * l)
        l = daveGetTimeout(hInterface)
        Debug.Print "daveGetTimeout b "; l
        
'        RetCode = daveInitAdapter(hInterface)
        RetCode = daveResOK
        If RetCode = daveResOK Then
       
'            lblConnect.Caption = "connection to " & MyParam.sDaveProtoll & " Adapter ok"
'            lblConnect.BackColor = vbYellow
            DoEvents
            
            hConnection = daveNewConnection(hInterface, MyParam.iDaveMPI, MyParam.iDaveRACK, MyParam.iDaveSLOT)
            
            RetCode = daveConnectPLC(hConnection)
            If RetCode = daveResOK Then
                Connect = "OK"
                Connected = True
            Else
                Connect = "Error Connection"
            End If
                    
        End If
    Else
        Connect = "Error Protokoll / Socket / ComPort"
    End If
    
End Function
 
SPS Daten zum PC senden über eine Socket Schnittstelle aber wie???Hallo zusammen,ich hab ein kleines Problem, da komme ich irgendwie nicht weiter. Ich möchte mit C++ eine TCP Socket Schnittstelle programmieren, die mit einer CP 343-1 von Siemens kommuniziert soll. Das Problem ist das ich nicht weiß wie ich das Protokoll verarbeiten soll, da Siemens keine Anleitung für die Socket Schnittstelle zur Verfügung stellt. Es wird immer von den Send\Recv und fetch\write Bausteinen gesprochen.Habt Ihr eine Idee wie ich das angehen soll?Würde mich über eine Antwort freuen. Vielen Dank.
 
Ich weiß das es mit Libnodave geht, dies ist allerdings eine nicht kommerzielle Bibliothek eines Programmierers.
Die muss ich mit C++ machen :-(
 
Zurück
Oben