Beckhoff TwinCat ADS OCX und VB.net

using System.IO, TwinCAT.Ads

das habe ich schon mal probiert wird aber von VB.net nicht anerkannt...

die lösung habe ich durch probieren gefunden in dem ich anstelle von using Imports verwendet habe...

kann es sein das sich von den beispielen einiges zu meiner version unterscheidet...

auch weisen die ; am ende der befehlszeilen auf C++ Code hin....

Ich hab mir das schonmal angeschaut allerdings sind die letzten beiden Files neu... entweder bin ich echt zu doof dieses system zu durchkämmen oder mein rechner will einfach net das ich finde wonach ich suche...

mfg
parallax
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Beispiele sind meistens in C# geschrieben. Da ich aber mind. schon 15Programmiersprachen hinter mir habe, war das für mich kein Problem.

Ich rate dir, wenn du damit durch bist, dass Buch durchzulesen und VB langsam zu lernen. Die Hilfe in VB ist auch nicht so schlecht. Aber wenn man das noch nie gemacht hatr, rechne ich mit 3 Wochen Lehrzeit.
 
using System.IO, TwinCAT.Ads;

This enables access to the types defined in TwinCAT.Ads without including the name of the namespace. The class TcAdsClient is the core of the TwinCAT.Ads class library and enables the user to communicate with an ads device. To begin with an instance of the class must be created. Then a connection to the ADS device is established by means of the Connect method.
Establish a connection to an ADS device:
TcAdsClient tcAds = new TcAdsClient();
tcAds.Connect("172.16.3.217.1.1",801);

hier fangen meine probleme schon mal an...

ok von meinem C++ Wissen her muss ich am anfang erst mal das was ich brauche einbinden

laut dieser Anleitung geht das mit
using System.IO, TwinCAT.Ads;
allerdings ist das schon das erste was bei mir nicht funktioniert

using wird unterringelt also verwende ich Imports...
das wird angenommen und läuft

dann als nächstes

TcAdsClient tcAds = new TcAdsClient();

ich verstehe nicht wozu diese befehl dient, soweit ich nun gelernt hab wird ein neues objekt mit dem namen
tcAds erstellt... allerdings wenn ich diesen befehl kopiere und einfüge wird schon der nächste fehler ausgegeben
nämlich das irgendetwas mit TcAdsClient nicht stimmt...

und somit stecke ich schon hier fest...

mfg
Parallax
 
hm ok hab zu früh geantwortet.. wenn ich das mit dem Connect hinbekommen würde wäre ich ja schon viel weiter...

wie lauten den die anweisungen für VB.net

oder sind die wie ich es mir schon letzte woche gedacht habe auf VB.net nicht verfügbar

mfg
parallax
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Sorry das ich dich jetzt damit belästigen muss aber das is im Moment wohl das einzige was ich machen kann....

ich habe ein neues Projekt erstellt und zeig dir mal den Quellcode bis jetzt:

Imports system.io, TwinCat.Ads 'Einbinden des TwinCad.Ads.dll verweises

Public Class frmTest

Dim tcAds as New TcAdsClient 'Objektvar mit dem Komischen TcAdsdings

Private Sub frmTest_Load(bla bla bla)

tcAds.Connect("127.255.255.1.1.1",301) 'verbinden mit lokalen Rechner und port der zusätzlichen Task (301)

End Sub
End Class

leider kann ich dir den Code nicht so Posten da ich am Inet PC kein VB hab und am VB rechner kein Inet

so das ganze schaut für mich etz mal logisch aus... habe ich bis hier schon mal nen fehler gemacht??

mfg
Parallax

PS: mei chef meint wenn des klappt wirst du mal zum Kaffetrinken eingeladen^^
 
So das reicht, um einen Connect hinzubekommen:

Code:
Imports TwinCAT.Ads

Dim tcADS As TcAdsClient
tcADS = New TcAdsClient()
tcADS.Synchronize = True
tcADS.Timeout = 1000
tcADS.Connect(ADSAdress, ADSPort)
Anschliessend kannst du eine Var so connecten:

Code:
handle = tcADS.CreateVariableHandle(VarPath)
VarPath hat immer einen Punkt voraus. Z.B. ".GlobalerZaehler"

Daher alle globalen Var müssen einem Punkt vorraus bekommen.


Den Code packst du in die Eventroutine zu einem Button.
 
Zuletzt bearbeitet:
hey du bist mein persönlicher messias...

also das mit dem Objekt versteh ich mittlerweile...

