# Regelung eines Ventils (mit codesys V2.3):



## crubel (26 November 2008)

Hallo Zusammen, ich bin gerade dabei ein keines Programm zu schreiben, da ich mich jedoch als Anfänger bezeichnen würde, wollte ich nun einige Fragen an das Forum stellen.
*Kurze Beschreibung der Regelungsfunktion:*
Ein Ventil soll abhängig von einem bestimmten Druck auf und zu machen. Wenn das Ventil im geschlossen Zustand einen Druck A überschreitet soll es geöffnet werden. Es soll dann solange offen sein bis es einen Druck B erreicht, dann soll es wieder schließen.
*Meine Fragen:*
In welcher Sprache soll ich das Programm am besten schreiben?
Was muss ich beachten?
Wie könnte ein solches Programm aussehen?
Was braucht Ihr noch für Informationen um mir weiter zu helfen?

_Für Eure Bemühungen bedanke ich mich im voraus_


----------



## drfunfrock (26 November 2008)

Lese dir die Hilfe und ein Buch zur IEC61131  durch. Ich glaube nicht, dass dir jemand hier auch noch das Einmaleins lehren wird.


----------



## Steve81 (26 November 2008)

crubel schrieb:


> Hallo Zusammen, ich bin gerade dabei ein keines Programm zu schreiben, da ich mich jedoch als Anfänger bezeichnen würde, wollte ich nun einige Fragen an das Forum stellen.
> *Kurze Beschreibung der Regelungsfunktion:*
> Ein Ventil soll abhängig von einem bestimmten Druck auf und zu machen. Wenn das Ventil im geschlossen Zustand einen Druck A überschreitet soll es geöffnet werden. Es soll dann solange offen sein bis es einen Druck B erreicht, dann soll es wieder schließen.
> *Meine Fragen:*
> ...


 
Mit welcher Darstellungsart oder Sprache würdest du es denn am liebsten schreiben?

In AWL z.B.

```
UN #Ventil_auf
U #DruckAüber
S #Ventil auf
 
U #Ventil_auf
U #DruckBerreicht
R #Ventil_auf
```


----------



## drfunfrock (26 November 2008)

Ist das nicht irgendwie Step7? 

Nun ja, in ST geht es so


```
IF (druck>x) then 
 ventil := FALSE;
ELSIF (druck<y) THEN
  ventil := TRUE;
END_IF
```


----------



## Steve81 (26 November 2008)

drfunfrock schrieb:


> Ist das nicht irgendwie Step7?
> 
> Nun ja, in ST geht es so
> 
> ...


 
Ne, AWL.
Gibts das bei CoDeSys nicht?


----------



## drfunfrock (26 November 2008)

Steve81 schrieb:


> Ne, AWL.
> Gibts das bei CoDeSys nicht?



Nein, nur IL und ist zwar ähnlich, aber nicht gleich und entspricht der IEC-Norm 61131


----------



## crubel (26 November 2008)

also, ich hätte awl, kop, fup, as,st cfe zur verfügung! jedoch würde ich das ganze am liebsten in fup machen. danke für eure beiträge


----------



## Steve81 (26 November 2008)

drfunfrock schrieb:


> Nein, nur IL und ist zwar ähnlich, aber nicht gleich und entspricht der IEC-Norm 61131


 
Hallo drfunfrock,
ich möchte hier nicht diskutieren da ich mich bei CoDeSys nicht wirklich auskenne, aber hier ist AWL als Editor aufgelistet.



crubel schrieb:


> also, ich hätte awl, kop, fup, as,st cfe zur verfügung! jedoch würde ich das ganze am liebsten in fup machen. danke für eure beiträge


 
Leider postet sich FUP so schlecht! Aber das was ich oder drfunfrock dir gepostet haben sollte doch in FUP umgesetzt werden können.
Einfach eine SR-Box und den S und R Eingang mit den benötigten Signalen (von den Druckgrenzen) beschalten.


----------



## drfunfrock (27 November 2008)

Steve81 schrieb:


> Hallo drfunfrock,
> ich möchte hier nicht diskutieren da ich mich bei CoDeSys nicht wirklich auskenne, aber hier ist AWL als Editor aufgelistet.
> .



Jepp, wahrscheinlich damit Siemensianer die Werbung verstehen. Es heisst aber Instruction List und unterscheidet sich von AWL durch die Operatoren wie 

LD, ST, S, R, JMP, CAL, RET

Beispiele

```
Instruction List (IL)LD     TRUE          (*load TRUE in the  accumulator*)
ANDN   BOOL1         (*execute AND with the negated value of  the BOOL1 variable*)
JMPC   label         (*if the result was TRUE, then jump  to the label "label"*)
LDN    BOOL2         (*save the negated value of  *)
ST     ERG           (*BOOL2 in ERG*)
label:

LD     BOOL2          (*save the value of *)
ST     ERG           (*BOOL2 in ERG*) 
 
It is also possible in IL to put parentheses after an operation. The  value of the parenthesis is then considered as an operand.
 
For example:
 LD 2
MUL 2
ADD 3
ST Erg
 
Here is the value of Erg 7. However, if one puts parentheses:
 LD 2
MUL( 2
ADD 3
) 
ST Erg
```


Ich würde das freiwillig nicht anfassen. Mit solchen Sprachen kommt sich vor, als wenn man in die 80' zurückgebeamt wäre. Es erinnert mich immer an die Assemblerprogramme auf dem Z80.


----------

