Autor Thema: Dynamische Systeme mit EASY8xx bauen  (Gelesen 12025 mal)

Offline feng41

  • Jr. Member
  • **
  • Beiträge: 51
  • Ich mag keine Signaturen!
Dynamische Systeme mit EASY8xx bauen
« am: November 12, 2002, 01:55:19 Vormittag »
Programmierung auch von ->dynamischen Systemen mit der EASY8xx-DC-.
Mit Hilfe der Abtasttheorie können für dynamische Systeme (Filter, Regler, etc) Differenzengleichungen aufgestellt werden, die relativ einfach zwischen Analogeingang und Analogausgang schrittweise von der SPS berechnet werden können.  Hier stößt die EASY wegen der fehlenden Gleitkommaverarbeitung allerdings leider wieder an Grenzen (die vielleicht auch noch ausgeräumt werden können), die man "austricksen" muß (Doppelwort u.a.)
Ich lege mal eine Testberechnung für ein einfaches Tiefpassfilter "Test PT1.e40" bei . Die Belegung der Bausteine in "Test PT1.xls".

Nun meine Fragen
1) Bei der Berechnung der Differenzengleichung müssen die Werte bei jedem Zyklusdurchlauf in einem Schieberegister weitergeschoben werden. Wie bringe ich die DB dazu, in jedem Durchlauf zu schalten?
2) Wenn jemand in dem kleinen Testprogramm PT1 Verbesserungen oder Umständlichkeiten entdeckt --- bitte rückmelden!
3) Wenn jemand sich auch schon Gedanken gemacht hat, wie man z.B. einen PID-Regler mit der Easy bauen kann - oder wie man ein bestimmtes Filter bauen kann. Bitte melden
Danke!
FM

Offline Jens

  • Full Member
  • ***
  • Beiträge: 451
Re: Dynamische Systeme mit EASY8xx bauen
« Antwort #1 am: November 13, 2002, 13:04:26 Nachmittag »
Hallo feng41,

vielen Dank für Ihren Beitrag!
Kurz zum DB: Der DB lässt sich nur jeden zweiten Zyklus triggern. Mit Hilfe von zwei DBs können Sie aber Werte in jedem Zyklus verschieben. Bitte schauen Sie sich das angehängte Programm an und beobachten Sie in der Simulation das Merker Doppelwort 1 (MD1).

Grüße
Jens Regulski

Bitte stellen Sie Ihre Fragen im Forum!
Please post your questions in the forum!

Offline feng41

  • Jr. Member
  • **
  • Beiträge: 51
  • Ich mag keine Signaturen!
Re: Dynamische Systeme mit EASY8xx bauen
« Antwort #2 am: November 13, 2002, 15:43:40 Nachmittag »
Guten Tag Herr Regulski - und vielen Dank für Ihre schnelle Antwort+Beispiel! Scheint irgendwie genial zu sein, aber ich verstehe den Ablauf noch nicht.
Können Sie mit den Haftnotizen noch Kommentare reinschreiben was wann wo und warum passiert?
Warum erscheint der AR1 nicht in Ihrem Programm?
Gruß feng41
FM

Offline Jens

  • Full Member
  • ***
  • Beiträge: 451
Re: Dynamische Systeme mit EASY8xx bauen
« Antwort #3 am: November 13, 2002, 17:59:06 Nachmittag »
Hallo feng41,

anbei noch ein paar Screenshots zum Programm.

Um den AR zu verwenden, ist es nicht notwendig ihn im Bitschaltplan zu verdrahten! Weitere Kommentare finden Sie auf den Screenshots.

Ach übrigens, der Wunsch nach einem PID-Regler ist angekommen....  ;)... mal schauen, was noch kommt.

BITSCHALTPLAN:

Screenshots gelöscht, da falsch
« Letzte Änderung: November 15, 2002, 12:16:40 Nachmittag von admin »

Bitte stellen Sie Ihre Fragen im Forum!
Please post your questions in the forum!

Offline feng41

  • Jr. Member
  • **
  • Beiträge: 51
  • Ich mag keine Signaturen!
Re: Dynamische Systeme mit EASY8xx bauen
« Antwort #4 am: November 15, 2002, 03:14:09 Vormittag »
Guten Abend Herr Regulski - also irgendwie ist da noch ein "Knoten" drin. Auch Ihr Vorschlag schaltet nur bei jedem 2.Zyklus weiter (ausmessen mit Timer als Referenzzeit und Conter).
Wenn der Datenbaustein wirklich in jedem Zyklus weiterschalten würde (Schieberegister), dann würde die Abtastzeit immerhin (gegen jetzt) halbiert werden - also dynamische Systeme könnten mit höherer Auflösung gebildet werden - das wär' doch was...
100% sind doch nicht zu verachten - beim Gehalt schon gar nicht [auch wenn ein Politiker da nur müde (in die Kamera) grinsen würde]...

Gruß feng41
FM

Offline Jens

  • Full Member
  • ***
  • Beiträge: 451
Re: Dynamische Systeme mit EASY8xx bauen
« Antwort #5 am: November 15, 2002, 12:10:29 Nachmittag »
Hallo feng41,

da hatten Sie recht, da Programm führte nicht zum gewünschten Resultat. Was mich nur gewundert hat war, dass MD 1 so schön hochgelaufen ist. Na ja  :-/

Anbei ein zweiter Versuch. Eine Kopie des Datensatzes der verschoben werden soll, wird auf einen zweiten DB gelegt. Da die beiden DBs asynchron getriggert werden, wird MD in jedem Zyklus mit einem neuen Wert beschrieben.

Um sich den Programmablauf genauer anzuschauen, wechseln Sie bitte in die Simulations-Ansicht, rufen die Baustein-Ansicht auf, starten die Simulation und erhöhen die gewünschte Zykluszeit auf 2000 ms.

Grüße
Jens Regulski
« Letzte Änderung: November 15, 2002, 12:11:28 Nachmittag von jens »

Bitte stellen Sie Ihre Fragen im Forum!
Please post your questions in the forum!

Offline feng41

  • Jr. Member
  • **
  • Beiträge: 51
  • Ich mag keine Signaturen!
Re: Dynamische Systeme mit EASY8xx bauen
« Antwort #6 am: November 16, 2002, 03:00:52 Vormittag »
Guten Abend Herr Regulski - das sieht doch schon recht gut aus! Danke!
Aber dennoch - so ganz glücklich bin ich noch immer nicht (Isebill-Effekt...), da ich jetzt den zu verschiebenden Wert 2x in zwei DB eingeben muß.  Vielleicht geht es aber auch nicht anders.
Oder könnte man einen AR vielleicht irgendwie zu einer Schieberegisterfunktion überreden - der wird  ja von Haus aus bei jedem Zyklus getriggert??

Gruß feng41
FM

Offline Jens

  • Full Member
  • ***
  • Beiträge: 451
Re: Dynamische Systeme mit EASY8xx bauen
« Antwort #7 am: November 19, 2002, 13:02:12 Nachmittag »
Hallo feng41,

eine Schieberegisterfunktion ist leider nicht so einfach zu realisieren. Sie müssen durch eine geschickte Anordnung der DBs im Wortschaltplan die Werte im Speicher verschieben (z.B. kopieren von MD3 -> MD4, MD2->MD3, MD1->MD2 ). Da die DBs leider nur bei jedem zweiten Zyklus schalten, müssen Sie wohl die ganze Sache doppelt aufbauen, damit jeder Zyklus berücksichtigt wird.

Grüße
Jens Regulski

Bitte stellen Sie Ihre Fragen im Forum!
Please post your questions in the forum!

Offline feng41

  • Jr. Member
  • **
  • Beiträge: 51
  • Ich mag keine Signaturen!
Re: Dynamische Systeme mit EASY8xx bauen
« Antwort #8 am: November 19, 2002, 14:36:20 Nachmittag »
Guten Tag Herr Regulski - ja das stimmt. Ich bin schon weit davon ab, bei jedem Zyklus der EASY eine Schiebung hinzubekommen.  Aber selbst wenn man 2 Zyklen spendiert, habe ich ein Problem, ein 3-stufiges Schieberegister zu programmieren, da die Easy auswertet und im letzten Verarbeitungsschritt den neuen Wert gleich zwei Stufen weiterschiebt. Ich habe den ganzen Sonntag rumprobiert, aber keine sichere Funktionsweise hinbekommen :-/
Muss ich tatsächlich 4-6 Zyklen spendieren, um ein 3-stufiges Schieberegister für MD zu erstellen ??? :-[
HabenSie noch eine Idee?
Gruß feng41
FM

Offline Jens

  • Full Member
  • ***
  • Beiträge: 451
Re: Dynamische Systeme mit EASY8xx bauen
« Antwort #9 am: November 19, 2002, 16:08:59 Nachmittag »
Hallo feng41,

hier mal ein Beispielprogramm, was ein Schieberegister beinhaltet. Die Daten werden in jedem Zyklus weitergeschoben. AR1 erzeugt die Daten (werden in MD1 gespeichert). MD2 beinhaltet den Wert von n, MD3 den Wert von n+1 und MD4 den Wert von n+2. Ich hoffe, das Beispiel hilft Ihnen ein wenig weiter. Viel Spaß noch beim Programmieren.

Jens Regulski

Bitte stellen Sie Ihre Fragen im Forum!
Please post your questions in the forum!

Offline feng41

  • Jr. Member
  • **
  • Beiträge: 51
  • Ich mag keine Signaturen!
Re: Dynamische Systeme mit EASY8xx bauen
« Antwort #10 am: November 19, 2002, 17:59:51 Nachmittag »
Guten Tag Herr Regulski - ja Ihr Beispiel läuft hervorragend - sogar bei jedem Easy-Zyklus.
Aber jetzt verraten Sie mir doch mal, wieso das bei einer Analogwerteingabe nicht läuft. Siehe beiliegendes Beispiel (IA1 auf einen Wert einstellen, Ablaufdauer auf 3sek verlangsamen und MD2,3,4 anschauen  :P

Übrigens schade, dass der Analogwert bei Einzelschritt nicht übernommen wird.
Gruß feng41
FM

Offline Jens

  • Full Member
  • ***
  • Beiträge: 451
Re: Dynamische Systeme mit EASY8xx bauen
« Antwort #11 am: November 19, 2002, 20:05:31 Nachmittag »
Hallo feng41,

peinlich peinlich peinlich  :-[.... ich habe einen bekannten Anfängerfehler gemacht. Der Toggel-Merker M1 wurde von MD1 überbügelt. Naja, der Fehler ist behoben.

Zudem wurde Input 1 von AR1 mit dem Analogeingang IA1 (I7 am Gerät) belegt. Jetzt werden die Analogwerte korrket in den MerkerDoppelworten 3-5 gespeichert.

Das Programm sollte nun funktionieren  ;).

Grüße
Jens Regulski

Bitte stellen Sie Ihre Fragen im Forum!
Please post your questions in the forum!

Offline feng41

  • Jr. Member
  • **
  • Beiträge: 51
  • Ich mag keine Signaturen!
Re: Dynamische Systeme mit EASY8xx bauen
« Antwort #12 am: November 19, 2002, 21:35:08 Nachmittag »
Guten Abend Herr Regulski - na so peinlich ist das ja nun wieder auch nicht - zumal es bei der Addition von 1 ja auch einen 0-1-Wechsel von M1 ergibt. Ich hatte dieses (zugegeben gefährliche) "Doppelspiel" schon fast als "Raffinesse" gesehen...
Aber jetzt wird es spannend: Ich sende Ihnen zwei Programme mit gleichem Kontaktplan - das eine geht - das andere nicht. Unterschied lediglich in der Anordnung der Bausteine im Bauteileplan!
So langsam geht der "Knoten" auf. Die Gründe werden erkennbar. Aber warum? Wo kann ich hierfür nähere Informationen bekommen?
Gruß feng41
FM

Offline Jens

  • Full Member
  • ***
  • Beiträge: 451
Re: Dynamische Systeme mit EASY8xx bauen
« Antwort #13 am: November 19, 2002, 21:53:54 Nachmittag »
Die Bausteine werden in der Reihenfolge nach von oben links nach unten rechts abgearbeitet!
In Ihrem »falschen« Programm kopieren Sie zunächst MD5 auf MD2 dann MD2 auf MD3 und schließlich MD3 auf MD4. Somit haben alle MDs den gleichen Wert! Sie müssen erst den zu schiebenden Wert retten, bevor Sie ihn überschreiben.

Übrigens, die Addition mit 1 ist natürlich beim Einlesen des Analogwertes nicht notwendig (sonst haben Sie immer einen Offset um 1).

Bitte stellen Sie Ihre Fragen im Forum!
Please post your questions in the forum!

Offline Jens

  • Full Member
  • ***
  • Beiträge: 451
Re: Dynamische Systeme mit EASY8xx bauen
« Antwort #14 am: November 19, 2002, 21:59:34 Nachmittag »
anbei das Schieberegisterprogramm ohne Addition um 1

Bitte stellen Sie Ihre Fragen im Forum!
Please post your questions in the forum!