frage 1: für was is genau das syncro gut bzw was tut es...

timeout erklärt sich von selbst... denk ich zumindest
naja connect is klar

so das mit dem CreateVariableHandle is doch sowas wie das auslesen per symbolic beim alten Call ads. bla prinzip...

gibt es auch eine möglichkeit per Group Offset u.ä. darauf zuzugreifen da doch bei der art und weise der Variablen name in TwinCat net verändert werden darf....

außerdem weiß ich nimmer wie man darauf zugegriffen hat....
war des net mit Task1.Ausgänge.Var1 oder so ähnlich??

warum ist das disconnecten so wichtig... also am besten ich packs bei Form unload ein weil dann werden ja alle verbindungen getrennt oder irre ich mich da irgendwie??

übrigens kaffeewasser kocht schon...
 
War gut geholfen zu haben. Diese Forum ist eben auch für mich Gold wert. Die Hilfen sind hier unschätzbar.

Zu Frage 1) Ich weiss nicht mehr wozu das gut ist. -> Les die Doku Heute Abend im Bett. :)

Zu Frage 2) Ja die Möglichkeit gibt, siehe Bsp. in der Beckhoff-Doku. Ich ziehe das hier vor, weil wir keine statischen Anlagen haben und Änderungen einfach für mich zu machen sind. Unsere grosse Anlage fährt am Anschlag des Machbaren und jeder Start vom TwinCat-SystemManager kostet mich 5min, um den Offset herauszubekommen. Dh. ich ziehe diese Methode vor.

Zu Frage 3) Die habe ich nicht verstanden

Zu Frage 4) Probier mal und connecte/disconnecte dich vielfach zur SpS mit mehreren Var auf die SPS und das ohne den Disconnect für die Vars. Wenn du dann den SystemManager startest und auf die RealTime-Settings schaust, bekommst du die CPU-Belastung heraus. Die steigt dann nämlich kontinuierlich.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Code:
Imports system.io, TwinCat.Ads




Public Class frmTest
    Dim tcAds As New TcAdsClient()

    Dim varTest As Integer



    Private Sub frmTest_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        tcAds.Synchronize = True
        tcAds.Timeout = 1000
        tcAds.Connect("127.255.255.1.1.1", 301)


        varTest = tcAds.CreateVariableHandle("Task1.Eingänge.Test")







    End Sub

    Private Sub cmdArgh_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdArgh.Click

        Me.txtVar1.Text = varTest


    End Sub
End Class


so etz hab ich den Code mal daraufhin erweitert...
nun sagt er mir bei dem punkte timeout "port not opend"

hm.... mein twincat system läuft... kann ich die fehlernummer 0x748 irgendwo bei beckhoff nachlesen??
 
hm

also das ganze ist etwas mystheriös....

das programm is bis zum tcAds.connect schon mal gelaufen...

und nun sagt er mir der Port sei nicht geöffnet

Das TwinCat und mein Programm laufen am selben Rechner...

Die NetId ist also die Lokale....

Es wurden in einer Testconfig nur eine Task und eine Variable angelegt...

über ScopeView kann ich diese ja auslesen....

nur des VB bringt mir den Fehler bei .Timeout = 1000 Port is not open

ich verstehs net...
wenn ich mit der geschwindigkeit weiterarbeite bin ich am ende der Woche den auftrag los... langsam bin ich dabei zu überlegen das ganze einfach in VB6 zu schreiben weil da weiß ich das es geht...

mfg
Parallax
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Nicht das ich davon soviel Ahnung hab, aber vielleicht wurde der Port nicht korrekt geschlossen und ist damit belegt, bzw. wird als nicht offen bezeichnet?
 
Wenn Twincat auf dem lokalen PC läuft, dann schalte mit dem Systemmanager Twincat in den Runmodus. Lade das Programm und starte es (2 verschiedene Vorgänge). Dann gebe keine Adresse an dh. nur "" und gebe Port 801 an.

Das sollte klappen.
 
Ich roll das hier mal auf.

Nachdem ich mich jetzt vergeblich an der OCX versucht habe, dachte ich, ich bau einfach die .Net in mein VB2008 ein.

Bekomme jetzt den selben Fehler wie Parallax.

Wenn ich über die OCX connecte auf port 801 läuft das Ding, mit der .Net nicht. Hat jemand dafür mittlerweile eine Lösung?

EDIT:
System = RUN
PLC = RUN
 
Zuletzt bearbeitet:
Zurück
Oben