Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [SPS/AWL] Ausgang über einen Taster invertieren (https://www.delphipraxis.net/149158-%5Bsps-awl%5D-ausgang-ueber-einen-taster-invertieren.html)

Matze 15. Mär 2010 17:46


[SPS/AWL] Ausgang über einen Taster invertieren
 
Hi zusammen,

ich möchte über einen Taster einen Ausgang invertieren. D.h. ich muss die steigende Flanke auswerten.

Das habe ich mittels AWL (Anweisungsliste) nach langem Probieren umgesetzt und funktioniert auch. Aber mir kommt es sehr umständlich vor, da ich 3 Merkerbits brauche.
IM folgenden ein funktionierender Code. Wobei ich nicht weiß, ob sich hier jemand mit AWL auskennt. :gruebel:

Code:
// steigende Flanke des Tasters ermitteln
U   "Taster" // Eingang
FP  "Tastersignal" // Merker 1
=   "Taster_Pos_Flanke" // Merker 2

// Lampe ausschalten
U   "Taster_Pos_Flanke"
U   "Lampe" // Ausgang
R   "Lampe_Neu" // Merker 3

// Lampe einschalten
U   "Taster_Pos_Flanke"
UN  "Lampe"
S   "Lampe_Neu"

// Selbsthaltung, da positive Flanke im nächsten Zyklus nicht mehr gesetzt
U   "Lampe"
S   "Lampe"

// Neuen Status setzen
U   "Lampe_Neu"
=   "Lampe"
Kann man das vereinfachen?

Grüße, Matze

Helmi 15. Mär 2010 17:49

Re: [SPS/AWL] Ausgang über einen Taster invertieren
 
Hallo,

bevor ich mir dein Merker-Gestrüb näher anschaue, was genau willst du machen?
Kannst du das mal etwas näher beschreiben?

Matze 15. Mär 2010 17:55

Re: [SPS/AWL] Ausgang über einen Taster invertieren
 
Hallo Helmi,

ich kann's für dich auch anders formulieren ja. ;)

Gegeben sei ein Taster. D.h. solange man den Taster drückt, ist das Eingangssignal von diesem "high", lässt man ihn los, ist es "low".

Ausgangssituation:
- Eingang (Taster) = "low"
- Ausgang (Lampe) = "low"

Drückt man nun einmal auf den Taster, soll der Ausgang invertiert, d.h. die Lampe eingeschaltet werden: Ausgang (Lampe) = "high"
Drückt man den Taster ein weiteres Mal, dann soll der Ausgang erneut invertiert bzw. die Lampe ausgeschaltet werden: Ausgang (Lampe) = "low"
usw.

Ich hoffe, nun war's verständlicher.

Grüße, Matze

Helmi 15. Mär 2010 17:56

Re: [SPS/AWL] Ausgang über einen Taster invertieren
 
Also nix anderes als einer Astabiler Multivibrator


Wie wärs mit diesem:

A0.0 = Lampe
E0.0 = Taster
M0.0 = Merker

Code:
U E0.0
UN A0.0
S M0.0

U E0.0
U A0.0
R M0.0

U M0.0
= A0.0

Matze 15. Mär 2010 17:58

Re: [SPS/AWL] Ausgang über einen Taster invertieren
 
Hm joah, das kann man glaub so sagen.

Helmi 15. Mär 2010 18:01

Re: [SPS/AWL] Ausgang über einen Taster invertieren
 
Ich hab oben mal schnell nen AWL-Code hingeschrieben
(wenn ich jetzt keinen Fehler gemacht habe, meine KOB-Zeichnung ins AWL umzuschreiben)

Matze 15. Mär 2010 18:38

Re: [SPS/AWL] Ausgang über einen Taster invertieren
 
Hallo Helmi,

meinst du KOP mit "P" (Kontaktplan)? "KOB" sagt mir nichts.

Deine AWL funktioniert nicht. Die Lampe "flackert", solange man den Taster gedrückt hält und wenn man ihn los lässt, bleibt die Lampe an.

Die Flankenauswertung muss schon hinein, sonst geht es nicht. ;)

Grüße, Matze

Helmi 15. Mär 2010 18:46

Re: [SPS/AWL] Ausgang über einen Taster invertieren
 
Zitat:

Zitat von Matze
Hallo Helmi,

