Probleme bei der Verbindung von Microsoft Visual c# 2010 Express zu TwinCat PLC

Benni

Level-1
Beiträge
73
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo ihr,
ich habe folgendes Probelm:
Ich möchte mit Microsoft Visual C# eine Oberfläche erstellen mit welcher ich dann auf eine Beckhoff SPS zugreifen kann.
Über die SPS bekomme ich ein paar Sensoren rein und es gehen ein paar Ventile ab. Desweiteren ist ein Durchflusssensor angeschlossen.
Die Programme an sich sind kein Problem, jedoch die Verknüpfung der beiden.

Im C# habe ich bereits die TwinCat.Ads eingefügt. Auch am Quelltext anfang steht bereits
using System.IO;
using TwinCAT.Ads;

Weiterhin habe ich einen kleinen Anteil eines Programms bekommen welcher wie folgt aussieht:

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using TwinCAT.Ads;
 
namespace WindowsFormsApplication1
{
 
publicpartialclasstest : Form
{
//*********************************************************************
publicdouble leseINT(String variable, TcAdsClient client)
//liest eine Variable aus der SPS aus
{
AdsStream ds = newAdsStream(4);
AdsBinaryReader br = newAdsBinaryReader(ds);
int iHandle = client.CreateVariableHandle(variable);
double i = br.ReadInt32();
return i;
}

 
fortsetzung

publicbool lesebool(string variable, TcAdsClient client)
//liest eine Variable aus der SPS aus
{
AdsStream ds = newAdsStream(1);
AdsBinaryReader br = newAdsBinaryReader(ds);
int iHandle = client.CreateVariableHandle(variable);
client.Read(iHandle, ds);
bool i = br.ReadBoolean();
return i;
}
//*********************************************************************


public test()
{
InitializeComponent();
}

privatevoid test_Load(object sender, EventArgs e)
{
//***************************************
TcAdsClient client = newTcAdsClient();
client.Connect(
"127.255.255.1.1.1", 801);
//***************************************
}

privatevoid durchfluss_TextChanged(object sender, EventArgs e)
//Zeigt den aktuellen Gesamtdurchfluss an
{
Text =
Convert.ToString(leseINT(durchfluss,client));
}
}
}

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Mein Problem liegt nun darin dass ich den letzten Teil (ab test_load) selbst geschrieben habe und mir da nicht sicher bin ob dies so korrekt ist. Ich Möchte quasi aus der SPS den Durchfluss herrauslesen und in ein Textfeld in C# schreiben lassen.
Jedoch wenn ich das Programm so schreibe kommt der Fehler:
Der Name "client" ist im aktuellen Kontext nicht vorhanden.
Jedoch kann ich ändern was ich möchte es bewirkt leider nichts was mich weiter bringt.

 
Hallo Benni,

kenne mich mit C# nicht aus, allerdings in deinem Programmteil wird "client" nirgends deklariert. In dem Programm "lesebool" wird "client" übergeben, ist damit deklariert.

Hoffe, es hilft dir etwas weiter.

Gruß, Voxe
 
Vollkommen richtig.
Du deklarierst client
in
private
void test_Load(object sender, EventArgs e)
{
//***************************************
TcAdsClient client = newTcAdsClient();
client.Connect(
"127.255.255.1.1.1", 801);
//***************************************
}
die Deklaration sollte jedoch in der Klassenebene erfolgen, also:

class deineKlasse
{
TcAdsClient client;
public deineKlasse()
{
connect();
}
privatevoid connect()
{
//***************************************
client = newTcAdsClient();
client.Connect(
"127.255.255.1.1.1", 801);
//***************************************
}


}
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, danke für eure schnellen Antworten, ich werde gleich morgen wieder mein bestes Versuchen und hoffen, dass mir eure Beiträge weiterhelfen können.
Gruß Benni
 
Danke nochmal

Hey ihr, finde es echt super dass hier so schnell geantwortet wird, hat mir echt sehr geholfen, bin weitergekommen, bin seit ner woche erst mir c# und twincat vertraut wobei vertraut schon übertrieben ist...
Naja Beginn des Praxissemesters eben



Deshalb habe ich gleich noch ne Frage an euch, hoffe diese ist hier auch richtig gestellt ansonst mach ich en neues Thema auf wenn ihr das meint...

Und Zwar folgendes... Kann ich eigentlich auch direkt von C# aus auf die Beckhoff SPS zugreifen, sprich ohne dass ich über TwinCat SystemManager und PLC gehen muss, oder ist es wenigstens möglich dass ich nur eines von beidem mache???
 
Hallo,

per ADS kannst du auf die SPS zugreifen, wenn dein Programm diese erreichen kann. Du greifst damit allerdings auf die PLC, das ist ja die SPS.

Gruß
 
Zurück
Oben