# TwinCAT 3: Erstes, einfaches Programm



## clumsi (2 Juli 2012)

Moin,

nachdem ich jetzt endlich TwinCAT 3 ohne Fehler installieren konnte, möchte ich versuchen ein erstes kleines Programm zu schreiben (in FUP).
Ich möchte den Wert eines analogen Einganges lesen. Bei überschreiten einer oberen Schwelle soll ein digitaler Ausgang gesetzt werden, beim unterschreiten einer unteren Schwelle soll der Ausgang zurückgesetzt werden.

Eignet sich so etwas für den Einstieg? Gibt es irgendwo solche Tutorials?

Ich habe bereits die Station gefunden, und beide Kanäle (Analog Eingang und Digital Ausgang) benannt.

Grüße,
clumsi


----------



## Neals (2 Juli 2012)

Es gibt für TwinCAT 3 ein gesondertes Information System.
Dort findest du auch ein Umfangreiches Sample: http://twincat3.infosys.beckhoff.co...html/tc3_sample_objectorientprogr.htm?id=1646


----------



## clumsi (2 Juli 2012)

Das hilft mir ehrlich gesagt nicht so richtig weiter.
Ich habe ja schon ein neues PLC erstellt und auch schon eine UND-Verknüfung, aber ich weiß nciht, wie ich meine Kanäle da einfüge.


----------



## Neals (2 Juli 2012)

Die Variablen für die Verknüpfung müssen mit %I*, bzw. %Q* deklariert werden:

```
bIn AT %I*: BOOL;
bOut AT %Q*: BOOL;
```


----------



## clumsi (4 Juli 2012)

Alles klar, werde ich probieren. Eigentlich komme ich auch eher aus der C-Programmierung, deshalb ist mir soetwas auch nicht sehr fremd, aber ich ging davon aus, dass TwinCAT und die FUP-Programmierung ganz ohne solche Deklarationen auskommt. Ist das denn der übliche Weg, dass ich jeden Kanal "von Hand" deklarieren muss?

Wo schreibe ich deinen geposteten Code überhaupt hin? In die globale Variablenliste im PLC-Task?


----------



## trinitaucher (5 Juli 2012)

Anders als bei Hochsprachen kannst du bei SPSen die Variablen nicht im Code deklarieren, sondern es muss getrennt im Deklarationsteil erfolgen. Bei TwinCAT steht der immer oberhalb des Editors, dort wo "VAR ..." steht, bspw.:


```
VAR
  myBoolVar1 : BOOL;  (* lokale Variablen*)
  myIntVar2 : INT;
  InBoolVar1 AT% I*: BOOL; (* "lokierte" Variable => für Eingänge von der Peripherie*)
  OutBoolVar1 AT% Q*: BOOL; (* "lokierte" Variable => für Ausgänge zur Peripherie*)
END_VAR

------------------------



  ... Editorteil ...
```

Die Lokierten Variablen tauchen nach dem Kompilieren dann als Prozessabbild der PLC auf und werden zu den physikalischen Ein- und Ausgängen im E/A-Teil "verknüpft".

edit:
Doku für Deklaration im TwinCAT 3:  http://twincat3.infosys.beckhoff.co...intro/html/core_vardeclobject_editor_home.htm

Wenn du aus der C-Programmierung kommst, könntest du doch auch damit das TwinCAT 3 programmieren?:
http://beckhoff.de/default.asp?twincat/twincat-3-xa-language-support-c.htm


----------