meinst du KOP mit "P" (Kontaktplan)? "KOB" sagt mir nichts.

Deine AWL funktioniert nicht. Die Lampe "flackert", solange man den Taster gedrückt hält und wenn man ihn los lässt, bleibt die Lampe an.

Die Flankenauswertung muss schon hinein, sonst geht es nicht. ;)

Grüße, Matze

Ja, ich meinte KOP

Funktionieren tuts schon - du hast ja nen Schalter, keinen Taster - sprich - du bleibst (normalerweise) nicht ständig drauf
Das heisst, wenn du kurz drauf drückst, dann geht die LED an, wenn du danach wieder draufdrückst, dann geht die LED aus.
(habs grad bei meiner Test-S7-300 getestet)


Wenn du es aber auch willst, wenn du ständig auf dem Taster bleibst, dann so:

Code:
U E0.0 
FP M0.1
= M0.2
U M0.2
UN A0.0 
S M0.0 

U M0.2 
U A0.0 
R M0.0 

U M0.0 
= A0.0
Leider brauchst jetzt wieder 3 Merker, da die Flanke und auch der Zwischenmerker benötigt werden

Matze 15. Mär 2010 18:51

Re: [SPS/AWL] Ausgang über einen Taster invertieren
 
Zitat:

Zitat von Helmi
Funktionieren tuts schon - du hast ja nen Schalter, keinen Taster - sprich - du bleibst (normalerweise) nicht ständig drauf

Jupp klar, aber du hältst ihn mehrere SPS-Zyklen gedrückt, bevor du ihn los lässt.

Zitat:

Zitat von Helmi
Wenn du es aber auch willst, wenn du ständig auf dem Taster bleibst, dann so [...]

Stimmt, das funktioniert!

Es ist etwas kürzer als meine erste Lösung. Vielleicht kommt man auch nicht um die 3 Merker herum, mir kommt's für die doch eher banale Aufgabe jedoch viel vor.
Aber vielen Dank! :thumb:

Die DP-Mitglieder überraschen mich immer wieder. E-Technik-Fragen werden beantwortet, SPS-Fragen, ... :)

Grüße, Matze

Edit: Ich muss für meine Bezeichnungen mal Präfixe nutzen (E_, A_, M_). Ohne ist es viel übersichtlicher, wie ich an deinem Code sehe. Das ist eigentlich auch nicht Sinn der Sache, es unübersichtlicher zu machen. *g*

Helmi 15. Mär 2010 18:56

Re: [SPS/AWL] Ausgang über einen Taster invertieren
 
Zitat:

Zitat von Matze
Zitat:

Zitat von Helmi
Funktionieren tuts schon - du hast ja nen Schalter, keinen Taster - sprich - du bleibst (normalerweise) nicht ständig drauf

Jupp klar, aber du hältst ihn mehrere SPS-Zyklen gedrückt, bevor du ihn los lässt.

Zitat:

Zitat von Helmi
Wenn du es aber auch willst, wenn du ständig auf dem Taster bleibst, dann so [...]

Stimmt, das funktioniert!

Es ist etwas kürzer als meine erste Lösung. Vielleicht kommt man auch nicht um die 3 Merker herum, mir kommt's für die doch eher banale Aufgabe jedoch viel vor.
Aber vielen Dank! :thumb:

Gerne doch! - Ich muss mal bei unseren Maschinen nachschauen, wie es da ist, mit dem längerem Drücken und dem flattern - jedenfalls achten wir nicht so auf die Flankenauswertung (nur wenns wirklich notwendig ist).


Zitat:

Zitat von Matze
Die DP-Mitglieder überraschen mich immer wieder. E-Technik-Fragen werden beantwortet, SPS-Fragen, ... :)

SPS ist Alltagsgeschäft bei mir! :-)

Matze 15. Mär 2010 18:59

Re: [SPS/AWL] Ausgang über einen Taster invertieren
 
Zitat:

Zitat von Helmi
Gerne doch! - Ich muss mal bei unseren Maschinen nachschauen, wie es da ist, mit dem längerem Drücken und dem flattern - jedenfalls achten wir nicht so auf die Flankenauswertung (nur wenns wirklich notwendig ist).

Erstaunlich. Ich hätte gedacht, das sei sehr wichtig, denn man wird nie nur einen Zyklus erwischen, es sei denn, das Programm ist so lange, dass ein Zyklus fast in den Sekundenbereich geht.

Helmi 15. Mär 2010 19:04

Re: [SPS/AWL] Ausgang über einen Taster invertieren
 
Zitat:

Zitat von Matze
Zitat:

Zitat von Helmi
Gerne doch! - Ich muss mal bei unseren Maschinen nachschauen, wie es da ist, mit dem längerem Drücken und dem flattern - jedenfalls achten wir nicht so auf die Flankenauswertung (nur wenns wirklich notwendig ist).

Erstaunlich. Ich hätte gedacht, das sei sehr wichtig, denn man wird nie nur einen Zyklus erwischen, es sei denn, das Programm ist so lange, dass ein Zyklus fast in den Sekundenbereich geht.

Es kommt auf das Anwendungsgebiet an...
Aber ich hab grad bei unserem Ein-/Aus-Merker ( :-) ) nachgeschaut, dort wird auch die Flanke abgefragt, war mir jetzt nicht mehr ganz sicher

Nebenbei bemerkt, wenn du eine Siemens S7 hast, dann kannst das ganze auch komplett ohne Merker machen :-)

Matze 15. Mär 2010 19:12

Re: [SPS/AWL] Ausgang über einen Taster invertieren
 
Wie ginge das dann?

Eine echte S7 habe ich nicht da, nur eine virtuelle. ;)
Aber damit müsste es auch gehen.

Grüße

Helmi 15. Mär 2010 19:15

Re: [SPS/AWL] Ausgang über einen Taster invertieren
 
Zitat:

Zitat von Matze
Wie ginge das dann?

Eine echte S7 habe ich nicht da, nur eine virtuelle. ;)
Aber damit müsste es auch gehen.

Es gibt auch ne viertuelle S7? - Interessant!
Ich hab mir extra eine alte CPU erbettelt :-)

Du könntest anstatt Merkern auch Bits von Datenbausteinen verwenden.

Und/Oder du baust dir einen Funktionsbaustein (FB) mit einem Instanz-DB
und übergibst dem FB deinen Taster und erhälst einen Ausgang mit dem du
deinen Merker (oder gleich den Ausgang) ansteuerst.
Das wäre dann so eine Art Black-Box.

Und alles ohne Merker

Helmi 15. Mär 2010 19:34

Re: [SPS/AWL] Ausgang über einen Taster invertieren
 
Zitat:

Zitat von Matze
Edit: Ich muss für meine Bezeichnungen mal Präfixe nutzen (E_, A_, M_). Ohne ist es viel übersichtlicher, wie ich an deinem Code sehe. Das ist eigentlich auch nicht Sinn der Sache, es unübersichtlicher zu machen. *g*

Hab dein Edit total überlesen...

Im Step7 kannst du ein Symbol angeben und einen Kommentar
Bei uns ist es eigentlich üblich, dass die Symbol-Bezeichnung gleich der Adresse ist (z. B. E0.0, A34.7) und beim Kommentar die Funktion des Symbols
Selten wird bei uns bei der Symbol-Bezeichnung etwas anderes reingeschrieben...

Matze 15. Mär 2010 19:42

Re: [SPS/AWL] Ausgang über einen Taster invertieren
 
Hm ob ich nun Merkerbits nehmen oder Bits der Datenbausteine kommt auf das Ähnliche heraus.
Die Symbole nenne ich nicht wie die Eingänge, dann kann ich es ja fast bleiben lassen. Der Code soll ja lesbarer werden und genau dafür sind die Symbole eigentlich da. ;) Gut, die Kommentare bringen natürlich was.

So finde ich's leichter lesbar, als wenn ich nun "E 0.0" etc. schreibe.

Code:
// Lampe einschalten
U   "M_Taster_Pos_Flanke"
UN  "A_Lampe"
S   "M_Lampe_Neu"
Aber das kann jeder machen wie er mag, wenn die Firma nichts vorschreibt.
Es wäre mal interessant zu wissen, wie das die großen Firmen machen. Denn die nutzen oft strengere Vorschriften.

Falls dich das mit der virtuellen SPS interessiert, gibt's hier was zu lesen. Es ist im Prinzip eine alternative zur Siemens-Entwicklungsumgebung mit integriertem Simulator.

Grüße, Matze

