- Beiträge
- 15.556
- Reaktionspunkte
- 4.182
-> Hier kostenlos registrieren
Leider funktioniert ja im Moment die Forensuche nicht (zumindest bei mit), daher stelle ich mal die Frage.
Ich habe 2 VM eine beherbergt ein Twincat, die zweite ein Visual Studio.
Nun würde ich gerne mit einem Beispiel von Beckhoff Daten aus der Sps auslesen.
Beide VM sind im Netz, haben IP-Adressen und können sich gegenseitig anpingen.
Das Programm in Vb ist sehr übersichtlich:
Das zugehörige Programm in Twincat ist noch einfacher:
Die Variable wird hochgezählt, die SPS läuft also korrekt.
Ich kann mit VB eine Verbindung herstellen, tcADS bringt intern "isConnectet := True", allerdings macht sie das auch, wenn ich dei Netzwerkverbindung der Twincat-Vm deaktiviere, das macht mich schon mal stutzig.
Wenn ich dann ein tcADS.Read ausführe, bekomme ich ein Timeout, in jedem Fall, also mit oder ohne Verbindung.
Ich habe auf der Visual Studio-VM die ADS-Connection-Library von Beckhoff installiert, muß ich auf der Twincat-VM auch noch etwas einrichten?
Ich habe 2 VM eine beherbergt ein Twincat, die zweite ein Visual Studio.
Nun würde ich gerne mit einem Beispiel von Beckhoff Daten aus der Sps auslesen.
Beide VM sind im Netz, haben IP-Adressen und können sich gegenseitig anpingen.
Das Programm in Vb ist sehr übersichtlich:
Code:
[COLOR=#1b39f5]Imports[/COLOR] TwinCAT.Ads
[COLOR=#1b39f5]Imports[/COLOR] System.IO
[COLOR=#1b39f5]PublicClass[COLOR=#000000] Form1[/COLOR][/COLOR]
[COLOR=#1b39f5]Private[/COLOR] tcADS [COLOR=#1b39f5]As[/COLOR] TcAdsClient
[COLOR=#1b39f5]Private[/COLOR] [COLOR=#1b39f5]Sub[/COLOR] Button1_Click([COLOR=#1b39f5]ByVal[/COLOR] sender [COLOR=#1b39f5]As[/COLOR] System.Object, [COLOR=#1b39f5]ByVal[/COLOR] e [COLOR=#1b39f5]As[/COLOR] System.EventArgs) [COLOR=#1b39f5]Handles[/COLOR] Button1.Click
tcADS = [COLOR=#1b39f5]New[/COLOR] TcAdsClient
tcADS.Connect([COLOR=#bb2120]"192.168.101.68.1.1"[/COLOR], 801)
[COLOR=#1b39f5]EndSub[/COLOR]
[COLOR=#1b39f5]
[/COLOR]
[COLOR=#1b39f5]Private[/COLOR] [COLOR=#1b39f5]Sub[/COLOR] Button2_Click([COLOR=#1b39f5]ByVal[/COLOR] sender [COLOR=#1b39f5]As[/COLOR] System.Object, [COLOR=#1b39f5]ByVal[/COLOR] e [COLOR=#1b39f5]As[/COLOR] System.EventArgs) [COLOR=#1b39f5]Handles[/COLOR] Button2.Click
tcADS.Dispose()
[COLOR=#1b39f5]EndSub[/COLOR]
[COLOR=#1b39f5]
[/COLOR]
[COLOR=#1b39f5]Private[/COLOR] [COLOR=#1b39f5]Sub[/COLOR] Button3_Click([COLOR=#1b39f5]ByVal[/COLOR] sender [COLOR=#1b39f5]As[/COLOR] System.Object, [COLOR=#1b39f5]ByVal[/COLOR] e [COLOR=#1b39f5]As[/COLOR] System.EventArgs) [COLOR=#1b39f5]Handles[/COLOR] Button3.Click
[COLOR=#008f2a]'creates a stream with a length od 4 byte[/COLOR]
[COLOR=#1b39f5]Dim[/COLOR] ds = [COLOR=#1b39f5]New[/COLOR] AdsStream(4)
[COLOR=#1b39f5]Dim[/COLOR] br = [COLOR=#1b39f5]New[/COLOR] BinaryReader(ds)
[COLOR=#008f2a]'reads a DINT from PLC[/COLOR]
tcADS.Read(&H4020, 0, ds)
ds.Position = 0
TextBox1.Text = br.ReadInt32().ToString
[COLOR=#1b39f5]EndSub[/COLOR]
[COLOR=#1b39f5]
[/COLOR]
[COLOR=#1b39f5]Private[/COLOR] [COLOR=#1b39f5]Sub[/COLOR] Button4_Click([COLOR=#1b39f5]ByVal[/COLOR] sender [COLOR=#1b39f5]As[/COLOR] System.Object, [COLOR=#1b39f5]ByVal[/COLOR] e [COLOR=#1b39f5]As[/COLOR] System.EventArgs) [COLOR=#1b39f5]Handles[/COLOR] Button4.Click
[COLOR=#008f2a]'creates a stream with a length od 4 byte[/COLOR]
[COLOR=#1b39f5]Dim[/COLOR] ds = [COLOR=#1b39f5]New[/COLOR] AdsStream(4)
[COLOR=#1b39f5]Dim[/COLOR] bw = [COLOR=#1b39f5]New[/COLOR] BinaryWriter(ds)
ds.Position = 0
bw.Write([COLOR=#1b39f5]New[/COLOR] [COLOR=#1b39f5]Integer[/COLOR] = 100)
[COLOR=#008f2a]'writes DINT to PLC[/COLOR]
tcADS.Write(&H4020, 0, ds)
[COLOR=#1b39f5]EndSub[/COLOR]
[COLOR=#1b39f5]EndClass[/COLOR]
Das zugehörige Programm in Twincat ist noch einfacher:
Code:
PROGRAM Main
VAR
ADSTest AT%MD0 : INT;
END_VAR
ADSTest := ADSTest + 1;
Die Variable wird hochgezählt, die SPS läuft also korrekt.
Ich kann mit VB eine Verbindung herstellen, tcADS bringt intern "isConnectet := True", allerdings macht sie das auch, wenn ich dei Netzwerkverbindung der Twincat-Vm deaktiviere, das macht mich schon mal stutzig.
Wenn ich dann ein tcADS.Read ausführe, bekomme ich ein Timeout, in jedem Fall, also mit oder ohne Verbindung.
Ich habe auf der Visual Studio-VM die ADS-Connection-Library von Beckhoff installiert, muß ich auf der Twincat-VM auch noch etwas einrichten?