Table Of Contents

TcForms

Das NuGet-Paket TcForms vereinfacht die Entwicklung funktionaler WinForms-Anwendungen für TwinCAT-SPS. Es übernimmt die ADS-Kommunikation mit SPS-Variablen und verknüpft UI-Controls mit minimalem Programmieraufwand.


Voraussetzungen

  1. .NET 8.0
  2. TwinCAT 3.1.4024.10 (XAE, XAR oder ADS Setup) oder neuer.

Erste Schritte

Füge die PLC-Bibliothek Tc3_TcForms (aus dem Beispielprojekt) zu deinem TwinCAT-PLC-Projekt hinzu und rufe den Funktionsbaustein FB_License auf, um die CLIENT-Lizenz zu validieren. Auf einem Entwicklungs-PC ist kein Lizenzschlüssel erforderlich.

PROGRAM MAIN
VAR
	fbTcFormsLicense	: Tc3_TcForms.FB_License;
END_VAR

----

// TcForms License
fbTcFormsLicense(bExecute:=TRUE);

Erstelle ein Windows Forms App Projekt mit .NET 8.0. Füge eine Datei namens config.ini zum Projekt hinzu. Navigiere zu den Eigenschaften dieser Datei und setze „Build Action“ auf Content und „Copy to Output“ auf Copy if newer. Kopiere anschließend den folgenden Inhalt in die config.ini Datei:

[License]
Type=CLIENT
Key=
SymbolName=MAIN.fbTcFormsLicense
[TwinCAT]
AmsNetID=127.0.0.1.1.1
CycleTime=100

Füge ein TcControl (z. B. TcButton) zu deiner Form hinzu und setze den Namen der zu verknüpfenden Variable unter Properties → TwinCAT → PlcVariable. Ergänze anschließend folgenden Code in deiner Form-Klasse, um alle TcControls des Formulars mit der TwinCAT-SPS zu verbinden.

using System.Windows.Forms;
using TcForms;

namespace WinFormsApp1
{
    public partial class Form1 : Form
    {
        private TcControlLink tcControlLink = new();
        public Form1()
        {
            InitializeComponent();
            this.Load += Form1_Load;
            this.FormClosing += Form1_FormClosing;
        }

        private void Form1_Load(object? sender, EventArgs e)
        {
            foreach (Control control in this.Controls)
            {
                if (control is ITcControl)
                {
                    tcControlLink.Add(control);
                }
            }
        }
        private void Form1_FormClosing(object? sender, FormClosingEventArgs e)
        {
            foreach (Control control in this.Controls)
            {
                if (control is ITcControl)
                {
                    tcControlLink.Remove(control);
                }
            }
        }        
    }
}

Baue und starte das Projekt, um die Verbindung zu überprüfen.


Beispielprojekt

GitHub Beispielprojekt ‘TwinCAT-GUI’