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

Ergebnis 1 bis 8 von 8

Thema: Zugriff auf Twincat per ADS und Visual Basic 2008

  1. #1
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.263
    Danke
    537
    Erhielt 2.708 Danke für 1.957 Beiträge

    Standard


    Zuviel Werbung?
    -> 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:

    Code:
    Imports TwinCAT.Ads
    Imports System.IO
    
    
    PublicClass Form1
        Private tcADS As TcAdsClient
    
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            tcADS = New TcAdsClient
            tcADS.Connect("192.168.101.68.1.1", 801)
    EndSub
    
    
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            tcADS.Dispose()
    EndSub
    
    
        Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    'creates a stream with a length od 4 byte
            Dim ds = New AdsStream(4)
            Dim br = New BinaryReader(ds)
    
    
    'reads a DINT from PLC
            tcADS.Read(&H4020, 0, ds)
            ds.Position = 0
            TextBox1.Text = br.ReadInt32().ToString
    EndSub
    
    
        Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
    'creates a stream with a length od 4 byte
            Dim ds = New AdsStream(4)
            Dim bw = New BinaryWriter(ds)
    
    
            ds.Position = 0
            bw.Write(New Integer = 100)
    
    
    'writes DINT to PLC
            tcADS.Write(&H4020, 0, ds)
    EndSub
    EndClass
    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?
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal
    Zitieren Zitieren Zugriff auf Twincat per ADS und Visual Basic 2008  

  2. #2
    Avatar von Ralle
    Ralle ist offline Super-Moderator
    Themenstarter
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.263
    Danke
    537
    Erhielt 2.708 Danke für 1.957 Beiträge

    Standard

    Update: Die erstelle VB-Exe funktioniert zumindest lokal auf der Beckhoff-VM.

    Update: Lokal funktioniert Read, Write schreibt immer 0, nicht 100 ??? --> funktioniert jetzt, über Codeänderung

    Code:
    Dim Wert = NewInteger
    
    
            ds.Position = 0
            Wert = 100
            bw.Write(Wert)
    
    Geändert von Ralle (03.11.2011 um 10:49 Uhr)
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  3. #3
    Registriert seit
    14.08.2004
    Beiträge
    824
    Danke
    45
    Erhielt 73 Danke für 66 Beiträge

    Standard

    Du kannst den Status von TwinCat abfragen und das ist auch notwendig. Du kannst nämlich eine Verbindung aufbauen, selbst, wenn TwinCat nicht im Run-Status ist, bekommst dann aber einen Timeout beim Lesen oder Schreiben.

    Gibt es einen Lese- oder Schreib-Timeout, solltest du per Exception-Handling versuchen, alle Verbindungen wieder abzuwickeln, da ansonsten sich sowohl im Client, als auch in Twincat Ressourcen blockiert werden, was sich in einer höheren CPU-Auslastung äussert, die nur durch Reboot zu beseitigen ist. Das war der Grund, warum ich alle Kopplungen zu Variablen in einer Liste verwaltet hatte, so dass ich bei einem Timeout, die Verbindung automatisiert erst ab- und dann wieder aufbauen konnte. Ich hatte mal hier dazu Code gepostet, dazu bedarf es aber der Suchfunktion

  4. #4
    Avatar von Ralle
    Ralle ist offline Super-Moderator
    Themenstarter
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.263
    Danke
    537
    Erhielt 2.708 Danke für 1.957 Beiträge

    Standard

    @drfunfrock
    Danke, für die Rückmeldung, aber im Moment gelingt es überhaupt nur lokal per VB2008 und ADS auf die SPS zuzugreifen.
    Geht es denn überhaupt über das Netzwerk und wenn ja, muß man dafür extra etwas einrichten?
    Ich soll später eine zweite Beckoff-SPS ankoppeln und dann per ADS Daten austauschen, geht das dann auch nicht?
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  5. #5
    Registriert seit
    03.11.2011
    Beiträge
    1
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Moin,

    soweit ich weis muss der Gateway (bei Dir wahrscheinlich der Host-Rechner d. die beiden VMs "beherbergt")
    die Routen zu den ADS-Teilnehmer kennen.

    Siehe auch:

    http://infosys.beckhoff.com/content/1031/tcremoteaccess/html/tcremoteaccess_sample_adsroutingviagatewaypc.html?id=11399

    (Falls der Link nicht richtig funktioniert: Auf der Entsprechend Seite unter "TwinCat Connectivity / Fernwartung /Beispiel/ ADS-Routing via Gateway")

    Grüsse

  6. #6
    Avatar von Ralle
    Ralle ist offline Super-Moderator
    Themenstarter
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.263
    Danke
    537
    Erhielt 2.708 Danke für 1.957 Beiträge

    Standard

    @Nordpol

    Yep, so ist es, das hatte ich mit fast schon gedacht. Sowohl im Twincat, als auch auf dem PC mit dem VB2008-Programm muß die Route eingetragen werden. Dazu muß in einem Verzeichnis, das mit der ADS-Connection-Library erstellt wird (bei mir C:\Programme\Beckhoff\TwinCAT ADS Communication Library\ADS Api\TcAdsDll) die Datei TcAmsRemoteMgr.exe aufgerufen werden.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  7. #7
    Registriert seit
    14.08.2004
    Beiträge
    824
    Danke
    45
    Erhielt 73 Danke für 66 Beiträge

    Standard

    Schick mir mal eine PM und du kannst etwas VB-Code bekommen willst, der GUI und Logik trennt, für eigenen Code. Weil meiner ist auf Polling basierend, gibt aber eine Idee. Das Forum macht bei 10000 Zeichen schluss. Ich hab jetzt keine Lust, das zu trennen.
    Geändert von drfunfrock (03.11.2011 um 20:05 Uhr)

  8. #8
    Registriert seit
    20.10.2010
    Beiträge
    1
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo, ich schreibe gerade eine C++ Anwendung die von einem PC aus übers Internet Variabelen aus einen BC9000 / BX9000 auslesen soll.
    Für Testzwecke habe ich alles in meinem Lokalen Netzwerk getestet. Funktioniert soweit super.
    Doch leider habe ich Problem ein Verbindung übers Internet einzurichten. Habt ihr da Erfahrung ?
    Habe mir bei Dyndns einen Eintrag gemacht den habe ich in meiner FritzBox eingerichtet und ein Portforwarding auf die TwinCat Kommunikation Ports gemacht. (BF01,BF02,BF03)

    Ich habe ein Problem mit dem Einrichten der Routen und was ich als AMSNetID in meinem Tool angeben muss.

    Vielen Dank für jeden Beitrag

Ähnliche Themen

  1. ADS Variablen Zugriff - Visual Basic
    Von wolfi999 im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 28.03.2011, 17:34
  2. Libnodave und Visual Basic 2008
    Von Hocheck im Forum Hochsprachen - OPC
    Antworten: 27
    Letzter Beitrag: 22.12.2010, 21:39
  3. Antworten: 3
    Letzter Beitrag: 05.08.2010, 15:24
  4. S7 - 300 verbindung mit Visual Basic 2008
    Von Magon im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 17.06.2010, 15:06
  5. Beckhoff TwinCAT PLC (AdsOcx) und Visual Basic 6
    Von borsti87 im Forum Sonstige Steuerungen
    Antworten: 3
    Letzter Beitrag: 29.07.2007, 17:46

Lesezeichen

Berechtigungen

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