-> Hier kostenlos registrieren
Hallo zusammen,
ich möchte in einem VB6-Programm mit Hilfe der libnodave-Bibliothek auf SPS-Daten zugreifen.
Als Protokoll möchte/muß ich S7online verwenden. Leider bringe ich keine Kommunikation zustande. :-?
Als Hardware habe ich eine PCU50 mit WinAC RTX (Soft-PLC).
Wenn ich die PG/PC-Schnittstelle auf S7ONLINE --> PC internal (local) einstelle funktioniert mein kleines Testprogramm.
Beim Umstellen der PG/PC-Schnittstelle auf Profibus geht es nicht mehr.
Ich muß die PG/PC-Schnittstelle aber auf S7ONLINE --> "Profibus" eingestellt lassen (wegen Visualisierung, Zugriff auf mehrere Steuerungen am Profibus,...)
Im Simatic Manager und für das HMI (ProTool und Transline) funktioniert die Einstellung PG/PC-Schnittstelle auf "Profibus".
Hier mein kleines Testprogramm:
daveInitAdapter und daveConnectPLC melden eigentlich keine Fehler (RetCode = 0)
daveWriteBits meldet Fehler -128
Hat jemand eine Idee, wie ich die Verbindung über Profibus mit S7online doch noch in Gang bringen kann?
Woher weiß die Verbindung eigentlich, zu welcher SPS ich Connecten möchte (z.B. über Profibusadresse ?)
Der S7-Manager ermittelt dies wohl aus der Hardwarekonfiguration vom aktuell angewählten Projekt, ... aber libnodave ?
Grüsse
Albert
ich möchte in einem VB6-Programm mit Hilfe der libnodave-Bibliothek auf SPS-Daten zugreifen.
Als Protokoll möchte/muß ich S7online verwenden. Leider bringe ich keine Kommunikation zustande. :-?
Als Hardware habe ich eine PCU50 mit WinAC RTX (Soft-PLC).
Wenn ich die PG/PC-Schnittstelle auf S7ONLINE --> PC internal (local) einstelle funktioniert mein kleines Testprogramm.
Beim Umstellen der PG/PC-Schnittstelle auf Profibus geht es nicht mehr.
Ich muß die PG/PC-Schnittstelle aber auf S7ONLINE --> "Profibus" eingestellt lassen (wegen Visualisierung, Zugriff auf mehrere Steuerungen am Profibus,...)
Im Simatic Manager und für das HMI (ProTool und Transline) funktioniert die Einstellung PG/PC-Schnittstelle auf "Profibus".
Hier mein kleines Testprogramm:
Code:
Sub Main()
Dim SPS_DB As Integer
Dim SPS_Byte As Integer
Dim SPS_Bit As Integer
Dim SPS_Status As Byte ' 0 oder 1 -> Wert auf den das Bit gesetzt wird
Dim RetCode As Long
Dim ph As Long
' --------------------------------------------------------------------------
' exemplarisch den Merker M987.1 setzen
'SPS_DB = 900
SPS_Byte = 987
SPS_Bit = 1
SPS_Status = 1 ' Status, auf den das Bit gesetzt wird
' Verbindung herstellen
ph = openS7online("/S7ONLINE", Form1.hWnd)
If ph > 0 Then
[INDENT]hInterface = daveNewInterface(ph, ph, "IF1", 0, daveProtoS7online, daveSpeed187k)
RetCode = daveInitAdapter(hInterface)
If RetCode = daveResOK Then
[INDENT]hConnection = daveNewConnection(hInterface, 2, 0, 0)
RetCode = daveConnectPLC(hConnection)
If RetCode = 0 Then
[INDENT]' wenn Verbindung OK, Bit setzen oder ruecksetzen
' RetCode = daveWriteBits(hConnection, daveDB, SPS_DB, SPS_Byte * 8 + SPS_Bit, 1, SPS_Status)
RetCode = daveWriteBits(hConnection, daveFlags, 0, SPS_Byte * 8 + SPS_Bit, 1, SPS_Status)
' Verbindung ordentlich wieder abbauen -> sonst Problem
RetCode = daveDisconnectPLC(hConnection)
[/INDENT]End If
RetCode = daveDisconnectAdapter(hInterface)
[/INDENT]End If
RetCode = closeS7online(ph)
[/INDENT]End If
End Sub
daveInitAdapter und daveConnectPLC melden eigentlich keine Fehler (RetCode = 0)
daveWriteBits meldet Fehler -128
Hat jemand eine Idee, wie ich die Verbindung über Profibus mit S7online doch noch in Gang bringen kann?
Woher weiß die Verbindung eigentlich, zu welcher SPS ich Connecten möchte (z.B. über Profibusadresse ?)
Der S7-Manager ermittelt dies wohl aus der Hardwarekonfiguration vom aktuell angewählten Projekt, ... aber libnodave ?
Grüsse
Albert
Zuletzt bearbeitet: