Visualisierungstest Twincat 2/ C#

spiegelkabinett

Level-1
Beiträge
17
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

Ich will mit einer Visualisierung einen Wert aus meine PLC über C# anzeigen.

Dazu nutze ich den folgenden Code, jedoch findet er mein PLC nicht. ich habe die Refernz geladen und auch den Connect spezifiziert.
Die PLC ist gestartet und das Programm läuft ohne probleme.

Was übersehe ich?
Vielen dank für euere Hilfe!!!

GRuß
Hendrik
Code:
using System.Windows.Forms;
using TwinCAT.Ads;
using System.IO;


namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    { 
        private TcAdsClient TcClient = new TcAdsClient();
        private int AIN0;
        private int hAIN0;

    
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            TcClient.Connect("5.34.153.16.1.1",801);
            Handle();
            ReadALL();
        }
        private void Handle()
        {   try
            {
                AIN0 = TcClient.CreateVariableHandle("MAIN.Var01_Berechnet");
            }
            catch (AdsException ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        private void deleteHandel()
        {
            try
            {
                TcClient.DeleteVariableHandle(AIN0);
            }
            catch (AdsException ex)
            {
                MessageBox.Show(ex.Message);
            }
         }
        private void ReadALL()
        {
            try
            {
                hAIN0 = Convert.ToInt32(TcClient.ReadAny(AIN0, typeof(double)));
                label1.Text = hAIN0.ToString();
            }
            catch (AdsException ex)
            {
                MessageBox.Show(ex.Message);
            }
            
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            deleteHandel();
            TcClient.Dispose();
        }

    }
}
 
Auf was für einen Rechner läuft denn deine C# Visu?
Läuft die Visu auf der SPS oder einem anderen Rechner in Netzwerk?
Ist auf dem Rechner auf dem die Visu läuft, TwinCAT installiert? (Wenigstens der AMS Router muss drauf sein, sonst kann der Client die Verbindung nicht aufbauen)

Bekommst du beim Erzeugen des Handles eine Exception?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn beides in einer Virtuellen Machine laufen lasse bekomme ich die Verbindung.

Wenn ich ein komplettes TWinCat 2auf einem CX laufen habe benötige ich doch nur das passende .net um eine .exe der Visu zu nutzen, oder?
 
Die passende .net Framework Version muss auf dem CX installiert sein und du brauchst deine exe und die ads.dll. Auf einem CX sollte der Router schon drauf sein, auch ohne komplette TwinCAT installation.
Hast du die NetID geprüft ob die stimmt? Evtl. einen Zahlendreher drin? Wenn die Visu lokal auf dem CX läuft, brauchst du die NetID auch nicht angeben, der TcAdsClient nimmt dann die lokale ID.
 
Moin,
Das passende .net Framework hbae ich installiert. Mit der ads.dll meinst du die TwinCATads.dll welch ich bei den Verweißen einfüge? oder die .dll die beim Release erzeugt wird?
Die NetID habe ich geprüft. stimmt überein! Habe die NetID gestrichen und nur den Port eingefügt.
Ich vermute ein Fehler mit dem CreateVaribalHandle. Wenn ich die Verbindung durch eine NotficationHandle Aufbau funktioniert dieser.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn bei CreateVariableHandle was schief läuft sollte die Methode eine AdsErrorException feuern. (du solltest das in deiner catch Klausel anpassen) Wurde die Methode erfolgreich ausgeführt müsste bei dir in AIN0 der Handle auf die Variable stehen. (kannst du mit einem Breakpoint überprüfen)

Am besten gehst dein Programm Schritt für Schritt durch, so kannst du am besten herausfinden an welcher Stelle es nicht mehr das macht was es soll.
 
Zurück
Oben