Wahlschalter über Analogeingang.

Matti257

Level-1
Beiträge
9
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Schönen Guten Tag.

Ich bin sowohl Neuling in diesem Forum, als auch in der SPS-Programmierung. :]

Ich habe foglendes Problem, zudem ich auch nach stundenlanger Suche im Netz nicht fündig geworden bin:

Ich muss einen Wahlschalter in Strukturierter Text programmieren. Der Schalter hat drei Stellungen(1-0-2) und zwei vordefinierte globale Variablen: S_WBA für Stellung 2 bzw. Automatikbetrieb sowie S_WBM für Stellung 1 bzw. Manuellbetrieb. Dieser Schalter soll so programmiert werden, dass er die neue Ausgangssignale ("Auto" und "Man" für die jeweilige Betriebsart) erzeugt, welche dann später zur Weiterverarbeitung im Hauptprogramm verwendet werden sollen.

Mir wird einfach nicht klar wie ich die Stellungen 1-0-2 als Integer Eingänge logisch mit den BOOLeschen Ausgängen verknüpfen bzw. programmieren kann. Habe es mit CASE-Anweisung, IF-Schleifen sowie einfachen Zuweisungen versucht. Nichts führt zum gewünschten Ergebnis.

Der Hinweis meines Dozenten, dass Interger an einer SPS mit Analogeingängen verarbeitet werden, hat mir auch nicht weitergeholfen, da ich NICHTS im Netz zu ähnlicher Problemstellung finden kann, von meinen Unterlagen ganz zu schweigen. :(

Ich hoffe sehr, dass mir hier weitergeholfen werden kann. :)

Beste Grüße

Mathias
 
Moin Matti257,

irgendwie werde ich aus Deiner Beschreibung nicht schlau.
Ich denke NICHT, dass Du den Schalter programmieren sollst.

Wie ist denn der Schalter verdrahtet? Ich stelle mir da zwei digitale Eingänge vor.

"Auto" wird mit Schalterstellung auf "2" und einem Einschaltimpuls aktiviert
"Man" wir mit Schalterstellung auf "1" aktiviert

VG

MFreiberger
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Schönen Guten Tag.

Der Hinweis meines Dozenten, dass Interger an einer SPS mit Analogeingängen verarbeitet werden, hat mir auch nicht weitergeholfen, da ich NICHTS im Netz zu ähnlicher Problemstellung finden kann, von meinen Unterlagen ganz zu schweigen. :(

Ich denke, Dein Dozent wollte Dir sagen, das man es mit Analog-Eingängen nicht lösen kann. Wie ist denn Dein technischer Hintergrund? Bist Du sicher, dass Du bei einer SPS-Schulung richtig aufgehoben bist?

Sorry, wenn es hart klingt. Aber wenn es bereits an der Verwendung von Hardware scheitert, stell ich mir die Schulung als Horror für Dich vor.
 
Moin,

Das sind einfache Zuweisungen, wobei der boolsche Wert mittels Vergleich gebildet wird.
Z.B.:
Code:
S[COLOR=#333333]_WBA := Wahlschalter = 2;[/COLOR]

ja, WENN eine "2" vorliegt. Ich denke eher, dass es sich um die Schalterstellung zwei handelt und damit EIN digitaler Eingang der Steuerung angesprochen wird.

VG

MFreiberger
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das sind einfache Zuweisungen, wobei der boolsche Wert mittels Vergleich gebildet wird.
Z.B.:
Code:
S[COLOR=#333333]_WBA := Wahlschalter = 2;[/COLOR]

Da würde mich aber interessieren, wie kriege ich den Analogen Eingang, von dem der TE sprach, genau auf den Wert 2 und das dauerhaft?
 
Mir wird einfach nicht klar wie ich die Stellungen 1-0-2 als Integer Eingänge logisch mit den BOOLeschen Ausgängen verknüpfen bzw. programmieren kann. Habe es mit CASE-Anweisung, IF-Schleifen sowie einfachen Zuweisungen versucht. Nichts führt zum gewünschten Ergebnis.
Er soll aus der Integer Schalterstellung (z.B vom HMI oder Eingangsbyte/-word vom DI) 2 boolsche Signale bilden.
Eins für Automatik, eins für Manuell.

So versteh ich die Aufgabe
Mein Beispiel war die Hälfte davon.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin,

Er soll aus der Integer Schalterstellung (z.B vom HMI oder Eingangsbyte/-word vom DI) 2 boolsche Signale bilden.
Eins für Automatik, eins für Manuell.

So versteh ich die Aufgabe
Mein Beispiel war die Hälfte davon.

Naja, aber die Dualzahlen von "1" und "2" betreffen ja immer nur ein boolsches Signal. Das kann man doch einfach abgreifen?

Von einem HMI wurde gar nicht gesprochen und ein Wahlschalter auf einem HMI darstellen?

Aber es kann ja sein, dass aus einem Eingangsbyte oder -wort das entsprechende Signal mit ausmaskieren ermittelt werden soll.

Ich denke der TE muss noch ein bisschen Licht ins Dunkle bringen:
Meine Frage aus #2: Wie ist denn der Schalter verdrahtet?

Dazu noch: Was ist denn die Aufgabenstellung?

VG

MFreiberger
 
Hey.

Freue mich sehr über die rasche und rege Beteiligung zu meiner Problemstellung. Vielen Dank dafür.

Bevor ich zur Arbeit muss, versuche ich den Sachverhalt aus der Aufgabenstellung noch etwas genauer darzustellen.

(Ich nehme bzw. an keiner Schulung Teil. Die Programmieraufgabe ist Teil des Moduls "Regelungs- und Steuerungstechnik" meines Wirtschaftsingenieurstudiums.) :)

Auszüge aus der Aufgabe:

"
Folgende Ausgangssignale sind zu erzeugen(in ST) und entsprechend zu benutzen:

Auto Auswahl Betriebsart Automatik: S_WBA
Man Auswahl Betriebsart Manuell: S_WBM

wobei:

S_WBM: Wahlschalter für die Betriebsart Manuell/Automatik 3 Stellungen möglich: 1-0-2, Stellung 1 (Manuell)
S_WBA Wahlschalter für die Betriebsart Manuell/Automatik 3 Stellungen möglich: 1-0-2, Stellung 2 (Automatik)
"

Es handelt sich laut Grafik um einen Drehschalter mit Stellungen 1-0-2

Diese und andere Ausgangssignale sind als Vorverarbeitung im ST Baustein "Betriebsarten" zu erzeugen. Der Baustein wird dann später im Hauptprogramm(FUP) aufgerufen, sodass nur mit den neuen Eingängen "Auto" "Man" etc. gearbeitet wird, quasi eine Entkopplung der globalen Variablen(S_WBA, S_WBM etc.)

Ich hoffe dies bringt etwas mehr Licht ins Dunkle. :)

Liebe Grüße.

Mathias


P.S.: Dies ist nur eine der letzten Teilaufgaben, die ich einfach nicht gelöst bekomme. Bin mit der Programmieraufgabe soweit fertig. Nicht, dass jemand unterstellt ich möchte hier meine Studienarbeit in Fremdleistung gelöst bekommen. :))))
 
