![]() |
[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:
Kann man das vereinfachen?
// 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" Grüße, Matze |
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? |
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 |
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 |
Re: [SPS/AWL] Ausgang über einen Taster invertieren
Hm joah, das kann man glaub so sagen.
|
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) |
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 |
Re: [SPS/AWL] Ausgang über einen Taster invertieren
Zitat:
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:
Leider brauchst jetzt wieder 3 Merker, da die Flanke und auch der Zwischenmerker benötigt werden
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 |
Re: [SPS/AWL] Ausgang über einen Taster invertieren
Zitat:
Zitat:
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* |
Re: [SPS/AWL] Ausgang über einen Taster invertieren
Zitat:
Zitat:
|
Re: [SPS/AWL] Ausgang über einen Taster invertieren
Zitat:
|
Re: [SPS/AWL] Ausgang über einen Taster invertieren
Zitat:
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 :-) |
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 |
Re: [SPS/AWL] Ausgang über einen Taster invertieren
Zitat:
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 |
Re: [SPS/AWL] Ausgang über einen Taster invertieren
Zitat:
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... |
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:
Aber das kann jeder machen wie er mag, wenn die Firma nichts vorschreibt.
// Lampe einschalten
U "M_Taster_Pos_Flanke" UN "A_Lampe" S "M_Lampe_Neu" 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 ![]() Grüße, Matze |
Re: [SPS/AWL] Ausgang über einen Taster invertieren
Zitat:
Zitat:
|
Re: [SPS/AWL] Ausgang über einen Taster invertieren
Zitat:
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 |
Re: [SPS/AWL] Ausgang über einen Taster invertieren
Zitat:
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!" |
Re: [SPS/AWL] Ausgang über einen Taster invertieren
Hallo Matze,
Zitat:
![]() Gruß Question_mark |
Re: [SPS/AWL] Ausgang über einen Taster invertieren
Unter dem Stichwort "Stromstoßschaltung" findet sich dort dann auch eine resourcenschonende Variante:
Code:
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 ;)
U "E_Taster"
FP "M_FP_Taster" X "A_Lampe" = "A_Lampe" MfG, Tryer |
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 |
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 |
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 |
Re: [SPS/AWL] Ausgang über einen Taster invertieren
Zitat:
Zitat:
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 |
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