# Probleme in ST



## buddd (29 Juli 2010)

Hallo liebe Gemeinde,
ich soll eine Stempelmaschine mit Sortierfunktion programmieren. Das ganze soll als Schrittkette realisiert werden. 
Nun zu meinem Problem:
Ich hab bisher nur in AWL, KOP und FUP programmiert, doch nun werd ich es in ST programmieren (mein erster Versuch und zum ersten mal ST). Das klappt auch ganz gut. Nur hab ich immer den Fehler:
Fehler 4268:Transition Trans0 (1): Es wird ein Ausdruck erwartet

Hier einmal der Code von einem Schritt mit dem Fehler:

IF
    Bero6:=TRUE;
    Bero4:=TRUE;
 THEN
    Zylinder1:=TRUE;
    Zylinder2:=TRUE;
END_IF

Hoffe ihr habt da eine Idee was mein Fehler sein kann....

mfg


----------



## bits'bytes (29 Juli 2010)

hi 
wahrscheinlich geht dir hier nur das log- und (AND) ab


```
if (Bero6=TRUE) AND (Bero4=TRUE)  then
   ..... 
   .....
 endif
```


----------



## buddd (29 Juli 2010)

Gleich mal ausprobieren...


----------



## buddd (29 Juli 2010)

Leider ist der Fehler immer noch da 

Also weiter probieren und schanún was google und co sagen und vll habt ihr ja auch noch Ideen


----------



## Larry Laffer (29 Juli 2010)

Hallo,
hinter dem END_IF fehlt auch noch ein Semikolon - also so :
	
	



```
IF (Bero6=TRUE) and (Bero4=TRUE) THEN
        Zylinder1:=TRUE;
        Zylinder2:=TRUE;
END_IF ;
```
Gruß
Larry


----------



## buddd (29 Juli 2010)

Hatt leider auch nix gebracht.

So langsam fang ich an zu verzweifeln :sw14:


----------



## BoxHead (29 Juli 2010)

buddd schrieb:


> Fehler 4268:Transition Trans0 (1): Es wird ein Ausdruck erwartet



Klingt danach als hättest Du es eher mit AS (Ablaufsprache) zu tun. Trans0 ist die default Transition wenn man eine Schrittkette anlegt.

Lade mal Dein Programm hoch.


----------



## buddd (29 Juli 2010)

sooo hier das gesamte prog


----------



## BoxHead (29 Juli 2010)

Wie bereits vermutet hast Du keinen reinen ST Baustein verwendet sondern einen AS Baustein.

Nun kann man in Codesys jede Aktion und Transition in einer anderen Sprache programmieren. Deinen Code hast nun in die Transition gequetscht.

Wenn man eine Transition in ST Programmieren will, schreibt man da einfach die Bedingung rein. In Deinem Fall 

```
Bero6 AND Bero4
```

Die Zuweisung der Zylinder haben in einer Transition nichts zu suchen die gehören in die Aktion.


----------



## buddd (29 Juli 2010)

juhu der fehler ist weg 

aber zu allem übel hab ich einen neuen 

Fehler4020: Aktion STEP2 (2): Operanden von 'ST','STN','S','R' müssen Variable mit schreibzugriff sein.

Was ist das denn nun ...


----------



## ebt'ler (29 Juli 2010)

Versuchst du grade einer Eingangsvariable einen Wert zuzuweisen?


----------



## buddd (29 Juli 2010)

Nein die Ausgänge​


----------



## ebt'ler (29 Juli 2010)

Dann hast du die Variable falsch deklariert, oder irgentwas vertauscht. 
Wenn du einen Fehler bekommst solltest du den entsprechenden Programmabschnitt und die dazugehörige Deklaration posten. Sonst kann man hier nur raten!


----------



## buddd (29 Juli 2010)

so fehler gefunden 

hab einfach so einen bekloppten doppelpunkt vergessen


argh


aber vielen dank euch allen


----------



## trinitaucher (29 Juli 2010)

Larry Laffer schrieb:


> Hallo,
> hinter dem END_IF fehlt auch noch ein Semikolon - also so :
> 
> 
> ...


... Semikolon hinter ENDIF ist übrigens nicht nötigt. ... kleine Anmerkung am Rande


----------



## Oberchefe (30 Juli 2010)

> ... Semikolon hinter ENDIF ist übrigens nicht nötigt. ...



Wir sind ja nicht bei Siemens


----------



## mkoenig (30 Juli 2010)

trinitaucher schrieb:


> ... Semikolon hinter ENDIF ist übrigens nicht nötigt. ... kleine Anmerkung am Rande



Soweit mir bekannt ist es nur bei TwinCat nicht nötig, andere ST-Compiler schmeißen einem da gleich einen Fehler an den Kopf.


----------



## trinitaucher (30 Juli 2010)

mkoenig schrieb:


> Soweit mir bekannt ist es nur bei TwinCat nicht nötig...


Bei CoDeSys generell


----------

