Step 7 Verbindung zur CPU über ein Programm

andyv2016

Level-2
Beiträge
25
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,

ich bin auf der Suche nach einem Programm, mit dem ich Daten von einer S7-317 CPU PN/DP austauschen kann.
Durch meine Recherchen bin ich auf libnodave, NetToPlcSim und snap7 gestoßen.
Erste Tests mit libnodave haben leider nicht funktioniert, da ich erst jetzt gelesen habe, dass PLCSim offen sein muss.
Stimmt das?
Gibt es alternative Möglichkeiten?
Eventuell sogar welche, die ohne plcsim funktionieren?

Mfg
Andy
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Harald,

die Beispiele sind mir bekannt.
Ich möchte über Profinet Daten austauschen.
Dafür muss ich dann das auskommentieren:

Rem ph = openSocket(102, peer$) ' for ISO over TCP

Über das Delphi Beispiel habe ich ebenfalls alle Verbindungsmöglichkeiten getestet.
Muss man für Profinet noch etwas



mfg
Andy
 
Hallo Andy,

- Wer oder was soll mit einer 317-2 PN/DP Daten austauschen?
- Was hat bei Deinen Tests nicht funktioniert? Wie hat sich das "nicht funktionieren" geäußert?
- Wo mußt Du etwas auskommentieren?
- Wie sieht Dein kompletter Quellcode zum Verbindungsaufbau aus?

Hast Du mal "als erster Test" die in Libnodave enthaltene testISO_TCP.exe ausprobiert?
Wie der Test geht ist in dem von mir verlinkten FAQ in den 2 Beiträgen vor meinem EXCEL-Beispiel erklärt (mit Bildern)
Welche Fehlermeldungen erhältst Du da?
In testISO_TCP.c findest Du den c-Quelltext des Testprogramms - darin kannst Du sehen wie der Verbindungsaufbau Schritt für Schritt ablaufen muß und wie man dann Variablen liest.
Beispiele für den Verbindungsaufbau in VB/VBA findest Du in der FAQ in Tankanzeigen_mit_Libnodave.xls.vba.txt


So kannst Du mit VBA eine Verbindung zu einer 317-2 PN/DP aufbauen:
Code:
Private Function connectMy317(ByRef ph As Long, ByRef di As Long, ByRef dc As Long) As Long
Dim res, resmb, peer$, MpiPpi, Rack, slot
ph = 0: di = 0: dc = 0
connectMy317 = -1
res = -1

[COLOR="#008000"]' hier die IP-Adresse der 317 PLC eintragen:[/COLOR]
peer$ = "192.168.0.1"
MpiPpi = 2: Rack = 0: slot = 2 [COLOR="#008000"]'(MpiPpi wird nicht genutzt)[/COLOR]

[COLOR="#008000"]' Verbindung zur PLC aufbauen[/COLOR]
ph = openSocket(102, peer$)
If (ph > 0) Then
    di = daveNewInterface(ph, ph, "IF1", 0, daveProtoISOTCP, daveSpeed187k)
    res = daveInitAdapter(di)
    If res = 0 Then
        dc = daveNewConnection(di, MpiPpi, Rack, slot)
        res = daveConnectPLC(dc)
        If res = 0 Then [COLOR="#008000"]' Verbindung zu PLC erfolgreich aufgebaut[/COLOR]
            connectMy317 = 0
        Else [COLOR="#008000"]' Fehler daveNewConnection() + daveConnectPLC()[/COLOR]
            resmb = MsgBox("Keine Verbindung zur 317-PLC!" & Chr(13) _
                         & "(" & peer$ & ":102, Rack 0, Slot " & slot & ")", vbExclamation, "Fehler bei Verbindungsaufbau")
        End If
    Else [COLOR="#008000"]' Fehler daveNewInterface() + daveInitAdapter()[/COLOR]
        resmb = MsgBox("Fehler beim Initialisieren TCP-Interface!", vbExclamation, "Fehler bei Verbindungsaufbau")
    End If
Else [COLOR="#008000"]' Fehler openSocket()[/COLOR]
    resmb = MsgBox("Fehler beim Öffnen TCP-Socket!" & Chr(13) _
                 & "(" & peer$ & ":102)", vbExclamation, "Fehler bei Verbindungsaufbau")
End If
End Function

Harald
 
Hallo Harald,

vielen Dank für die ausführlichen Informationen.
Ich werde versuchen am Wochenende dies testen und gebe dann Bescheid :)
 
Zurück
Oben