Moin Hucki,

Die Lehreraussage ist:
Der Wahlschalter liefert Integer.

Nein, sondern:

Der Hinweis meines Dozenten, dass Interger an einer SPS mit Analogeingängen verarbeitet werden, hat mir auch nicht weitergeholfen,

Also der Dozent gibt nur einen Hinweis auf die Verarbeitung von Analogeingängen. Nichts dazu, was der Wahlschalter liefert.

VG

MFreiberger
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin,



Naja, aber die Dualzahlen von "1" und "2" betreffen ja immer nur ein boolsches Signal. Das kann man doch einfach abgreifen?

Von einem HMI wurde gar nicht gesprochen und ein Wahlschalter auf einem HMI darstellen?

Aber es kann ja sein, dass aus einem Eingangsbyte oder -wort das entsprechende Signal mit ausmaskieren ermittelt werden soll.

Ich denke der TE muss noch ein bisschen Licht ins Dunkle bringen:
Meine Frage aus #2: Wie ist denn der Schalter verdrahtet?

Dazu noch: Was ist denn die Aufgabenstellung?

VG

MFreiberger
Was spielt das alles für 'ne Rolle? (HMI war von mir auch nur n Beispiel)

Er hat einen Integer Eingang und 2 boolsche Ausgänge.
Die einfachste und verständlichste Möglichkeit sind 2 Vergleiche.

Klar kann man da auch ausmaskieren oder IfThen-Orgien feiern.
Viele Wege führen nach Rom
 
Moin Matti257,

"
Folgende Ausgangssignale sind zu erzeugen(in ST) und entsprechend zu benutzen:

Auto Auswahl Betriebsart Automatik: S_WBA
Man Auswahl Betriebsart Manuell: S_WBM

wobei:

S_WBM: Wahlschalter für die Betriebsart Manuell/Automatik 3 Stellungen möglich: 1-0-2, Stellung 1 (Manuell)
S_WBA Wahlschalter für die Betriebsart Manuell/Automatik 3 Stellungen möglich: 1-0-2, Stellung 2 (Automatik)
"

Es handelt sich laut Grafik um einen Drehschalter mit Stellungen 1-0-2

Handelt es sich jetzt um einen oder um zwei Wahlschalter?

Das Problem ist mir noch unklar. Geht es nur darum, sich mit ST und der Syntax für digitale Signale auseinander zu setzen?