Helmi 15. Mär 2010 19:45

Re: [SPS/AWL] Ausgang über einen Taster invertieren
 
Zitat:

Zitat von Matze
Aber das kann jeder machen wie er mag, wenn die Firma nichts vorschreibt.
Es wäre mal interessant zu wissen, wie das die großen Firmen machen. Denn die nutzen oft strengere Vorschriften.

Ich arbeite in einer großen Maschinenbaufirma und da hat es sich eingebürgert, dass man die Symbolbezeichnung gleich der Adresse macht.


Zitat:

Zitat von Matze
Falls dich das mit der virtuellen SPS interessiert, gibt's hier was zu lesen. Es ist im Prinzip eine alternative zur Siemens-Entwicklungsumgebung mit integriertem Simulator.

Danke - werd ich mir mal anschauen

LargoD 15. Mär 2010 20:56

Re: [SPS/AWL] Ausgang über einen Taster invertieren
 
Zitat:

Zitat von Helmi
Zitat:

Zitat von Matze
Aber das kann jeder machen wie er mag, wenn die Firma nichts vorschreibt.
Es wäre mal interessant zu wissen, wie das die großen Firmen machen. Denn die nutzen oft strengere Vorschriften.

Ich arbeite in einer großen Maschinenbaufirma und da hat es sich eingebürgert, dass man die Symbolbezeichnung gleich der Adresse macht.

Das Problem ist, dass häufig die Betriebsvorschriften für die Form von SPS-Programmen von Leuten gemacht wurden, die den Knall noch nicht gehört haben, d. h. deren eigener SPS-Stil aus S5-Zeiten stammt. Die wissen nichts von den lokalen statischen Variablen von FBs, denen sagen UDTs und Multiinstanzen gar nichts, und SCL ist was ganz schlimmes.
Meine Meinung: Bei S7 ist es ein Unsinn, als Symbol die Adresse zu verwenden, damit wird kostbarer Platz im Plan für redundante Information verplempert. Aber jeder wie er will.

Jetzt aber meine Lösung für das Ausgangsproblem. Ist zwar etwas länger, benutzt aber nur zwei Merker. Ist vor einigen Jahren mal auf meinem Mist gewachsen (in FUP, denn AWL benutze ich extrem selten).

U(
U "Taster"
UN "Hilfsmerker"
S "Merker"
U "Taster"
U "Hilfsmerker"
R "Merker"
U "Merker"
)
UN "Taster"
S "Hilfsmerker"
UN "Taster"
UN "Merker"
R "Hilfsmerker"

U "Merker"
= "Ausgang"

Gruß
Erich

Helmi 15. Mär 2010 21:11

Re: [SPS/AWL] Ausgang über einen Taster invertieren
 
Zitat:

Zitat von LargoD
Das Problem ist, dass häufig die Betriebsvorschriften für die Form von SPS-Programmen von Leuten gemacht wurden, die den Knall noch nicht gehört haben, d. h. deren eigener SPS-Stil aus S5-Zeiten stammt. Die wissen nichts von den lokalen statischen Variablen von FBs, denen sagen UDTs und Multiinstanzen gar nichts, und SCL ist was ganz schlimmes.
Meine Meinung: Bei S7 ist es ein Unsinn, als Symbol die Adresse zu verwenden, damit wird kostbarer Platz im Plan für redundante Information verplempert. Aber jeder wie er will.

Du kehrst alle über einen Kamm!

Wer sagt dass wir nicht trotzdem statische Variablen von FB´s, UDT´s etc verwenden?
Wenn du mit einer 840D zu tun hast und dich mit Safety Integrated etc. rumschlagen musst, dann wird man automatisch damit konfrontiert und muss diese verwenden!!

Und was bringt es zu versuchen, in einen Symboltext, der von der Anzahl der Zeichen begrenzt ist, alles reinzupacken, was man an Infos angeben will, wenn es dadurch viel zu unleserlich wird?
Da bietet sich der Kommentartext wesentlich besser an.

Ich finde deinen Code recht unübersichtlich - schwer zu lesen.
Um mit den Worten eines SPS-Programmieres unserer Firma zu sprechen: "Man wird doch nicht pro Kontakt bezahlt!"

Question_mark 16. Mär 2010 00:08

Re: [SPS/AWL] Ausgang über einen Taster invertieren
 
