Hallo alle zusammen. Ich bin schon seit ca. 5 Jahren hier, habe aber nur ein paar mal um Hilfe gebeten. Heute ist es wieder soweit. Ich würde mich freuen, wenn einer von euch sich persönlich meinem Projekt widmet. Ich könnte natürlich alles hier posten, das würde aber sehr viel Zeit kosten und würde wahrscheinlich nicht schnell zum Erfolg führen. Wenn das aber nicht anders geht, dann auch gerne so. Ich würde gerne dafür auch zahlen, wenn mir jemand mein Programm so ändert dass es auch funktioniert. Ich habe einen at mega 8 und 5 Eingänge digital und 5 Ausgänge digital. Alles sind wenn / dann Bedingungen und auch Bedingungen so wie: solange der Eingang 1 nicht betätigt wird, solange soll der ausgang 3 betätigt sein. Es sind aber auch viele Verschachtelungen vorhanden. Ich denke mal ein profi brauch für das ganze Programm 20 Minuten. Wie könnte ich mit eurer Hilfe zum Ziel kommen? Um die Erstattung der Fahrtkosten etc. sorge ich natürlich. Danke erst mal!
Darko D. schrieb: > Ich denke mal ein profi brauch für das ganze Programm 20 Minuten. Du kriegst die Aufgabe des Programms selber nicht einmal geordnet dargestellt und meinst beurteilen zu können, wie lange ein Profi dafür braucht. Ein Vielfaches der 20 Minuten gehen wahrscheinlich schon alleine dafür drauf, um dir zu erzählen, wie du ihm dein Problem in verständlicher Form (i.e. logisch strukturiert) verklaren kannst.
Mach erst mal ein Programmablaufplan/PAP. Dann geht es weiter.
Hallo. Es tut mir leid, wenn ich mich nicht so gut ausdrücken kann. Ich wollte damit nur sagen, dass es vom Anspruch nicht so hoch ist. Es sind eig. nur wenn dann Bedingungen die ineinander verschachtelt sind. Ich habe ein ordentliches Flussdiagramm gemalt. Ich werde es gleich hochladen. LG
Bier und Popkorn stehen schon bereit… Oliver
:
Bearbeitet durch User
Das hier ist vom AT Mega 8 die Belegung (wenn das so geht) hoffe ich:
Als letztes möchte ich noch das unvollständige und nicht korrekte Programm als txt datei zur Verfügung stellen. Oli, für Essen und trinken wird auch gesorgt!
Deine Hausaufgaben machst du besser selbst. Dann lernst du auch etwas.
Darko D. schrieb: > Das hier ist vom AT Mega 8 die Belegung (wenn das so geht) hoffe > ich: Warum hast du beispielsweise beim "Port C4" dahinter (rot) geschrieben "Port C15"? Ähnlich bei anderen Ports...
Hallo. ja das stimmt wohl. Ich bin allerdings vor wenigen wochen Vater geworden und dann ist es immer mit der Zeit so eine sache... Ich würde mich dennoch freuen, wenn mir jemand die ersten 5 Zeilen erst mal stilistisch i.O. bringt, denn das == false oder true ist glaube ich falsch...
Darko D. schrieb: > Schaltung_Verlauf.bmp > 5,36 MB Darko D. schrieb: > AT_Mega8.bmp > 3,46 MB Erst lesen, dann posten. Was könnte der Hinweis "Zeichnungen und Screenshots im PNG- oder GIF-Format hochladen" wohl bedeuten? Fällt dir etwas auf?
Hallo pnp. Das kann ich dir sagen. Weil ich mich verechnet habe. Ich glaube B7 bedeutet das B1 und B2 und B3 zusammen angesteuert werden, ist das richtig? Es hätte jeweils 1 mehr heißen müssen oder?
Ich habe beides in PNG geändert. Danke für den Hinweis.
Ich gaube ich erinnere mich. Port C0 heißt im Programm C1 weil 2hoch null gleich 1 ergibt. Port c1 heißt im Programm c2 weil 2hoch eins gleich 2 ergibt. und so weiter. Und C5 im programm wäre dann der vierer und der einser zusammen...
Darko D. schrieb: > Hallo pnp. > Das kann ich dir sagen. > > Weil ich mich verechnet habe. Ich glaube B7 bedeutet das B1 und B2 und > B3 zusammen angesteuert werden, ist das richtig? Es hätte jeweils 1 mehr > heißen müssen oder? Nein. "Port C4" heißt "PortC Pin4". Und wo sich dieser am µC befindet, ist im Datenblatt festgelegt. Du kannst nicht einfach aus einer 4 eine 15 machen. :-)
Danke danke. Ich habe da nicht einfach ne 15 draus gemacht. Port c4 im Programm wäre dann Port zwei hoch 4 und das ist dann PortC16. Ich habe mich wie gesagt immer um einen vertan.
Mir fällt sofort auf, dass das Programm drei tote Enden hat. Was passiert danach? Wenn du danach nicht kit dem Weltuntergang rechnest, dann muss es dort irgendwie weiter gehen. Weiterhin fehlt mir da jegliche Fehlerbehandlung. In so einem Diagramm würde ich die auch nicht einzeichnen, aber wenigstens als Text dazu liefern. Beispiele: > Ventil auf ansteuern bis Endlage erreicht Und wenn die Endlage nicht erreicht wird, was dann? Wie lange darf das dauern? > Betätigung Schalter auf/zu B31 Was soll passieren, wenn der Schalter zwischendurch während des folgenden Ablaufes erneut betätigt wird? Bei deinen ganzen Kästchen wird nicht klar zwischen Bedingungen, Ereignissen und Reaktionen unterschieden. Das solltest du klarer darstellen, durch unterschiedliche Symbole. Die ersten 10 Minuten sind schon vorbei. So viel zu den 20 Minuten.
> if(PORTB |=(1<<31) == true)
Habs nicht geprüft, aber das wird nie wahr werden.
1. eine Zuweisung im if ist meist bedenklich
2. das "== true" ist überflüssig, oder tut nicht das was du möchtest
3. die (1<<31) ? das wird sicherlich nicht das tun, was beabsichtigt
ist.
3 Böcke in einer Zeile!
Oha ihr macht mir Mut... Also eine Fehlerbehandlung soll da nicht mit eingebaut werden. Das wird dann zu kompliziert. Es handelt sich um eine Klappe die Auf und zu gehen soll. Es soll solange angesteuert werden bis die endlage erreicht ist. Die endlage wird irgendwann erreicht. Warum soll sie nicht erreicht werden. Das dauert schätzungsweise ca. 5 bis 7 sekunden. Wenn die endlage nicht erreicht wird ist irgendwas kaputt. das sehe ich dann ja. Das Programm soll nicht ins tote laufen. Solange der taster nicht betätigt wird, passiert auch nichts. Am besten wäre es wenn der taster (B32) während der prozedur stillgelegt werden könnte. bis ein Ende erreicht ist.
Zum Programm Entwurf: Bin nur Arduino, könnte mich auf C runter beugen. Verstehe aber den Plan nicht. Müsste erstmal wissen/verstehen was der ganze Kram den überhaupt sein soll. Welche Klappe welchen Sinn hat. Das ganze riecht nach einem "Zustandsautomaten"! Es stinkt geradezu danach. Also denkt man auch in Zuständen! Klar benennen! Aufzählungen! Die Bedingungen für den Wechsel der Zustände klar benennen. Dort in if Verschachtelungen zu denken, geht fix schief. 1 Ebene mit einer einfachen Bedingung ist leicht zu überblicken Je mehr Ebenen und je komplexer die Bedingungen, desto gruseliger der Debug Aufwand.
Aber ich glaube, dass das Programm von oben nach unten läuft. das bedeutet wenn einmal eine if Prüfung stattgefunden hat, dann ist er in der Prozedur drinnen. Wenn sich der Status dann ändert spielt es keine Rolle. die Bedingung wird dann stumpf abgearbeitet.
Kann ich ein Video von der Klappe machen? Vielleicht ist das Anschaulicher? Es wäre schade, wenn das zwei Jahre lange Projekt am Programm scheitert...
> if(PORTB |=(1<<31) == true)
das sollte eig. bedeuten als text:
Wenn PB5 belegt ist, dann soll ....
Wie heist es denn in der Programmiersprache richtig?
Warum machst du dir das Leben so schwer und benennst die Pins nicht? Wenn die Klappe an PortB B4 hängt, schreibst du:
1 | #define Klappe 4
|
2 | // und als PortB
|
3 | #define Ausgang PORTB
|
4 | // dann kannst du schreiben
|
5 | Ausgang |= (1 << Klappe); // Klappe auf |
6 | Ausgang &= ~(1 << Klappe); // Klappe zu |
Darko D. schrieb: >> if(PORTB |=(1<<31) == true) > > das sollte eig. bedeuten als text: > > Wenn PB5 belegt ist, dann soll .... > > Wie heist es denn in der Programmiersprache richtig? Vermutlich: if(PORTB | (1<<PB5))
Ok. Das sieht optisch schon mal gut aus. Und wie sieht es aus, wenn das ganze nicht true sein soll also wenn PB5 False ist dann....
Ich würde zu einer Siemens Logo greifen, nix gebastel… funktioniert auch in 10 Jahren noch und wenn nicht, gibts Ersatz… Meine Meinung und eigene Erfahrung
Wird bestimmt auch zuverlässig funktionieren. Es ist bei mir schon quasi alles fertig, es fehlt nur noch das Programm. Gebastelt ist bei mir nichts. Alle elektrischen und pneumatischen Normen wurden eingehalten.
Oha, drei Klammern zu am ende. WAHNSINN! Danke! Ich hoffe ich bekomme noch ein Weihnachtsgeschenk von einem aus Bremen und Umgehbung und es klingelt an der Türe :-)
| << --das war falsch! Sorry Wie gesagt, das mit den Bedingungen nervt fürchterlich. Ein Scheunentor für Flüchtigkeitsfehler. Wie ich sie gerade wieder gebaut habe.... Schon gesagt, ich würde es gänzlich anders angehen!
Ja ich möchte das gerne durchziehen. Ein anderer Weg ist mir nicht bekannt noch habe ich die Möglichkeit jetzt einen ganz anderen Weg einzuschlagen. Ich bekomme es zur Not mit Opferung des ganzen Winterurlaubes ab morgen auch irgendwie hin. Ich sehe sowas als nichts Unmögliches 5 oder 10 Bedingungen aufzustellen. Es fehlen mir einfach auch die Grundlagen. Da muss ich mich leider vielleicht selbst einarbeiten...
Darko D. schrieb: > Oha, drei Klammern zu am ende. WAHNSINN! Deswegen kapselt man sich so etwas in Funktionen: mit sprechenden Namen:
1 | bool schalter_klappe_gedrueckt() |
2 | {
|
3 | return (PORTB && (1<<PB5))==0; |
4 | }
|
5 | |
6 | |
7 | if (schalter_klappe_gedrueckt()) |
8 | {
|
9 | tue dies; |
10 | }
|
11 | |
12 | if (!schalter_klappe_gedrueckt()) |
13 | {
|
14 | tue das; |
15 | }
|
Gleiches gilt für die Ansteuerung der Ausgänge
Darko D. schrieb: > Also eine Fehlerbehandlung soll da nicht mit eingebaut werden. Das wird > dann zu kompliziert. Mal ehrlich...haste in der Firma beim Schrottwichteln den Hauptgewinn gezogen??? Als allererstes erwarte ich mal ein irgendwie geartetes Flußdiagramm, das zeigt, was alles soll, was nicht soll und was kann und was nicht kann usw... wenn du schon daran scheiterst, dann brauchst du mit Programm gar nicht erst anfangen! Sorry, aber meine Meinung ... Gruß Rainer
Darko D. schrieb: > Aber ich glaube, dass das Programm von oben nach unten läuft. Früher oder später wird es komplexer, mit Ereignissen die den normalen einfachen Ablauf unterbrechen. Spätestens dann wirst du uns für den Tipp mit dem Zustandsautomaten dankbar sein. Hier ein bisschen Anregung, wie man Zustandsautomaten grafisch und als Tabelle darstellen kann. Mein persönlicher Favorit ist die Tabelle. http://stefanfrings.de/multithreading_arduino/index.html#planung
Darko D. schrieb: > Ok. Das sieht optisch schon mal gut aus. Und wie sieht es aus, wenn das > ganze nicht true sein soll also wenn PB5 False ist dann.... Beitrag "Re: Einen einzelnen Pin abfragen" https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Eing%C3%A4nge_(Wie_kommen_Signale_in_den_%C2%B5C)
1 | /* Fuehre Aktion aus, wenn Bit Nr. 2 (das "dritte" Bit) in PINB geloescht (0) ist */
|
2 | if ( !(PINB & (1<<PINB5)) ) { |
3 | /* Aktion */
|
4 | }
|
Darko D. schrieb: > Also eine Fehlerbehandlung soll da nicht mit eingebaut werden. > Das wird dann zu kompliziert. Das ist der Punkt, wo ich den Auftrag ablehnen würde. Außer, du unterzeichnest mir einen Freibrief für ein beliebig schlechtes Ergebnis mit deinem eigenen Blut, sowie einer Unterlassens-Erklärung, diesen Fall jemals öffentlich zu machen. Ach Käse, dafür ist es schon zu spät. Also ich gebe dir gerne Tipps, aber ich werde dir nichts programmieren.
Axel R. schrieb: > Darko D. schrieb: >> Ok. Das sieht optisch schon mal gut aus. Und wie sieht es aus, wenn das >> ganze nicht true sein soll also wenn PB5 False ist dann.... > > Beitrag "Re: Einen einzelnen Pin abfragen" > https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Eing%C3%A4nge_(Wie_kommen_Signale_in_den_%C2%B5C) > >
1 | > /* Fuehre Aktion aus, wenn Bit Nr. 2 (das "dritte" Bit) in PINB |
2 | > geloescht (0) ist */
|
3 | > if ( !(PINB & (1<<PINB5)) ) { |
4 | > /* Aktion */ |
5 | > } |
6 | >
|
Ich hab den Kommentar ausm Tutorial nicht angepasst. Da muss dann tatsächlich die korrespondierende Zahl hin -> "5", in deinem Fall. Nicht die "ZWEI", sry
Stefan ⛄ F. schrieb: > bool schalter_klappe_gedrueckt() > { > return (PORTB && (1<<PB5))==0; > } Sorry, um Eingänge zu lesen muss man natürlich PINB schreiben und nur ein &.
Darko D. schrieb: > Hallo pnp. > Das kann ich dir sagen. > > Weil ich mich verechnet habe. Ich glaube B7 bedeutet das B1 und B2 und > B3 zusammen angesteuert werden, ist das richtig? Es hätte jeweils 1 mehr > heißen müssen oder? DAS IST FALSCH ! B7 ist ein NAME / Label der in io.h definiert ist. Das ist kein Wert mit dem man rechnen kann ! Bitte mal hier lesen : https://de.wikibooks.org/wiki/C-Programmierung_mit_AVR-GCC/_IO-Ports Daa sind auch Beispiele für den Mega8 angegeben.
Wenn ihn diese ganzen Fehler nicht vollends verwirren, wäre ich überrascht.
> Warum soll sie nicht erreicht werden.
Was soll denn passieren, wenn in der Klappe die Katze oder der Otter
drin stecken und nicht alleine raus kommen. Läuft das Programm dann zum
Abort?
mfG
Darko D. schrieb: > Es fehlen mir einfach auch die Grundlagen. > Da muss ich mich leider vielleicht selbst einarbeiten... Wenn jetzt schon 2 Jahre ins Land gezogen sind, dann sehe ich da etwas schwarz. Darko D. schrieb: > noch habe ich die Möglichkeit jetzt einen ganz anderen Weg > einzuschlagen. Wenn die Aufgabe einen endlichen Automaten erfordert, dann wird die Endlösung auch ein solcher sein. Egal ob du weißt, was das ist, oder jemals beabsichtigt hast einen solchen zu bauen. Ich halte es für einfacher ihn dann auch so zu nennen und die ausgetretenen Pfade zu nutzen. Tipp: Du bist nicht der erste, der einen solchen Automaten baut. Grob vereinfacht: Alle Ablaufsteuerungen sind endliche Automaten (Zustandsmaschinen)
Darko D. schrieb: > Ich habe einen at mega 8 und 5 Eingänge digital und 5 Ausgänge digital. > > Alles sind wenn / dann Bedingungen und auch Bedingungen so wie: > > solange der Eingang 1 nicht betätigt wird, solange soll der ausgang 3 > betätigt sein. Also wenn ich das richtig verstehe, gibt es auf die 32 möglichen Eingangskombinationen auch nur maximal 32 Ausgangskombinationen? > Es sind aber auch viele Verschachtelungen vorhanden. Schmeißt das die oberen Aussagen wieder um? Schmeiß die 5 Eingangsbits in die 5 untersten Bits eines Bytes und hole damit eine weitere Zahl aus einem Array, in der sich die Kombination der 5 Ausgangsbits befindet. Dafür musst Du vorher eine Tabelle machen, in der das, was Du eigentlich möchtest, drin steht. Sprich: Für jede Eingangskombination musst Du für jeden Ausgang eine Entscheidung treffen, ob dieser bei der Kombination an oder aus sein soll. Du könntest diese Tabelle prinzipiell auch in ein EPROM oder GAL brennen und dann ohne Prozessor arbeiten. EPROM ginge mit viel Geduld und Konzentration sogar von Hand. Gruß Jobst
Jobst M. schrieb: > Du könntest diese Tabelle prinzipiell auch in ein EPROM oder GAL brennen > und dann ohne Prozessor arbeiten So einfach ist es nicht. Du hast wohl übersehen dass da Zeitverzögerungen mit drin sind und bestimmte Teile erst ausgeführt werden sollen, nachdem vorher etwas anderes passierte. Bei einem kommerziellen Auftrag wären jetzt schon Reisekosten und mindestens 2 Stunden Meeting angefallen. So viel zu "Ich denke mal ein Profi brauch für das ganze Programm 20 Minuten".
Matthias S. schrieb: > Warum machst du dir das Leben so schwer und benennst die Pins nicht? An dem Ding ist Mechanik dran, die aus Sicht des µC unendlich langsam reagiert. Das schreit danach, einen ATMega328 zu nehmen und das in Arduino zu machen, vorne alles schön mit Klarnamen deklariert:
1 | digitalWrite (Relais, HIGH); |
2 | digitalWrite (LEDRed, LOW); |
3 | if ((digitalRead(StartKey) == LOW) ... |
Vor xx-Jahren habe ich ein paar Ablaufsteuerungen auf MC68HC805 in Assembler gemacht, die direkte Portklempnerei mit and / or würde ich mir heutzutage nicht mehr antun wollen. Darko D. schrieb: > Ich bekomme es zur Not mit Opferung des ganzen > Winterurlaubes ab morgen auch irgendwie hin. Ah ja, soweit zu "20 Minuten" Für mich liest sich das so, dass Du in der Firma eine Aufgabe bekommen hast, der Du nicht gewachsen bist. > Ich sehe sowas als nichts > Unmögliches 5 oder 10 Bedingungen aufzustellen. Ich auch nicht, aber werde es nicht für Dich machen. > Da muss ich mich leider vielleicht selbst einarbeiten... Besser ist das. Wenn das dann fertig ist und an die reale Maschine kommt, wird es nicht sauber funktionieren, da sollte man die Software selbst in der Hand haben und direkt anpassen können.
Hallo. Danke wirklich an die die mir irgendwie geholfen haben. Ich habe das mit den 20 Minuten wohl zeitlich total verschätzt. Ich kenne mich damit auch gar nicht so aus. Wir werden jetzt so verbleiben, dass ich selbst das zum laufen bekomme, den Quellcode hier poste und dann den quellcode nur für den feinschliff zum überfliegen sehe. Es geht schließlich nur darum eine blöde Klappe auf und ab zu fahren. Ich möchte kein neues Auto erfinden was weniger Sprit verbraucht. Ich kann mir auch bei aller liebe nicht erklären, was an dem Flussdiagramm nicht zu verstehen ist. Ich habe mir wirklich viel mühe gegeben und weiß auch nicht wie ich das anders schreiben soll. Ich habe ja angeboten ein Video zu posten. Aber das wurde leider übersehen. Nagut dann bis in ca. 2 wochen. LG Darko aus Bremen
Interessant, dass das eine Aufgabe aus der Firma sein soll! Kreativität ist hier ja groß geschrieben!!!
Darko D. schrieb: > Ich habe mir wirklich viel mühe gegeben und weiß auch nicht wie ich das > anders schreiben soll. Ich habe ja angeboten ein Video zu posten. Aber > das wurde leider übersehen. Aus dem ganzen Hintergrundrauschen das Gehaltvolle raus zu ziehen ist extrem schwierig, für einen Anfänger unmöglich. Leg alles zur Seite und fang neu an. Eine SPS zu verwenden ist sicher kein schlechter Tipp, heißt aber eine neue Dose der Pandora aufzumachen. Und heißt auch, SPS lernen. Falls es unbedingt eine uC-Lösung sein soll, würde ich vielleicht noch Richtung Stefan hören, und mir die Geschichte mir dem Zustandsautomaten ankucken. Das heißt aber, erst mal Basics lernen. Als Nächstes lernst du zu abstrahieren, denken auf hohem Niveau. Für deinen Basisentwurf vergisst du erst mal so Dinge wie B7 und 2-hoch-irgendwas, oder auch & und ||. Du brauchst erst einen Plan, der funktioniert und keinen Programmcode. Und dann lernst du C oder C++ oder was auch immer. Erst danach kannst Du daran denken, zu coden ... just my 2ct
Darko D. schrieb: > Interessant, dass das eine Aufgabe aus der Firma sein soll! > Kreativität ist hier ja groß geschrieben!!! Du mußt das so verstehen, dass es in Firmen immer mal wieder Chefs gibt, die eine vermeindlich einfache Aufgabe einfach demjenigen an den Hals hängen, der nicht rechtzeitig in Deckung gegangen ist. Wobei der Chef ganz diffus im Kopf hat, dass in seiner Truppe prinzipiell jeder alles kann! Dass das nicht so ist - sein muß - interessiert den Chef erst mal nicht und die Mitarbeiter haben auch kein Interesse daran, an dieser Meinung groß was zu ändern. So kann es jemanden aus der Truppe eben ganz bös erwischen und dann könnte er z.B. so einen "Hilferuf" wie deinen hier ablassen :-) Gruß Rainer
Darko D. schrieb: > Es geht schließlich nur darum eine blöde Klappe auf und ab zu fahren. > Ich möchte kein neues Auto erfinden was weniger Sprit verbraucht. > Ich kann mir auch bei aller liebe nicht erklären, was an dem > Flussdiagramm nicht zu verstehen ist. Ein kleines Verständnisproblem kann das ganze bisher geschriebene hinfällig machen. Aus dem Grund will ein erfahrener Programmierer immer das gesamte vollständig verstanden haben! Ein Bild. Wenn das Bild im Kopf, auf Papier, klar ist, dann ist programmieren nur wie ein malen nach Zahlen. Und nein, dein Flussdiagram ist ein Anfang, aber sicher nicht komplett verständlich, wenn man den Apparat nicht kennt. Bedenke: Keiner hier, kennt deine Maschine. Keiner kann die logischen Fehler erkennen, welche du da evtl eingebaut hast. Ich kann nur sagen, deine Erklärungen sind unzureichend. Bisher. Darko D. schrieb: > Ich habe ja angeboten ein Video zu posten. Aber > das wurde leider übersehen. Du möchtest, dass ich/wir nach Information betteln?!?!?! Das kannst du knicken! Entweder lieferst du die nötige Information, wenn dir geholfen werden soll. Oder du lieferst eben nicht.
my2ct schrieb: > Ein Vielfaches der 20 Minuten gehen wahrscheinlich schon alleine dafür > drauf, ... Jetzt sind wir schon bei über 7 1/2 Stunden ...
my2ct schrieb: > my2ct schrieb: >> Ein Vielfaches der 20 Minuten gehen wahrscheinlich schon alleine dafür >> drauf, ... > > Jetzt sind wir schon bei über 7 1/2 Stunden ... Naja, die ~20 Minuten sind durchaus realistisch wenn der TE in der Lage ist seine Anforderung vollständig(!) und fehlerfrei zu formulieren. Das bedeutet insbesondere KEIN Video vom Ablauf zu posten, was man nicht mit Worten formulieren kann, kann man auch nicht implementieren. Eigentlich eine einfache Sache. Aber Formulierungen wie Ventilklappe auf bis Ende (C7) sind einfach nicht präzise genug. Es muss vielmehr ein Aktoren Kommando sein C6 inaktiv + C7 aktiv und dann eine Prüfung auf B3 aktiv + B7 inaktiv und das in einer Schleife mit einer maximalen Wartezeit und einer Fehlerbehandlung wenn es zu lange dauert oder unplausible Informationen ankommen z.B. B3 und B7 gleichzeitig aktiv. etc, etc. Wenn man alle Elemente im PAP auf diese Art schon sprachlich formuliert, kann man es praktisch direkt in Quelltext gießen.
:
Bearbeitet durch User
Hallo alle zusammen. Ich habe eingesehen, dass die 20 Minuten nicht realistisch sind. Diese Zeit bezog sich allerdings rein auf das Programmieren. Ich bin davon ausgegangen, dass das Flussdiagramm selbsterklärend ist. Dem ist aber nicht so. Ich bin leider nicht in der Lage noch präzisere Informationen zu liefern, weil das Diagramm für mich zu 100 Prozent selbsterklärend ist. Wir verbleiben einfach so, dass ich das ganze zum Laufen bekomme und Ihr dann vielleicht darüber schaut, ob das so in Ordnung ist oder ob man das verbessern kann. Was ich natürlich gerne machen könnte wären Fragen beantworten wie zum Beispiel: Was soll passieren wenn der Endlagenschalter nicht erreicht wird? Antwort: es soll so lange versucht werden bis der erreicht wird, auch wenn es 100 Jahre dauert, denn dann muss was kaputt sein. Und dann muss es repariert werden. Ich hoffe das ich auch nach der schwerwiegenden Niederlage gestern in ca. 2 Wochen auf euch zugreifen kann. Und für diese geringen Anforderungen muss man sicherlich kein Programmierprofi sein. Ich denke, dass ich es selbst schaffen werde nach einiger Zeit.
Meine Frau war gestern sauer auf euch, weil Ihr mir nicht so direkt geholfen habt. Ich habe das ein wenig anders gesehen. Ich komme normalerweise aus einem ganz anderen Forum. Dort heißt es oft: Mein Auto springt nicht an, woran liegt es? Darüber rege ich mich auch so auf über die unpräzisen Informationen so wie ihr es auch macht. So hart ist das Leben einfach :-)
Stefan ⛄ F. schrieb: > Du hast wohl übersehen dass da > Zeitverzögerungen mit drin sind und bestimmte Teile erst ausgeführt > werden sollen, nachdem vorher etwas anderes passierte. Offensichtlich ist es mir durch die Lappen gegangen. Danke! Dann muss man eben einfach Rückkopplungen von weiteren Aus- und Eingängen auf weitere Eingänge schaffen. Jede Anforderung Multipliziert den Aufwand dann. Dennoch hängt alles daran, dass dafür die Anforderungen in einer Übersicht aufgelistet werden müssen. Aber da sind sich hier ja alle einig. Gruß Jobst
Darko D. schrieb: > ich auch nach der schwerwiegenden Niederlage gestern Eine Enttäuschung? Das ist ein wahrhaft positives Erlebnis, oder? Denn eine (selbst)Täuschung ist von dir genommen. Jetzt kann es, der Wahrhaftigkeit ins Gesicht blickend, weiter gehen! Darko D. schrieb: > Ich bin leider nicht in der > Lage noch präzisere Informationen zu liefern, weil das Diagramm für mich > zu 100 Prozent selbsterklärend ist. Du hast die Maschine vor dir! Wir sehen nichts. Wenn denn wenigstens die Klötzchen in deinem Flussdiagramm eindeutig benannt wären.... Dann könnte man sie einzeln besprechen. Sind sie aber nicht. Hinter einigen Klötzchen verbergen sich auch wieder Abläufe, endliche Automaten. Es ist ein Automaten Zoo. Ich mache mal den Propheten: Du wirst in deinen Bedingungen und Schachtelungstiefen ersaufen. Der einzige Ausweg daraus: Klarheit schaffen. Klarheit in den Gedanken, und auf dem Papier.
Darko D. schrieb: > Meine Frau war gestern sauer auf euch, weil Ihr mir nicht so direkt > geholfen habt. Tja, das Leben ist kein Schuhgeschäft mit cooler Musik! Schönen Gruß! :-D Gruß Jobst
Ja wahscheinlich habt ihr alle Recht. Ich werde es einfach versuchen und daraus lernen müssen. Eventuell auch so, wie man es nicht macht. So ganz undurchsichtig ist es für mich allerdings nicht. Ihr habt Recht, dass ihr weder die Klappe noch die ganze Mechanik dahinter gesehen habt. Das Ziel des Forums ist es ja nicht irgendwelche Leute zu enttäuschen, sondern zu helfen. (Zumindest die meisten) Manchmal ist die Realität aber eine andere wie man sie selbst wahrnimmt.
Oder du lässt es gegen Bezahlung von jemanden machen. Selber machen ist natürlich am billigsten.
Ja das war ja auch mein Gedanke. Deshalb ja auch aus dem Raum Bremen. Allerding habe ich mich da zeittechnisch offensichtlich völlig verschätzt. Mit allem drum und dran wären es dann vielleicht 4 oder 5 Stunden Arbeitszeit mit Anfahrt und pi pa po. Mehrere hundert Euro für den Quellcode kann ich nicht zahlen.
Ich bin von einer reinen Schreibzeit von vielleicht 20 bis 30 Minuten ausgegangen. Allerdings war mir nicht bewusst, dass die Rahmenbedingungen nicht in Ordnung sind. Ich kenne die Klappe ja nun innen und auswendig, weil ich sie ja selbst gebaut / geschweißt und konstruiert habe. Ihr nicht.
Darko D. schrieb: > Das Ziel des Forums ist es ja nicht irgendwelche Leute zu enttäuschen, > sondern zu helfen. Falsch! Täuschungen und Irrtümer beseitigen ist einer der Zwecke des Forums. Ohne geht es nicht vorwärts. Für "Täuschungen beseitigen" gibt es ein Wort: Enttäuschen
EAF schrieb: >> Ich bin leider nicht in der >> Lage noch präzisere Informationen zu liefern > Du hast die Maschine vor dir! Ja, schon aber es hat halt nicht jedermann das Talent, seine Anforderungen technisch und logisch sauber zu formulieren. Wir haben in unserer Firma genau so viele technische Projektleiter wie Softwareentwickler um den Kunden genau dabei zu helfen. Und die haben alle immer gut zu tun.
Hallo, Tim T. schrieb: > Aber Formulierungen wie Ventilklappe auf bis Ende (C7) sind einfach > nicht präzise genug. Es muss vielmehr ein Aktoren Kommando sein C6 > inaktiv + C7 aktiv und dann eine Prüfung auf B3 aktiv + B7 inaktiv und > das in einer Schleife mit einer maximalen Wartezeit und einer > Fehlerbehandlung wenn es zu lange dauert oder unplausible Informationen > ankommen z.B. B3 und B7 gleichzeitig aktiv. etc, etc. Nehmen wir mal an vor du würdest als Kunde vor einem Dienstleister sitzen und ihm von deinem Problem erzählen und darum bitten dafür eine Lösung zu finden und der Dienstleister würde dir sagen du sollst doch gefälligst erst mal dein Problem präzisieren, denn "wenn man alle Elemente im PAP auf diese Art schon sprachlich formuliert, kann man es praktisch direkt in Quelltext gießen". Was würdest du dann denken? rhf
EAF schrieb: > Der einzige Ausweg daraus: Klarheit schaffen. > Klarheit in den Gedanken, und auf dem Papier. Jawohl. Leider kommt die Einsicht oft erst zu spät, nachdem der erste Wurf nicht zufrieden stellte. Beim Ausbessern merkt man erst nach vielen Stunden, dass das Grundgerüst unzureichend ausbaufähig ist und man quasi nochmal mit einem neuen Konzept von vorne anfangen muss. Bis dahin hat man bereits das dreifache an Zeit/Geld hinein gesteckt, als nötig gewesen wäre.
Ich würde antworten, dass ich nicht weiß was PAP ist und was Elemente sind. Und auf die Probleme würde ich sagen, dass die Klappe hochfahren muss und die Absaugung aus sein soll dabei und das im moment nicht funktioniert.
Darko D. schrieb: > Ich werde es einfach versuchen und > daraus lernen müssen. Eventuell auch so, wie man es nicht macht Mach mal. Wenn es ein Hobby ist, dann kann man mit dem Aufwand ja auch leben.
Darko D. schrieb: > Allerding habe ich mich da zeittechnisch offensichtlich völlig > verschätzt. > Mit allem drum und dran wären es dann vielleicht 4 oder 5 Stunden > Arbeitszeit mit Anfahrt und pi pa po. Stop! Du maßt dir schon wieder an, den Aufwand schätzen zu können obwohl du gerade erst bemerkt hast, dass du genau das nicht kannst! > Mehrere hundert Euro für den Quellcode kann ich nicht zahlen. Das wird aber so viel kosten, wenn du es machen lässt.
Roland F. schrieb: > Nehmen wir mal an vor du würdest als Kunde vor einem Dienstleister > sitzen und ihm von deinem Problem erzählen ... > Was würdest du dann denken? Wir sind hier aber Kunde und Dienstleister.
Ja also ganz ungern mache ich es nicht. Der Lernfaktor ist bei mir auch wichtig. Allerdings habe ich im Moment ein kleines Kind zu Hause (3 Monate) und die Klappe ist jetzt zu 95 % Fertig (2 Jahre Aufbauzeit) Nur die Software fehlt quasi. Es wäre schade wenn das Ganze noch 2 Jahre jetzt dauern würde.
Stefan ⛄ F. schrieb: > Wir sind hier aber Kunde und Dienstleister. Das nicht fehlte. Wir sind nicht Kunde und Dienstleister. Wer hier wie ein Kunde behandelt werden will, der soll einen Auftrag erteilen und zahlen.
Darko D. schrieb: > Ja also ganz ungern mache ich es nicht. > Der Lernfaktor ist bei mir auch wichtig Versuche den Vorschlag anzunehmen, es als Zustandsautomat zu dokumentieren (grafisch und als Tabelle) und dann wie von mir vorgeschlagen mit switch/case umzusetzen. Das ist ein möglicher Ansatz, der Erfahrungsgemäß gut klappt und gut ausbaufähig ist.
Was ist eigentlich mit der Leistungselektronik für die Aktoransteuerung? Wer entwickelt die?
Die Schalter / Ventile Leistungselektronik ist schon fertig. Sie ist von mir selbst gelötet.
Darko D. schrieb: > Die Schalter / Ventile Leistungselektronik ist schon fertig. Sie ist von > mir selbst gelötet. Und vermutlich genau so gut durchdacht, wie der Programmablauf. Also ohne Fehlerbehandlung.
Löten kann ich ein bisschen. Ich habe eine Lötstation von Ersa mit Heißluft. Vario 2 heißt sie glaube ich.
MaWin schrieb: > Was ist eigentlich mit der Leistungselektronik für die Aktoransteuerung? > Wer entwickelt die? Warte, ich ahne die Antwort schon! Schraubklemmen, das sind Schraubklemmen. Das ist kein Problem.
Stefan ⛄ F. schrieb: > Wer hier wie ein Kunde behandelt werden will, der soll einen Auftrag > erteilen und zahlen. Aber auch dann muss man Fragen nach der genauen Funktionsweise beantworten. Also genau das, was der TO leider nicht kann...
Ja das habe ich verstanden. Ich weiß auch leider nicht was ein Zustandsautomat ist. Was ich anbieten kann (als Kunde) ist einen deutschen Text niederzuschreiben was alles passieren soll und was passieren kann. Wenn das weiterhelfen könnte würde ich das tun.
Darko D. schrieb: > Ich weiß auch leider nicht was ein > Zustandsautomat ist Sowas und die anderen Fachbegriffe kann man googlen.
Darko D. schrieb: > Die Schalter / Ventile Leistungselektronik ist schon fertig. Sie ist von > mir selbst gelötet. Ok. Die Frage war allerdings, ob sie bereits entwickelt ist, bzw. wer das tun soll. Das hat mit Löten nichts zu tun. Aber gut, wenn deine Schaltung funktioniert, wird sie möglicherweise hinreichend gut entwickelt sein.
Darko D. schrieb: > Ich weiß auch leider nicht was ein Zustandsautomat ist. https://de.wikipedia.org/wiki/Endlicher_Automat
Darko D. schrieb: > Ich weiß auch leider nicht was ein > Zustandsautomat ist. Ein Zustandsautomat (auch State machine genannt) erzeugt vereinfacht ausgedrückt auf Basis von Eingangssignalen bestimmte Ausgangssignale. Du hast also deine 5 Eingangssignale (E0, E1, E2, E3, E4) und deine 5 Ausgangssignale (A0, A1, A2, A3, A4). Mit Hilfe dieser 5 Eingangssignale kannst du 2^5 (32) verschiedene Zustände erfassen und 2^5 (32) verschiedene Antworten ausgeben. Diese kannst du in Form einer (Wahrheits-)Tabelle anlegen. Mit verschiedenen Methodiken lässt sich daraus ein boolscher Algorithmus erzeugen (konjunktive Normalform und disjunktive Normalform). Es wird aber auch Zustände geben, in denen dich vielleicht nur 3 der 5 Eingangssignale interessieren. Dies kann zum optimieren des Algorithmus verwendet werden, auch hier gibt es verschiedene Verfahren um aus der Normalform eine Optimierung zu erzeugen. (Karnaugh-Veitch-Diagramm, Quine und McCluskey Verfahren), eine einfache State machine lässt sich so mit dem optimierten Algorithmus mit wenig Aufwand umsetzen. In deinem Fall halte ich es aber für sinnvoller eine gewöhnliche Ablaufsteuerung zu realisieren, lässt sich besser warten und ist verständlicher.
Darko D. schrieb: > ich anbieten kann (als Kunde) ist einen > deutschen Text niederzuschreiben was alles passieren soll und was > passieren kann. > Wenn das weiterhelfen könnte würde ich das tun. Der Esel und die Karotte.....
Darko D. schrieb: > Ja das habe ich verstanden. Ich weiß auch leider nicht was ein > Zustandsautomat ist. Habe ich dir aufgeschrieben und verlinkt: Stefan ⛄ F. schrieb: > Hier ein bisschen Anregung, wie man Zustandsautomaten grafisch und als > Tabelle darstellen kann. http://stefanfrings.de/multithreading_arduino/index.html#planung
Einfacher Lösungsansatz ohne Flußdiagramm. Es gibt 32 Eingangszustände und 32 Ausgangszustände. Nun kann man die Eingangszustände zyklisch abfragen und dann den entsprechenden Ausgangszustand setzen. Eingangszustände Ausgangszustände (Bsp.) 0 0 0 0 0 =0 0 1 1 0 0 =12 0 0 0 0 1 =1 0 0 1 1 1 =7 0 0 0 1 0 =2 1 0 1 1 0 =11 u.s.w. u.s.w. Alles in ein Array schreiben und dann den "Eingangswert" als Index verwenden. Das wars.
Joe schrieb: > Das wars. Nein das war's nicht. Dieses Konzept ist unzureichend. Du hast das Diagramm von Darko genau so wenig verstanden, wie Jobst.
OK. Verstanden. Ich werde es in einer solchen Form niederschreiben. Dann werde ich die Form hier schreiben!
Oder mit boolscher Algebra für die Ausgänge jeweils einen Term schreiben. A B C D E als Eingänge X1 X2 X3 X4 X5 als Ausgänge Dann X1=(A = 1) oder (B = 0) und (D = 1) X2= (B=1) und (C=1) oder (E=1) u.s.w. fertig.
Stefan ⛄ F. schrieb: > Nein das war's nicht. Dieses Konzept ist unzureichend. Du hast das > Diagramm von Darko genau so wenig verstanden, wie Jobst. Ich habe mir das Diagramm gar nicht angesehen.
Roland F. schrieb: > Nehmen wir mal an vor du würdest als Kunde vor einem Dienstleister > sitzen und ihm von deinem Problem erzählen und darum bitten dafür eine > Lösung zu finden und der Dienstleister würde dir sagen du sollst doch > gefälligst erst mal dein Problem präzisieren, denn "wenn man alle > Elemente im PAP auf diese Art schon sprachlich formuliert, kann man es > praktisch direkt in Quelltext gießen". > > Was würdest du dann denken? Ich würde denken hmm, komme ich damit klar oder beauftrage ich einen anderen Dienstleister, der mich alleine wegen dem zeitlichen Mahraufwand, mir alles aus der Nase zu ziehen, eine ganze Menge mehr Geld kosten wird. Dazu kommt noch dass solche Dienstleister, die das Denken für mich übernehmen, grundsätzlich auch noch einen höheren Stundensatz haben. Bezogen auf den TE kann ich nicht erkennen, dass er gewillt ist diese Mehrkosten zu zahlen und darum eben mehr Eigeninitiative zeigen muss. Darko D. schrieb: > Ja das habe ich verstanden. Ich weiß auch leider nicht was ein > Zustandsautomat ist. Was ich anbieten kann (als Kunde) ist einen > deutschen Text niederzuschreiben was alles passieren soll und was > passieren kann. > Wenn das weiterhelfen könnte würde ich das tun. Das Problem hierbei ist, es müsste vollkommen unmissverständlich geschrieben sein und keinerlei implizites Wissen erfordern; also so dass man ohne die geringste Ahnung vom mechanischen Aufbau und sonstigen Umständen alleine durch den Text alles notwendige für die Steuerung erfährt. Wieder als Beispiel: Du gehst stillschweigend davon aus, dass wenn B3 aktiv ist B7 inaktiv ist, solche Informationen gehören aber zwingend dazu, da niemand hier wissen kann wie die Klappe im Detail angesteuert wird.
Das habe ich auch verstanden. Ich bedanke mich auf jeden Fall für die rege Antwort. Danke!!!!!!!!!!! Ich werde es in den nächsten Stunden / Spätestens Weihnachten hinbekommen!
Joe schrieb: > Ich habe mir das Diagramm gar nicht angesehen. Aber du meinst, ihm Ratschläge zur Umsetzung geben zu können. Alle Achtung, das ist Kreativ. Nur ist hier gerade leider nicht die Muse gefragt, sondern eine technische Umsetzung.
Ich meine hinbekommen mit den 32 verschiedenen Zuständen.
Wartet bitte ab, bis ich die Zustände klar definiert habe. Vielleicht leutet es dann ja ein.
Darko D. schrieb: > Ich meine hinbekommen mit den 32 verschiedenen Zuständen. Vermutlich brauchst du gar nicht so viele.
Ich bin mir sicher, dass ich nicht 32 Zustände brauche, weil zum Beispiel der Endlagenschalter Klappe auf und der Endlagenschalter Klappe zu nicht gleichzeitig betätigt sein können. (z.B)
Für die Klappe fallen mir spontan 4 Zustände ein: Klappe ist offen Klappe schließt sich Klappe ist geschlossen Klappe öffnet sich Und eventuell zur Fehlerbehandlung: Klappe ist blockiert Aber das ist ja nicht alles, da gibt es noch mehr Teile, die Zustände haben.
Ja vielen Dank! Das erste mal sah ich mich lächeln und ein kleines Licht am Ende des Tunnels!! Wir schaffen das!!!!!!!!!
Die älteren Generationen der „Siemens Logo“ + „Logosoft“ bekommt man sehr günstig z.B. bei eBä. Damit wäre dein Problem ein Kinderspiel. https://youtu.be/rcX2HI84_NM Fröhliche Weihnachten 🎄
Ja vielen Dank nochmal. Ich werde heute mit Sicherheit besser schlafen als gestern!!
Es gibt viele unterschiedliche Erklärungen und Umsetzungen von Zustandsautomaten. Ich habe sie auch nicht gleich verstanden. Aber nachdem ich mich mit einem nicht durchdachten Plan verzettelt hatte wurde mir hier im Forum von gefühlt 20 Leuten nahe gelegt, mich trotzdem nochmal damit zu befassen. Ich fand dann in der Bibliothek ein Buch zum Thema, dessen erstes Kapitel sorgte für den "es hat Klick" gemacht Effekt. Danach habe ich auch die anderen Artikel verstanden, die mir vorher nichts sagten. Der Knackpunkt war bei mir zu verstehen, was ein Zustand (im Sinne des Zustandsautomaten) ist und dass eine Maschine oft aus vielen parallel laufenden Zustandsautomaten besteht. Leider weiß ich den Titel des Buches nicht mehr, das ist schon lange her. Ich schreibe dir das, weil ich dich dazu anregen möchte, andere Erklärungen zu suchen, wenn dir meine oder die von Wikipedia nicht einleuchtet. By the way: das Konzept wird oft auch "Endlicher Automat" oder "State Machine" genannt.
Du machst Dir das Leben künstlich schwer mit den Portpins. Keiner kann sich merken, welche Funktion hinter einer Portnummer steckt. Definiere Dir daher einen Header, wo alle Ein- und Ausgänge mit lesbaren Namen versehen werden und benutze diese sowohl im PAP als auch im Code. Hier mal das Prinzip: Beitrag "Re: Port als Variable"
1 | #include "sbit.h" |
2 | #define TASTE PIN_D2
|
3 | #define ABSAUGUNG PORT_D5
|
4 | //..
|
5 | if (TASTE) |
6 | ABSAUGUNG = 1; |
7 | //..
|
Stefan ⛄ F. schrieb: > Nein das war's nicht. Dieses Konzept ist unzureichend. Du hast das > Diagramm von Darko genau so wenig verstanden, wie Jobst. Ganz ehrlich? Bei der mieserablen Informationslage ist es kein Wunder, wenn man das nicht versteht. Zumindest habe ich die Lust verloren, mir die ganzen Scheibchen hier im Thread zusammen zu popeln. Dass es anderen genau so geht, kann ich nachvollziehen. Du scheinst als einziger hier die Muße zur Erfassung der Infos zu besitzen. Aber auch Du verzichtest aus guten Gründen darauf, ihm den Kram zu implementieren. Wenn das Warten auf irgendeinen Vorgang nicht durch einen der 5 Eingänge zurückgemeldet wird, dann wird es pro abzuwartender Aktion eine Verdopplung der schon vorhandenen 32 Eingangskombinationen geben. Einige Kombinationen wird es nicht geben, andere sind irrelevant. Dennoch wird man mit 32 Kombinationen vermutlich nicht hinreichen. Das ist auch kein Problem, vergrößert aber den Umfang. Es fehlt ebenfalls ein Schaltplan, in dem die mechanischen Abhängigkeiten eingezeichnet sind. Und es fehlt die Info, auf welche Dinge gewartet werden muss, für die es keine elektrischen Signale gibt. Das Ablaufdiagram beginnt schon mit einem Problem: "Betätigung Schalter auf/zu" Was soll das bedeuten? Auf? Zu? Egal? Beides? Was ist der Zweck des Dings? Und Darko: Weniger Entschuldigungen oder Geschichten über Schlafstörungen, Kind, Frau, Auto, Zeit, ... Das macht die ganze Geschichte hier noch undurchsichtiger. Gruß Jobst
Jobst M. schrieb: > Ganz ehrlich? Bei der mieserablen Informationslage ist es kein Wunder, > wenn man das nicht versteht. Ja, ich wollte damit auch nicht sagen dass ich zwei euch dumm anstellt.
Ja das sehe ich ein. Das soll auch keine Entschuldigung sein! Ich habe mir aber die Mühe gemacht folgende 32 Zustände zu definieren. Allerdings bin ich auch dort gescheitert, weil es abhängig ist WANN der Endlagenschalter Klappe zu betätigt ist. Es ist ein Unterschied ob die Klappe gerade geschlossen wurde oder ob sie jetzt geöffnet werden soll. Gerne könnt ihr das mal ansehen. Bitte macht euch auch nicht zu viel Mühe auch wenn das sehr nett ist!! Wenns nicht klappt, dann muss ich irgendwie weitersehen oder zur ganz großen Not die Blöde Klappe immer von Hand auf und zu machen. So wie alle anderen auch.
Darko D. schrieb: > Gerne könnt ihr das mal ansehen. Oh mannomann .... was soll denn das sein: Scharnier offen/geschlossen. Das versteht ja kein Schwein. Ein Scharnier ist ein Gelenk zwischen zwei Teilen die dadurch gekoppelt sind. Man kann natürlich auch Luft auf die Fahradkette pumpen.
Herr Jobst, der Schalter Klappe auf/zu ist ein Taster. Wenn die Klappe geöfnet ist und man den Taster dann drückt, soll die Klappe zufahren. Wenn die Klappe zu ist und man den Taster dann drückt soll sie auffahren. Deswegen heist der Taster auf / zu. Ich wüsste nicht wie man das gleichzeitig betätigen soll.
Nein, das Scharnier ist eine pneumatische Zuziehhilfe, wenn die Klappe ganz unten ist. Diese Zuziehhilfe presst die Klappe gegen die Gummidichtung. Beim Öffnen der Klappe muss das Scharnier (Zuziehhilfe geöffnet werden und dann im Anschluss kann die Klappe auffahren. Ich sagte doch ich bin gescheitert!!!!!!
Darko D. schrieb: > Wenn die Klappe zu ist und man den Taster dann drückt soll sie auffahren. > Deswegen heist der Taster auf / zu. Ich wüsste nicht wie man das> gleichzeitig betätigen soll. Dann nenn den Taster "Start".
Darko D. schrieb: > Gerne könnt ihr das mal ansehen. Das geht völlig an meinem Vorschlag vorbei. Zerlege die Maschine in Teile, die Zustände einnehmen können. Ein Beispiel für die Klappe habe ich dir gegeben: Zustände: Klappe ist offen Klappe schließt sich Klappe ist geschlossen Klappe öffnet sich Überlege dir dazu, welche Ereignisse zu Zustandsänderungen führen. Im Zustand "Klappe ist offen" kann ein Kommando dazu führen, dass die Klappe geschlossen werden soll. Die Aktion dazu ist, ihren Motor links herum laufen zu lassen. Nächster Zustand ist "Klappe schließt sich". Im Zustand "Klappe schließt sich" soll die Betätigung des unteren Endschalters dazu führen, dass ihr Motor gestoppt wird. Nächster Zustand ist "Klappe ist geschlossen". Im Zustand "Klappe ist geschlossen" kann ein Kommando dazu führen, dass die Klappe geöffnet werden soll. Die Aktion dazu ist, ihren Motor rechts herum laufen zu lassen. Nächster Zustand ist "Klappe öffnet sich". Im Zustand "Klappe öffnet sich" soll die Betätigung des oberen Endschalters dazu führen, dass ihr Motor gestoppt wird. Nächster Zustand ist "Klappe ist offen". Fehlerbehandlung fehlt da noch. Das wäre die Beschreibung des Zustandsautomaten für eine Klappe. Das ganze wird dann noch als Tabelle und als Diagramm dargestellt (siehe Muster auf meiner Webseite). In dieser Art wird jedes Teil der Maschine beschrieben, dass Zustände haben kann. Nun interagieren diese miteinander. Oben heißt es "kann ein Kommando dazu führen, dass die Klappe geöffnet/geschlossen werden soll". Welcher Teil der Maschine oder welches Bedienelement emittiert dieses Kommando? Auch das kann man sauber beschreiben. Wie man Zeitverzögerungen einbaut, habe ich auf meiner Webseite gezeigt. Am Ende kommen dabei ein Gebilde aus mehreren Zustandsautomaten heraus, die sich Gegenseitig Signale/Kommandos senden. Auch dazu sollte wiederum ein Diagramm gezeichnet werden das zeigt wer mit wem Kommuniziert, sowie ein weiteres Diagramm dass die normalen Signale/Kommandos in zeitlicher Folge darstellt. Wenn das fertig ist kommt erst der Softwareentwickler in Spiel. Er hat die Aufgabe, das alles in ein lauffähiges Programm zu gießen. Es ist der Softwareentwickler, der sich überlegt, wie man ein Signal in der jeweiligen Programmiersprache darstellen kann und wie die einzelnen Programmteile Signale senden/empfangen können. Im einfachsten Fall können das simple globale boolesche Variablen sein. Ich denke, mehr kann ich dazu nicht mehr schreiben, sonst artet es in ein Buch aus. Und Bücher zum Thema gibt es bereits, sicher bessere als ich sie schreiben könnte.
Darko D. schrieb: > Diese Zuziehhilfe presst die Klappe gegen die Gummidichtung. Dann kann man das nicht als Scharnier bezeichnen. Darko D. schrieb: > Ich sagte doch ich bin gescheitert!!!!!! Wenn du eine Katze als Pferd bezeichnest - dann ja.
Stefan ⛄ F. schrieb: > Joe schrieb: >> Oder mit boolscher Algebra > > Nein, auch das genügt nicht. Dann warte ich auf deinen Lösungsvorschlag! ?????
Stefan ⛄ F. schrieb: > ich wollte damit auch nicht sagen dass ich zwei euch dumm anstellt. Alles gut, das habe ich so auch nicht aufgefasst. Darko D. schrieb: > Angehängte Dateien: > 32_Zustaende.txt (1,6 KB) 0/1 ist verwirrend. Spekulationen: 1 = gedrückt oder ja 0 = losgelassen oder nein > In diesen nachfolgenden 16 Zuständen soll gar nichts passieren, > weil der Taster Klappe auf / zu nicht gedrückt ist Dennoch müssen die Ausgänge ja einen Zustand haben! In Deiner Tabelle passiert folgendes, wenn "gar nichts passiert": Taster wird gedrückt, Klappe bewegt sich. Taster wird losgelassen, Klappe bewegt sich immer weiter auch wenn Endlageschalter betätigt wird, da "gar nichts passiert" Weiterhin lese ich aus der Tabelle, dass ein warten auf irgendwelche Endpositionen doch durch einen Eingang representiert wird und damit voll dadurch abgedeckt ist. Den Ausgänge A0 und A4 kannst Du Dir sparen, da sie immer 0 sind. Gruß Jobst (nicht "Herr Jobst")
Darko D. schrieb: > Nein, das Scharnier ist eine pneumatische Zuziehhilfe, wenn die Klappe > ganz unten ist. Diese Zuziehhilfe presst die Klappe gegen die > Gummidichtung. > Beim Öffnen der Klappe muss das Scharnier (Zuziehhilfe geöffnet werden > und dann im Anschluss kann die Klappe auffahren. Gibt es dafür auch Endschalter? Nachtrag: Für Scharnier geschlossen? Gruß Jobst
:
Bearbeitet durch User
Noch etwas passiert: Wenn Du den Taster drückst, fährt alles in eine der beiden Endpositionen und sobald diese erreicht sind sofort wieder in die andere Richtung. Ich möchte folgendes vorschlagen: - Taster drücken alles fährt in Richtung 1 maximal bis Endposition erreicht. - Taster loslassen alles bleibt stehen. - Taster drücken alles fährt in Richtung 2 maximal bis Endposition erreicht. - Taster loslassen alles bleibt stehen. ... und wieder von oben. Das bedeutet auch, dass die Klappe bei einem Problem wieder zurück gefahren werden kann. (Durch erneutes drücken) Taster: Schreib das bitte auch! Ein Schalter rastet. A2 soll takten. Wenn sich die Klappe irgendwo in der Mitte befindet? Auch über die Zuordnung Klappe oben/unten und auf/zu kann man nur spekulieren. Wenn das Ventilscharnier offen ist, soll sich die Klappe nie bewegen ...? Das ist noch alles nicht schlüssig, obwohl ich mittlerweile eine Vorstellung von dem habe, was Du vor hast: Du möchtest den Vorgang mit der Taste starten und diese auch die ganze Zeit dabei gedrückt halten. In einer Richtung soll die Klappe bis zur Endposition zu gefahren werden und dann soll das "Scharnier" geschlossen werden. (Endschalter?) Wenn diese Position erreicht ist, ist der Vorgang beendet. Umgekehrt soll sich das "Scharnier" öffnen und wenn offen, soll die Klappe auf gehen, bis der entsprechende Endschalter geschlossen wird. Also ähnlich wie bei einem Fahrstuhl: Tür erst öffnen, wenn Stockwerk erreicht und Fahrstuhl steht. Und losfahren erst, wenn Tür wieder zu. Eine einfache, gegenseitige Verriegelung. Wenn das so ist, warum hast Du das dann nicht so geschrieben? Gruß Jobst
Joe schrieb: > Dann warte ich auf deinen Lösungsvorschlag! Wenn du meine Beitrage dazu nicht siehst, dann willst du sie nicht sehen.
...langsam verstehe ich, warum der TO bis hierhin schon 2 Jahre gebraucht hat! Hier fehlt es irgendwie an grundlegendem Verständnis und offensichtlich hat der TO auch keinen Bastler im Bekanntenkreis. So wird das also bestimmt nichts... Gruß Rainer
Rainer V. schrieb: > ...langsam verstehe ich, warum der TO bis hierhin schon 2 Jahre > gebraucht hat! Hier fehlt es irgendwie an grundlegendem Verständnis und > offensichtlich hat der TO auch keinen Bastler im Bekanntenkreis. So wird > das also bestimmt nichts... > Gruß Rainer Was soll denn das für ne Aussage sein? Vielleicht ist er ja ein grandioser Mechaniker? Digitaltechnik und Programmierung sind für viele Menschen, welche bisher nur wenig Berührungspunkte mit dieser Welt hatten eben sehr abstrakt. Ähnlich geht es mir beispielsweise im HF bzw. Funkbereich. Klar lässt sich das erlernen, würde ich hier in das dazugehörige Unterforum gehen, würde ich wahrscheinlich in der Hälfte der Threads nur Bahnhof verstehen..
Hi >Was soll denn das für ne Aussage sein? Vielleicht ist er ja ein grandioser Mechaniker? Darko schrieb: Was soll denn das für ne Aussage sein? Vielleicht ist er ja ein grandioser Mechaniker? Darko D. schrieb: ...und die Klappe ist jetzt zu 95 % Fertig (2 Jahre Aufbauzeit) nach "grandioser Mechaniker" hört sich das nicht an. Und die Software ist da nicht mit drin: >Nur die Software fehlt quasi. Was soll deine Frage nach der Aussage also? MfG Spess
Spess53 schrieb: > nach "grandioser Mechaniker" hört sich das nicht an. Das erkennt man schon daran dass er ein Funktionselement als "Scharnier" bezeichnet das gar keines ist. Darko D. schrieb: > Nein, das Scharnier ist eine pneumatische Zuziehhilfe, wenn die Klappe > ganz unten ist. Diese Zuziehhilfe presst die Klappe gegen die > Gummidichtung.
Ehrlich, ich würde vorschlagen, wir warten auf den Samariter, der sich nach Bremen traut und auch 3 Fliegen mit 7 Klappen erschlägt! Rainer
Guten Morgen alle zusammen und Frohe Weihnachten!! Noch einmal ein großes Dankeschön an Jobst und Stefanus und die anderen Gäste selbstverständlich auch. Ich habe durch das Lesen des kompletten Chats gemerkt, dass ihr euch alle damit sehr auseinander gesetzt habt. Das hat mich sehr gefreut! Ich brauche im Moment nur Zeit um mich mit den Zustandsautomaten und deren Funktionen auseinanderzusetzen, um zu dem Ziel zu kommen. Es ist auch richtig, dass ich nicht bereit bin mehrere Hundert Euro an eine Fachfirma zu zahlen die mir die Software und das was an Fragen dazugehört zu bezahlen. Da ich nicht so viel Geld verdiene. 2 Jahre hat das Projekt bisher gedauert. Allerdings ist nicht täglich daran gearbeitet worden. Ich habe auch keine Probleme damit das Teil zu beschreiben. Vielleicht kommt da ja noch ein Tipp aus einer ganz anderen Richtung dazu. Ich habe eine 1,9m hohe eine 1m tiefe und eine 1,5m breite Sandstrahlkabine konstruiert, geschweißt und entwickelt. Das besondere ist eigentlich, dass die Kabine incl. der Schrauben, Nieten und sonstigen Befestigungsvarianten komplett aus Edelstahl ist. Daher ist es auch notwendig bei geschlossener Klappe noch einmal durch eine zusätzliche Zuziehhilfe den Anpressdruck an die Gummidichtung zu erhöhen. Ein weiterer Grund warum es diese Zuziehhilfe gibt ist es, dass ca. 80 % des Klappengewichtes zum hochdrücken durch 2 Gasdruckdämpfer übernommen wird. Die Funktionsweise des Programms ist ähnlich wie das Jobst beschrieben hat. Der Hauptunterschied (welchen ich mir wünsche) ist, dass man den Taster nicht gedrückt halten muss die ganze Zeit. Mein Ziel war es eig. den Taster einmal zu drücken, dann ca. 4 bis 5 Sekunden abzuwarten bis die Absaugung austrudelt und dann aus der Ferne zuzusehen, wie sich mein Glück öffnet. Es ist auch vollkommen richtig, dass Ihr erkannt habt, dass die Zuziehhilfe nur einen Endlagenschalter für den Status offen hat. Durch eine Federkraft wird sie in genau 2,5 Sekunden geschlossen, wenn das Ventil "schließen" betätigt wird. Um den Verdrahtungsaufwand zu minimieren soll das Programm einfach nach einer 3 sekündigen Ansteuerung des Ventils Zuziehhilfe zu davon ausgehen, dass es geschlossen ist. Der Zustand offen der Zuziehhilfe muss aber BEVOR die Klappe zufährt überprüft werden, denn bei geschlossener Zuziehhilfe knallen die Haken der Klappe gegen die Außenscharniere der Zuziehhilfe. Vielleicht rundet die Beschreibung des Teils ja auch das Puzzle ein bisschen ab. Bisher also nochmal vielen Dank!!!!!!!!!!!!!!!!!!!
Der ganze Text hätte zusammen mit Fotos und einem kurzen (!) Video in den Eröffnungsbeitrag gehört. Dann kann man mit deinem Diagramm viel mehr anfangen.
Darko D. schrieb: > Das besondere > ist eigentlich, dass die Kabine incl. der Schrauben, Nieten und > sonstigen Befestigungsvarianten komplett aus Edelstahl ist. Sowas ähnliches haben wir mal an einem Tag zusammengebraten. Wie sieht das bei deiner mit der elektrostatischen Aufladung aus? Alles schön geerdet? Dinge, die sich von alleine bewegen, brauchen immer einen Schutzmechanismus, damit sich niemand die Finger oder anderes klemmen kann. Also braucht dein Aufbau entweder einen Taster, den man dauerhaft drücken muss, oder einen Sensor, der verhindert, dass sich jemand im Schwenkbereich der Klappe befindet.
An einem Tag???? WAHNSINN!!!! Der Kleber der Scheibe hat bei mir schon einen Tag gedauert :-) Ich schätze dass dort ca. 700 bis 800 Stunden bisher reingegangen sind! LG Zwei Tage hat ja schon der Transport und der Zusammenbau im Keller gedauert...
Darko D. schrieb: > Der Kleber der Scheibe hat bei mir schon einen Tag gedauert :-) Es ging um die Konstruktion und den Zusammenbau. Das Material musste auch beschaft werden und das Sikaflex musste auch trocknen. Nach einem Wochenende haben wir das Ding dann aber auch gleich benutzt. Einfach nur eine Klapptür mit Reibriegeln und keinen elektronischen Schnickschnack. Eine Lampe war noch drin.
Zum Thema Sicherheit: Die Klappe ist geerdet. Einen Klemmschutz hat die Klappe nicht. Durch die Gasdruckdämpfer reduziert sich die Klappenfahrgeschwindigkeit so sehr, dass ein "erschlagen" von der Klappe nicht möglich ist. Des weiteren wiegt die Klappe ungefähr 25 kg. 80 % der Hochdrückkraft übernehmen die Dämpfer, sodass ein schmerzhaftes Einklemmen sowieso gar nicht möglich ist.
Darko D. schrieb: > Bisher also nochmal vielen Dank!!!!!!!!!!!!!!!!!!! Bitte weniger !, dafür bitte mehr aufschlussreichen Text. Tipp: Man kann Tastendrücke sinnvoller einsetzen. Bisher hast du es nicht für nötig gehalten deine Kästchen, im Flussdiagramm, eindeutig zu benennen. Das habe ich mal für dich übernommen. Auch wenn es gruslig aussieht, ist es doch funktional. Fragen: Was bedeutet das takten in C6? Ist das wieder ein Automat? Was ist das für eine Endlage in B4? Darf sich der Programmierer da eine aussuchen? Warum steht an C1 ein Schalter, wenn es doch ein Taster ist? Hat der 2 Funktionen? Was unterscheidet A8 von D8? Was unterscheidet D4 von E4? Warum finde ich die "Freigabe Absaugung" nicht im Flussdiagramm? Was ist das überhaupt?
Was ist mit: Jobst M. schrieb: > Den Ausgänge A0 und A4 kannst Du Dir sparen, da sie immer 0 sind. Gruß Jobst
Beitrag #6921431 wurde von einem Moderator gelöscht.
Beitrag #6921460 wurde von einem Moderator gelöscht.
Beitrag #6921704 wurde von einem Moderator gelöscht.
Beitrag #6921726 wurde von einem Moderator gelöscht.
c-hater schrieb im Beitrag #6921704:
> Sowas zu fordern, steht dir schlicht nicht zu. Wer glaubst du zu sein?
Dito. Dir steht demnach nicht zu, mich so anzufahren. Vor allem bei
Themen die dich nicht betreffen. Wer glaubst du zu sein?
Beitrag #6921759 wurde von einem Moderator gelöscht.
Beitrag #6921770 wurde von einem Moderator gelöscht.
Beitrag #6921777 wurde von einem Moderator gelöscht.
Beitrag #6921778 wurde von einem Moderator gelöscht.
Hallo. Ich kann einige Fragen beantworten. Takten bedeutet: Ventil Klappe zu wird für 100ms angesteuert, dann wird 500ms gewartet dann wird wieder 100ms angesteuert, und dann wieder 500 ms gewartet. Dies wird so lange wiederholt, bis die Klappe den Endlagenschalter Klappe zu erreicht. Wenn das dann der Fall ist, wird das Ventil Scharnier zu (Zuziehhilfe zuziehen) für 3 Sekunden angesteuert, weil der Vorgang ca. 2,5 Sekunden dauert und dort kein Endlagenschalter verbaut ist. Frage von Ihnen: Was ist das für eine Endlage in B4? Antwort: B4 sagt mir gar nichts. Wo soll das sein? Im Flussdiagramm gibt es B3 und B7... Frage von Ihnen: Warum steht an C1 ein Schalter, wenn es doch ein Taster ist? Antwort: C1 muss ein Ausgang sein. Ich erkenne nicht woher sie die Informationen nehmen? Der Mikrocontroller hat 5 Eingänge (Port B1 bis Port B5) und 5 Ausgänge Port C0 bis C4 Daher verstehe ich auch nicht die Fragen: Was unterscheidet A8 von D8? Was unterscheidet D4 von E4? Dies Zahlen sagen mir nichts... Ich werde mich wie von Jobst und den anderen empfohlen erst mal mit den Zustandsautomaten auseinandersetzen müssen. LG Darko
der thread ist leider tl;tr - kam schon einer mit finite state machines an? beste grüße
etreas schrieb: > kam schon einer mit finite state machines an? Ja. Ist die Suchfunktion deines Browsers defekt?
Beitrag #6921796 wurde von einem Moderator gelöscht.
Beitrag #6921800 wurde von einem Moderator gelöscht.
Beitrag #6921814 wurde von einem Moderator gelöscht.
Darko D. schrieb: > Ich erkenne nicht woher sie die Informationen nehmen? > .... > Dies Zahlen sagen mir nichts... Würdest du meinen Beitrag aufmerksam lesen, hätte dir auffallen können, dass ich ein Ordnungssystem in dein Flussdiagram eingebaut habe, da du ja nicht dazu in der Lage bist. Bzw. dir die Ordnung am Arsch vorbei geht. Selbst nach mehrmaliger Aufforderung.
Beitrag #6921827 wurde von einem Moderator gelöscht.
Beitrag #6921830 wurde von einem Moderator gelöscht.
etreas schrieb: > der thread ist leider tl;tr - kam schon einer mit finite state > machines an? Is' schon so lange her - dat is' schon gar nimmer wahr... Wie soll‘s auch anders sein? Ein guter Teil der Anwesenden sind therapiebedürftig - wegen anhaltender, narzisstischer Persönlichkeitsstörung. Da ist jede auch nur entfernt brauchbare Idee in Nu zerredet.
Beitrag #6921891 wurde von einem Moderator gelöscht.
Beitrag #6921899 wurde von einem Moderator gelöscht.
Beitrag #6921903 wurde von einem Moderator gelöscht.
Beitrag #6921905 wurde von einem Moderator gelöscht.
Beitrag #6921917 wurde von einem Moderator gelöscht.
Beitrag #6921921 wurde von einem Moderator gelöscht.
oh ok - kam dann wohl falsch rüber. war auch lax formuliert sry. ich les gerade Modeling Software with Finit State Machines :) waren schon etwas aus der digitaltechnik und mikrocumputer technik bekannt - wenn man fsm tatsächlich als fsm und nicht als pattern aus gof versteht, sind die das beste mittel komplexität in den griff zu bekommen
wer übrigens eine richtig geile fsm sehen möchte, hole sich die wad von doom 2 und einen source port - parallel dazu den veröffentlichten source: https://github.com/id-Software/DOOM
Ich mache mal die Rechnung auf: 2H Nachfragen im Forum, bis Klärung (90%). Über Tage verteilt 2H Flussdiagramm strukturieren, plus weitere Planung/Vorbereitung 1H Codieren 1H Prototype/Testumgebung bauen und debuggen Das macht 6H a XX Euronen. Weitere Änderungen/Anpassungen/Zusatzarbeiten kosten extra. Das Programm liegt hier fertig getestet. Flussdiagramm 1:1 übernommen Programmiert mit der Arduino IDE Getestet auf einem UNO Kompiliert fehlerfrei für ATMega8 Ein Umbau auf C, ohne Arduino: Machbar Ein paar delay() und eine Schleife finden sich dort. Die könnte man ersetzen, wenn man dort kleine Sub Automaten einsetzt. Über Schönheit kann man bekanntlich streiten, aber Schönheit gehört auch nicht zur Anforderungsliste. Übrigens: Keine if Kaskaden Kein switch/case Konstrukt Flache Schachtelungen max 1 Ebene im Funktionsblock
Hey Darko, Sicherlich hast du selbst schon gemerkt, dass hier im Forum nur die wenigsten Fragen zu konstruktiven Ergebnissen führen. Gerade so Fragen wie "Kann mir mal jemand bei meinem einfachen Programm helfen" führen dann binnen kürzester Zeit zu hunderten Postings von zig verschiedenen Menschen und jeder für sich hat eine ganz eigene Lösungsmethode, die natürlich als DIE PERFEKTE UND EINZIGE LÖSUNG verkauft wird und alles andere ist ja sowieso völlig falsch!!!!!! Dabei hast du allerdings wohl vergessen, dass du das als Hobby betreibst und ein Hobby soll a) Spass machen und b) man macht ein Hobby natürlich selber und lässt niemand anders sein Hobby machen. Das einzige, was du hier in den letzten Tagen gewonnen hast ist, dass dein eigenes Hirn sich mit der Sache durchgehend beschäftigt hat und du jetzt besser durchblickst als vorher. Und genau so löst man Probleme. Und jetzt setzt du dich mal in Ruhe hin und überlegst dir, wie man so ein Problem am besten angehen würde, schiebst das alte Programm zur Seite und machst ein neues. Diesmal ein besseres, was man auch viel einfacher lesen kann. Letztendlich musst DU es verstehen, denn DU musst es warten.
Jan schrieb: > und jeder für sich hat eine ganz eigene Lösungsmethode, Natürlich! Frage 3 Leute und du erhältst 5 Ansagen, welche sich teilweise massiv widersprechen, aber doch alle richtig sind. Jan schrieb: > die > natürlich als DIE PERFEKTE UND EINZIGE LÖSUNG verkauft wird und alles > andere ist ja sowieso völlig falsch!!!!!! Falsch.
Jan schrieb: > Letztendlich musst DU es verstehen, denn DU musst es warten. Macht er ja auch. Alles gut.
Hallo, was bisher noch nicht geklärt wurde ist, ob es eine funktionierende Hardware gibt und ob das bestehende Programm auf diese geflasht werden konnte. Gibt es davon einen Schaltplan? Wie sieht die Spannungsversorgung aus, wie sind die Eingänge beschaltet, wie werden die Relais und Schütze angesteuert, welche Spannungen müssen geschaltet werden? Viele Grüße otto
Dieses ist das Flussdiagramm, welches ich verwendet habe. https://www.mikrocontroller.net/attachment/540263/Schaltung_Verlauf.bmp Dort heraus stammen auch die etwas kryptischen Zustandsnamen. Es gibt ein paar Dinge, die ich wohlwollend ignoriert habe: A: freigabeAbsaugung kommt im Flussdiagramm nicht vor, habe auch kA, was das sein soll. B: Die Aktoren kenne Auf und Zu, nur die Klappe kennt oben und unten. KA, ob oben wirklich auf bedeutet, habe es mal angenommen C: Die Frage mit den "Enden" blieb ungeklärt. Jetzt ist ein Ende ein Ende und ein Ende. D: Einige Zustände sind doppelt. KA, wozu das gut ist. Aber da im Plan so, ist es auch im Programm so. PS: Bitte den Quellcode nicht an den Darko verraten, der muss erst bluten.
Otto schrieb: > was bisher noch nicht geklärt wurde ist, ob es eine funktionierende > Hardware gibt und ob das bestehende Programm auf diese geflasht werden > konnte. Damit gibt es ganz sicher keine Probleme! Siehe: Beitrag "Re: Brauche Hilfe AT Mega 8 im Raum Bremen evlt. vor Ort"
EAF schrieb: > KlappenAutomat.ino Ich find interessant, wie du die Zustandswechsel implementiert hast. Verblüffend simpel - why not? Allerdings würde ich empfehlen, den Zuständen sprechende Namen zu geben. Das müsste man dann natürlich im Diagramm dann auch entsprechend kennzeichnen.
Stefan ⛄ F. schrieb: > Verblüffend simpel Ich nenne es "naiv", oder "schlicht". Eine Sammlung von Trivialitäten. Sauber voneinander getrennt, anfassbar und wartbar. Nicht gedankenlos, aber gedankenarm. Schön, dass es dir gefällt. Stefan ⛄ F. schrieb: > Allerdings würde ich empfehlen, den Zuständen sprechende Namen zu geben. > Das müsste man dann natürlich im Diagramm dann auch entsprechend > kennzeichnen. Natürlich! Diese "Kreativität" gehört allerdings nicht zu den Anforderungen, muss darum extra abgegolten werden.
PS: zB3 hat noch einen Fehler, es muss natürlich nach "endschalterKlappeOben" gefragt werden.
Stefan ⛄ F. schrieb: > EAF schrieb: >> KlappenAutomat.ino > > Ich find interessant, wie du die Zustandswechsel implementiert hast. > Verblüffend simpel - why not? Wie willst du das denn bitte sonst machen? Ein Switch und da die Funktionen rein und die Zustandsvariable in den Funktionen ändern? Da ist ein Funktionspointer doch schon irgendwie der näher liegende Ansatz...
Tim T. schrieb: > Wie willst du das denn bitte sonst machen? Es gibt mehrere Möglichkeiten. Zwei davon sind im Artikel https://www.mikrocontroller.net/articles/Statemachine beschrieben. Ich möchte allerdings den Rahmen dieses Threads nicht mit Diskussionen um weitere Methoden sprengen. Dem Darko (TO) brummt der Kopf bestimmt schon genug.
Hi Auch wenn ich mich bei der Lösung des Problems zurück halte möchte ich Mal einen allgemeinen Tip loswerden. Macht aus euren Werken kein Geheimnis. Ich bin sicher, wäre von Anfang an klar gewesen, das es sich um eine Sandstrahlkabine handelt, wären viele unnütze Kommentare unterblieben und vielleicht auch schon ein fertiges Programm geliefert worden. Auch zum Aspekt Fehlverhalten und Sicherheit ein kleiner Hinweis. Alles, was man sich eventuell vorstellen kann, ist möglich. Vom Einklemmen bis Invalidität, auch wenn's übertrieben scheint und auch Bastler sollten im Hinterkopf haben, das Versicherer gern die Gelegenheit nutzen, Verantwortung auf andere abzuwälzen, wenn sie dadurch aus einer Verpflichtung kommen. Auch Gerichte sind dann schon Mal schnell bei fahrlässiger Körperverletzung. So, genug geunkt. Darko, dein Projekt ist jetzt nicht wirklich kompliziert, doch leider spreche ich nicht C und mit Assembler würde ich dich vermutlich noch mehr stressen. Es gibt genug, die dir mit C helfen können und auch werden. Lediglich den Ablauf könnte ich Mal formulieren Grundstellung: Gebläse aus, Verriegelung offen (hast du als Scharnier bezeichnet) Klappe offen Taster Start Klappe schließt Endschalter Klappe geschlossen Verriegelung presst Klappe an (Zeitfunktion oder Druckschalter) Gebläse ein (Betriebszustand) Betriebszustand: Taster Start Gebläse aus (Rückmeldung Druckschalter oder Zeitfunktion) Verriegelung lösen (Endschalter) Klappe öffnen (Endschalter) Grundstellung Wenn du jetzt Mal einfach so schrittweise denkst, dann kommst du zur Stagemaschine Schritt 0: Grundstellung Taster Start Schritt 1 : Gebläse aus. Rückmeldung löst Schritt 2 aus Usw. Gruß oldmax
Stefan ⛄ F. schrieb: > Ich > möchte allerdings den Rahmen dieses Threads nicht mit Diskussionen um > weitere Methoden sprengen. Warum nicht!? Das Thema dieses Threads ist: > Der endliche Automat im praktischen Einsatz Oder: > Wie mach ichs mir? Stefan ⛄ F. schrieb: > Dem Darko (TO) brummt der Kopf bestimmt schon > genug. Das stört mich nicht. Lass ihn doch brummen...... Es könnte übrigens die Möglichkeit bestehen, dass irgendeiner was bei der Diskussion lernt. Vielleicht ist es ja das, was stört. -------------- Es gibt sicherlich ein knappes Dutzend Verfahren, wie man eine Ablaufsteuerung angehen kann. In den allermeisten Fällen wird so ein Dingen deterministisch werden müssen. Auch ist die Anzahl Zustände, in der Regel, begrenzt/endlich. Man muss sich die Aufgabe genau anschauen, bevor man sich für eine Linie entscheidet. Stefan ⛄ F. schrieb: > Zwei davon sind im Artikel Die switch/case Variante schmeckt mir nicht sonderlich. Eher schon "computed goto". Beiden gemein ist, dass dann eine Funktion schnell mal eben über 25 Zeilen hat. Das macht es unübersichtlich. Zudem pervertiert ein switch/case Konstrukt ab einer gewissen Schwelle von einer Sprungtabelle zu einer wenig performanten Entscheidungskaskade. Anfänger versuchen es häufig erstmal mit einer Kontrollfluss orientierten Sichtweise. Verirren sich dann in verschachtelten If Blöcken und komplizierten Bedingungen. Selbst wenn es irgendwann mal funktioniert, ist es kaum wart-/änderbar. Darko hat ein solches Beispiel geliefert. Gerne gehe ich Ablaufsteuerungen aus der Datenfluss Sicht an. z.B. die Koppelpläne aus der SPS Welt ziehen das konsequent durch. Dann gibt es ja auch noch die Ereignisorientierte Sichtweise. Welche durchaus, bei passenden Anforderungen, die beste/eleganteste Möglichkeit sein kann.
Darko D. schrieb: > Ich werde mich wie von Jobst und den anderen empfohlen erst mal mit den > Zustandsautomaten auseinandersetzen müssen. Vielleicht wären Petri-Netze einfacher für Dich. Dein Ablaufdiagramm geht schon weitestgehend in diese Richtung.
Hat sich in seiner Sandstrahlkabine eingeschlossen und kommt nun nicht mehr an den Taster. Er wollte den Taster ja nicht festhalten müssen ... Alfred Hitchcock hätte seinen Spaß! :-D Gruß Jobst
Jobst M. schrieb: > Hat sich in seiner Sandstrahlkabine eingeschlossen und kommt nun nicht > mehr an den Taster. > Er wollte den Taster ja nicht festhalten müssen ... LOL
EAF schrieb: > Ihm scheint verschollen zu sein. Nein. Er ist mit einem Petri-Netz zum Angeln gegangen. Dieter schrieb: > Vielleicht wären Petri-Netze einfacher für Dich.
Nein. Ich bin da. Kann mich aber frühestens im neuen Jahr melden. Guten Rutsch allen zusammen! Lg Darko
Ich habe übrigens sehr viel gelernt die Tage durch euch. Das ist schon viel mehr wert als die Kabine. Bis in ein paar Tagen.
Hi Hab mir mal die Mühe gemacht, es etwas bildlicher mit einer Schrittkette darzustellen. Die gelb markierten "Freigabe-Sicherheit"-Eingänge können jeweils in den Schritten anders ausfallen. Möglich sind Motorschutzschalter vom Gebläse, Bewegungsmelder im Gefahrenbereich oder Trittmatten oder einfach auch weggelassen, weil nicht benötigt. Gruß oldmax
Hallo alle zusammen, die erste volle Woche im Jahre 2022 ist noch nicht vorüber, daher darf man noch frohes neues Jahr wünschen. Um an meinem Projekt wieder ein kleines bisschen weiter zu kommen, habe ich mich entschieden einen deutschen, unmissverständlichen und präzise formulierten Text zu schreiben, was das Programm auf dem Atmega8 verwalten muss. Ich habe mich allerdings auch parallel mit den Automaten und anderen Darstellungsweisen von strukturierten Abläufen befasst. Einleitung: Das Ziel der ganzen Geschichte ist es, die Bedienerfreundlichkeit meiner selbst gebauten Sandstrahlkabine zu erhöhen. Die Kabine ist 150cm breit und 190cm hoch. Die Kabine ist mit einer Frontklappe ausgestattet die ebenfalls 150cm breit ist und ca.110cm hoch ist. Die Unterkante der Klappe ist ca. 80cm über dem Boden. Die Kabine ist auch mit einer Absaugung verbunden. Diese Absaugung brauch insgesamt 2 Freigaben um laufen zu können. Eine Freigabe erteilt der Bediener über einen Schalter (nicht Taster) am Bedienerpult und die andere Freigabe erteilt der ATmega 8. Es macht keinen Sinn die Absaugung bei geöffneter Klappe anzuhaben. Es soll aber möglich sein, die Kabine zu anderen Zwecken auch ohne Absaugung zu betreiben. Zum Beispiel irgenwas auspusten. Am Bedienerpult befindet sich ein Taster (nicht Schalter) zum Öffnen und zum Schließen der Klappe. Hauptteil: Die Klappe wird mit einem an der Seite befindlichen pneumatischen Zylinder aufgefahren. Dieser pneumatische Zylinder hat 2 Ventile. Sobald das Ventil zum hochfahren angesteuert wird, befüllt sich der Druckluftzylinder mit Luft und bewegt die Klappe hoch. Sobald das andere Ventil betätigt wird, wird die Druckluft im Zylinder abgelassen und die Klappe bewegt sich durch ihr Eigengewicht herunter. Man darf nur ein Ventil zur Zeit ansteuern. Beide Ventile zur gleichen Zeit anzusteuern macht keinen Sinn. Die Klappe ist auch mit zwei Endlagentastern ausgestattet. Die Elektronik kann daher die Position der Klappe ermitteln. Mir fallen dadurch 3 Zustände ein. Klappe oben, Klappe unten, Klappe in unbekannter Höhe. Die Elektronik soll daher wie folgt vorgehen: Die Elektronik soll nur aktiv werden wenn der Benutzer eine Änderung des Status der Klappe haben möchte. Ist die Klappe ganz oben (Endschalter oben ist betätigt), soll sie heruntergefahren werden. Ist die Klappe ganz unten (Endschalter unten ist betätigt), soll sie hochgefahren werden. Ist die Klappe irgendwo in der Mitte soll sie runtergefahren werden. Leider ist es notwendig, den Anpressdruck zwischen Klappe und Kabinenrahmen mittels einer Zuziehhilfe, die ebenfalls pneumatisch funktioniert zu erhöhen. Diese Zuziehhilfe hat auch zwei Ventile. Eins für zu und eins für auf. Im Gegensatz zur Klappe hat die Zuziehhilfe nur einen Endlagentaster nur für den Status auf. Das Schließen der Zuziehhilfe dauert exakt 2,5 sekunden. Das bedeutet das nun jedes Mal bevor die Klappe auf und zu gefahren werden soll, gewährleitet sein muss, dass die Zuziehhilfe den Satus "offen" hat. Bei einer geschlossenen Zuziehhilfe kann die Klappe mechanisch weder geöffnet noch geschlossen werden. Noch ein paar Sätze zur Absaugung. Gedacht ist es so: Ist der Schalter der Absaugung auf ein, soll die Absaugung bei geschlossener Klappe auch die Freigabe des ATmega 8 bekommen. Ist die Klappe nicht ganz geschlossen oder ganz oben, nimmt der ATmega 8 die Freigabe als Ausgang weg. Dann spielt es keine Rolle in welcher Stellung der Schalter Absaugung ein/aus ist. Der Status des Schalters wird als Eingang in den ATmega 8 gespeist. Ist die Klappe geschlossen und die Absaugung läuft, dann soll der ATmega8 die Freigabe Absaugung wegnehmen und 7 sekunden warten bis diese Austrudelt. Erst dann darf die Klappe geöffnet werden. Ist die Klappe zu und die Absaugung ist aus (Schalter Absaugung steht auf aus) brauch der Bediener natürlich keine 7 sekunden warten bis sich die Klappe öffnet. Als allerletztes ist nur noch der Vorgang "Schließen von Klappe ganz auf" und der Vorgang "Schließen aus unbekannter Höhe" zu erklären. Schließen aus ganz oben (Endlage oben ist betätigt): Das Ventil Klappe zu soll 1,5 sekunden lang angesteuert werden, um einen sehr großen Weg in relativ kurzer Zeit zurückzulegen. Nach dieser zeit fehlen ungefähr noch 15cm Weg. In diesen letzten 15 cm soll der AT mega 8 folgende Ausführung machen: 500ms warten, 100ms Ventil Klappe zu ansteuern 500ms warten, 100 ms Ventil Klappe zu ansteuern etc. solange bis die Endlage Klappe geschlossen erreicht ist. Immer wenn diese Endlage erreicht ist, soll anschließend das Ventil Zuziehhilfe zumachen 3 sekunden lang angesteuert werden. Dann soll die Freigabe Absaugung erteilt werden. jetzt Schließen aus irgendwo in der Mitte: 500ms warten, 100ms Ventil Klappe zu ansteuern 500ms warten, 100 ms Ventil Klappe zu ansteuern etc. solange bis die Endlage Klappe geschlossen erreicht ist. Ich bin mir nun relativ sicher, dass das ein normal denkender Mensch versteht. Anders kann ich es im Moment nicht darstellen. Wenn auch das nicht verstanden wird, dann muss ich nach einer ganz anderen Lösung suchen. Vielleicht für jeden kram einen separaten Schalter.... Ich danke euch noch einmal. LG Darko aus Bremen
Darko Dragojevic schrieb: > Ich habe mich allerdings auch parallel mit den Automaten und anderen > Darstellungsweisen von strukturierten Abläufen befasst. Merkt man. Die neue Beschreibung der Aufgabe gefällt mir um Welten besser als die erste. Noch ein paar Fotos von der Verriegelung der Klappe und dem Bedienfeld wären gut.
Stefan ⛄ F. schrieb: > Merkt man. Die neue Beschreibung der Aufgabe gefällt mir um Welten > besser als die erste. Noch ein paar Fotos von der Verriegelung der > Klappe und dem Bedienfeld wären gut. Einfach mal ein Schema des ekeltrischen Aufbaus (Ventile, Endlagenschalter, Absaugung...) würde mehr aussagen als kubikmeterweise Prosa und Bilder von Frontplatten...
Das ist kein Problem. Werde ich die Tage nachreichen. LG
Sehr schöne Beschreibung, ein paar Feinheiten fehlen mir dennoch. Sind aber Peanuts: Darko Dragojevic schrieb: > Das Schließen der Zuziehhilfe dauert exakt 2,5 sekunden. Danach soll das Ventil für die Zuziehhilfe wieder geschlossen werden oder darf das offen bleiben und so weiter zuziehen? Darko Dragojevic schrieb: > Ist die Klappe zu und die Absaugung ist aus > (Schalter Absaugung steht auf aus) brauch der Bediener natürlich keine 7 > sekunden warten bis sich > die Klappe öffnet. Also die Absaugung mit dem Schalter vorher abschalten und danach sofort mit dem Taster die Klappe öffnen. Dann braucht man nicht 7s zu warten ... ;-) Darko Dragojevic schrieb: > 500ms warten, > 100ms Ventil Klappe zu ansteuern > 500ms warten, > 100 ms Ventil Klappe zu ansteuern etc. > > solange bis die Endlage Klappe geschlossen erreicht ist. Und danach kann das "Klappe schließen" Ventil geöffnet bleiben? Oder soll es weiter pulsen? (Verschleiß?) Sonst arbeitet der Restdruck in der Klappenpneumatik ja gegen die Zuziehhilfe. Gruß Jobst
Hi Ja, die letzte Beschreibung war deutlich, doch was will der TO? Du habe beschrieben, in Worten und bildlich, wie er zur Lösung kommt. Wenn das Verständnis fehlt, diese Anleitung zur Denkweise für den Ablauf, sorry,da können wir uns die Finger wund schreiben. Wo st das Problem, die Ablaufkette nur zur Bewegung der Klappen zu nutzen und die Ventilatoren mit der entsprechenden Verriegelung und Enschaltbedngung separat umzusetzen. Wenn er ein fertiges Programm möchte, dann muss auch ein Schaltplan her,oder sollen wir solange raten, bis die richtige Konfiguration gefunden ist? Mal ehrlich, für diese Aufgabe hätten auch max. 20 Beiträge gereicht. Gruß oldmax
Darko D. schrieb: > Das hier ist vom AT Mega 8 die Belegung (wenn das so geht) hoffe ich: Für Programmierung via ISP solltest Du die Pins 17 bis 19 frei räumen. Gruß Jobst
Hallo Jobst. Sehr interessant, dass da dennoch Fragen offen bleiben. Gerne beantworte ich die natürlich. Der Schließvorgang dauert genau 2,5 Sekunden. Nach einer 3 sekündigen Ansteuerung kann davon ausgegangen werden, dass der pneumatische Zylinder drucklos ist. Danach soll das Ventil "Zuziehhilfe schließen" bitte nicht mehr angesteuert werden. Zum Thema Absaugung. Ja rein theoretisch hast du Recht, wenn man die Absaugung manuell ausschaltet und schnell kurz danach den Taster "Klappe auf" betätigt, würde die Klappe aufgehen. Darin sehe ich 2 Probleme. Erstens ist die Absaugung schon bei geschlossener Klappe ohrenbetäubend laut, ich möchte gar nicht wissen wie laut es bei geöffneter Klappe ist und das zweite Problem ist, dass dann die Pneumatik für die Klappe auf gegen das Vakuum der Absaugung kämpft. Man müsste wenn man es industriell nach ECE und DIN und was es da alles gibt, einen Timer zählen lassen der dann auch die Zeit nach der Betätigung des Schalters zählt. Das brauch ich hier aber nicht. Aber danke für die Anregung. Ich werde das aber nicht so machen, dass ich dann ganz schnell den Klappe auf Taster drücke. Die letzte Frage beantworte ich natürlich auch gerne. Das Ventil "Klappe zu" brauch nachdem der Entlagenschalter erreicht ist nicht mehr angesteuert werden. Optimalerweise kann man ja dem atmega 8 sagen, dass wenn die Endlage unten erreicht ist, dass danach noch eine dauerhafte Ansteuerung des Ventils für 0,5 Sekunden durchgeführt werden soll, um auch diesen pneumatischen Zylinder drucklos zu machen. Ich bevorzuge es persönlich, dass nach diesen ganzen hoch und runter Fahrereien alle Ventile geschlossen bleiben.
Das ist sehr schlecht, wenn ich die Pins freiräumen soll. Ich habe mich auch beim Löten gewundert, dass diese Ports doppelt belegt sind. Ich weiß nicht ob via ISP programmiere. Ich habe ein programm das nennt sich ich glaube AVR demo. Nach 30 min. schließt es sich und dann muss ich das neu öffnen. Und dann hab ich so ein kleines Tool über usb verbunden. Ich hoffe das ist nicht ISP...
Martin du hast Recht mit den 20 Beiträgen. Es war mein Fehler, dass ich nicht in der Lage war, deutlich zu machen, was ich möchte. Das ist mir nur über Umwege gelungen, die vielleicht auch nicht optimal waren. Nun kann man aber bis auf minimale Feinschliff-Arbeiten erkennen was ich möchte und was letztenendes das Programm können soll. Das ist ja schon mal der erste Schritt, dass mein Gegenüber erst mal weiß was ich möchte. LG
Das ist ja doof, dass ich ISP benutze. Dann muss ich es umlöten. pin 17 kommt auf pin 14 pin 18 kommt auf pin 10 und pin 19 kommt auf 9 Ich hoffe das geht so.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.