Eigentlich doch nur eine Zuweisung:
Code:
S_WBM := <Eingang Schalterstellung "1">;
S_WBA := <Eingang Schalterstellung "2">;

Wobei das nur ein Beispiel ist. Ich kenne CoDeSys und dessen Syntax nicht.

VG

MFreiberger
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ist das so? Das war mir bisher noch nicht ganz klar geworden.
Ja, lies mal in der Mitte des Eingangsposts:
Mir wird einfach nicht klar wie ich die Stellungen 1-0-2 als Integer Eingänge logisch mit den BOOLeschen Ausgängen verknüpfen bzw. programmieren kann. Habe es mit CASE-Anweisung, IF-Schleifen sowie einfachen Zuweisungen versucht. Nichts führt zum gewünschten Ergebnis.
 
Wenn Dein 1-0-2 Wahlschalter an 2 Digitaleingängen angeschlossen ist, dann kannst Du diesen Code als Vorlage nehmen:
Für den Betriebsmodus ein Byte/Word/Int nutzen - da kann immer nur ein Wert drinstehen :cool:
Kann man auch hinterher wieder auf BOOL aufdrösen, z.B.
Code:
IF xS_Hand AND NOT xS_Auto THEN     //BA-Schalter Stellung Hand
  iMode := 1;
ELSIF xS_Auto AND NOT xS_Hand THEN  //BA-Schalter Stellung Auto
  iMode := 2;
ELSE
  iMode := 0;
END_IF;

xBA_Hand := iMode = 1;
xBA_Auto := iMode = 2;
xBA_Aus  := iMode = 0;
xS_Hand : Digitaleingang Stellung Hand
xS_Auto : Digitaleingang Stellung Auto

Harald
 
Folgende Ausgangssignale sind zu erzeugen(in ST) und entsprechend zu benutzen:

Auto Auswahl Betriebsart Automatik: S_WBA
Man Auswahl Betriebsart Manuell: S_WBM

wobei:

S_WBM: Wahlschalter für die Betriebsart Manuell/Automatik 3 Stellungen möglich: 1-0-2, Stellung 1 (Manuell)
S_WBA Wahlschalter für die Betriebsart Manuell/Automatik 3 Stellungen möglich: 1-0-2, Stellung 2 (Automatik)
In Dieser Beschreibung steht eigentlich auch schon der Code (siehe auch Haralds letzte Code-Zeilen im Post hier drüber):
Code:
S_WBM [COLOR=#ff8c00][B]:=[/B][/COLOR] [U]Wahlschalter[/U] für die Betriebsart Manuell/Automatik (3 Stellungen möglich: 1-0-2) [COLOR=#ff8c00][B]=[/B][/COLOR] Stellung [COLOR=#ff8c00][U][B]1[/B][/U][/COLOR] (Manuell) 
S_WBA [COLOR=#ff8c00][B]:=[/B][/COLOR] [U]Wahlschalter[/U] für die Betriebsart Manuell/Automatik (3 Stellungen möglich: 1-0-2) [COLOR=#ff8c00][B]=[/B][/COLOR] Stellung [COLOR=#ff8c00][U][B]2[/B][/U][/COLOR] (Automatik)


Habe es mit CASE-Anweisung, IF-Schleifen sowie einfachen Zuweisungen versucht. Nichts führt zum gewünschten Ergebnis.
Geht auch (umständlicher) mit IF..THEN:
Code:
IF [U]Wahlschalter[/U] für die Betriebsart Manuell/Automatik (3 Stellungen möglich: 1-0-2) [COLOR=#ff8c00][B]=[/B][/COLOR] Stellung [COLOR=#ff8c00][U][B]1[/B][/U][/COLOR] (Manuell)
THEN

     S_WBM [COLOR=#ff8c00][B]:=[/B][/COLOR] WAHR;
     S_WBA [COLOR=#ff8c00][B]:=[/B][/COLOR] FALSCH;

ELSIF [U]Wahlschalter[/U] für die Betriebsart Manuell/Automatik (3 Stellungen möglich: 1-0-2) [COLOR=#ff8c00][B]=[/B][/COLOR] Stellung [COLOR=#ff8c00][U][B]2[/B][/U][/COLOR] (Automatik)
THEN

     S_WBM [COLOR=#ff8c00][B]:=[/B][/COLOR] FALSCH;
     S_WBA [COLOR=#ff8c00][B]:=[/B][/COLOR] WAHR;

ELSE

     S_WBM [COLOR=#ff8c00][B]:=[/B][/COLOR] FALSCH;
     S_WBA [COLOR=#ff8c00][B]:=[/B][/COLOR] FALSCH;

END_IF;
Mit CASE ist der Codeaufbau ähnlich zu IF..THEN.
Wichtig ist, das immer beide boolschen Ausgangssignale bei jeder möglichen Wahlschalterstellung auch eine neue Zuweisung bekommen.
 
Zurück
Oben