Hallo Matze,

Zitat:

Zitat von Matze
Wobei ich nicht weiß, ob sich hier jemand mit AWL auskennt

Besuche uns doch mal auf http//:www.sps-forum.de, da wird Dir bei sowas gerne geholfen. Und eine ganze Menge Leute, die sich mit SPS-Steuerungen gut auskennen, gut feiern können und sich neben der SPS auch noch mit Hochsprachen wie Delphi, C++, C# und sonstigen Gerödel unter Windows und Unix recht gut auskennen, wirst Du dort auch finden.

Gruß

Question_mark

Tryer 16. Mär 2010 04:02

Re: [SPS/AWL] Ausgang über einen Taster invertieren
 
Unter dem Stichwort "Stromstoßschaltung" findet sich dort dann auch eine resourcenschonende Variante:
Code:
U "E_Taster"
FP "M_FP_Taster"
X "A_Lampe"
= "A_Lampe"
XOR - Lösungen sind bei vielen Programmierern unbeliebt, aber das liegt einfach nur daran das sie zu selten daran denken das es sowas praktisches gibt ;)

MfG,
Tryer

Matze 16. Mär 2010 07:17

Re: [SPS/AWL] Ausgang über einen Taster invertieren
 
Hallo zusammen!

@Erich: Danke, aber wie man sieht, geht es noch viel einfacher.
@Question_mark: Wenn es in der DP mal nicht klappt, schaue ich da vorbei, danke.
@Tryer: Ich bin wirklich überrascht. Das ist sowas von genial. Vielen Dank! :thumb:

Grüße, Matze

LargoD 16. Mär 2010 08:57

Re: [SPS/AWL] Ausgang über einen Taster invertieren
 
Die Lösung von Tryer ist zweifellos sehr elegant, braucht aber auch zwei Merker, nur merkt man das nicht so leicht, weil einer davon ein Bit im PAA ist. Für die Nicht-SPS-Kundigen: Wenn A_Lampe ein physischer Ausgang ist, geht der XOR-Befehl in die Hose, weil dann A_Lampe nicht rücklesbar ist.
Das Lösung ist halt für Step7 optimiert, schon mit der alten S5 geht's so nicht, u. a. wegen FP.
Gruß
Erich

Matze 16. Mär 2010 09:25

Re: [SPS/AWL] Ausgang über einen Taster invertieren
 
Hallo Erich,

müsste man in dem Fall mit einem Merker arbeiten, der den Status des Ausgangs repräsentiert und diesem in jedem Zyklus dem Ausgang zuweisen?
Bisher konnte ich den Ausgang immer auch auslesen, soweit ich weiß. Aber das war auch eine S7.

Grüße, Matze

LargoD 16. Mär 2010 10:05

Re: [SPS/AWL] Ausgang über einen Taster invertieren
 
Zitat:

Zitat von Matze
müsste man in dem Fall mit einem Merker arbeiten, der den Status des Ausgangs repräsentiert und diesem in jedem Zyklus dem Ausgang zuweisen?

Ja, so muss man es dann machen.
Zitat:

Zitat von Matze
Bisher konnte ich den Ausgang immer auch auslesen, soweit ich weiß. Aber das war auch eine S7.

S7 und auch S5 und viele andere SPSen auch kopieren vor der Bearbeitung der "zyklischen Anwendung" einen Teil des physischen Eingangs-Bereiches in den Eingangsspeicher (PAE) und nach der Bearbeitung einen Ausgangsspeicher (PAA) in den physischen Ausgangs-Bereich. Du greifst also nicht direkt auf die IOs zu. Das hat viele Vorteile, man sollte sich dieser Tatsache aber bewusst sein.
Wenn man z. B. einen Programmteil außerhalb der zyklischen Bearbeitung von einem Timer oder einem externen Interrupt anstoßen lässt, muss man sich selbst um die Aktualisierung des IO-Speichers und der verwendeten Ausgänge kümmern.

Gruß
Erich

Matze 16. Mär 2010 10:07

Re: [SPS/AWL] Ausgang über einen Taster invertieren
 
Danke für den Hinweis.

Ich weiß nicht, ob ich jemals Steuerungen programmieren werde, aber das Interesse ist da und da ist es immer gut, wenn man auf alles vorbereitet ist. ;)

Grüße, Matze


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:34 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz