C#-Variablen in TwinCAT lesen und Schreiben

kcirtap

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

Ich bin neu im Forum und suche nach einer lösung meines Problems. Ziel ist es dass ich mit der Visualisierung ( geschieben in C#) meine SPS steuern lasse. Mit Boolschen Variablen geht das ganz gut, jedoch möchte ich nun mit einem NumericUpDown die Ausgangsspannung der SPS verändern. Mit dem umkonvertierten String kann ich den Wert in eine Textbox übermitteln, aber leider noch nicht auf die SPS.

Ich habe es mit folgendem Code versucht (auf InfoSys/ReadAny,WriteAny abgeschaut):

private void numericUpDown1_ValueChanged(object sender, EventArgs e)
{
// Konvertieren des NummericUpDown-Wertes
decimal Spann = Wahl.Value;
string SpannString = Convert.ToString(Spann);

// Zum Test oben erwähnter Wert in eine Textbox schreiben
tBTest.Text = SpannString;

// Gehört zu tcClient.WriteAny(hSpannungWrite, SpannString, int[] args);
args = new int()[80];

try
{
tcClient.WriteAny(hSpannungWrite, SpannString, int[] args);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}


Kann mir jemand dieses Problem erklären oder hat jemand einen Lösungsvorschlag?

Gruss kcirtap
 
Mein VS2008 kann mit der folgenden Anweisung nichts anfangen:
args = new int()[80];
Sollte das nicht etwas in dieser Art sein
args = new int[] {80};

Damit sollte sich auf eine SRTRING-Variable in der SPS schreiben lassen.Wenn du mit "Ausgangsspannung der SPS" eine Variable vom Typ STRING meinst dann dürfte das funktionieren.

Das WriteAny ist hier beschrieben:
http://infosys.beckhoff.com/content....tcadsclient.writeany_overload_4.html?id=9756

und Beispiele findest fu hier:
http://infosys.beckhoff.com/content/1031/tcsample_net/html/twincat.ads.sample07.htm?id=9910

Gruß,
witkatz
 
Zuviel Werbung?
-> Hier kostenlos registrieren
So weit ich weis kannst du keinen Decimal zur SPS schreiben. Das ist eine 128Bit Gleitkommazahl.
Willst du die Spannung einer 0-10V Klemme ändern? Deren Ausgangswert ist von 0 - 7FFF, also ein short (Int16) in C#. Wenn du musst also dein Decimal in einen Int16 konvertieren, und dann schreiben:

Code:
// Hole Handle
short val = Convert.ToInt16(Spann); // zb, wie bleibt dir überlassen
tcClient.WriteAny(hSpannungWrite, val);
// Lösche Handle
tcClient.DeleteVariableHandle(hSpannungWrite);

Tipp: Hol dir das Variablen Handle kurz bevor du schreibst/liest, und lösche es dannach wieder. Die Handles können sich ändern wenn du Änderungen am SPS Programm machst.
 
Zurück
Oben