Autor Thema: PID-Regler-Probleme  (Gelesen 2801 mal)

Offline Epoxy

  • Jr. Member
  • **
  • Beiträge: 48
PID-Regler-Probleme
« am: Januar 14, 2010, 15:00:57 Nachmittag »
An einer Easy 819 DC-RC ist es mir nicht möglich einen negativen Wert für die Handverstellung MV als Merker-Wort MW oder Merker-Doppelwort, z.B. aus einem Datenbaustein vorzugeben. Negative Datenbausteininhalte werden nur als   0  verarbeitet, obwohl der Datenbaustein als MD -4095 eingetragen (MW 61441) hat.

Gebe ich   MV als  NU-Konstante mit -4095 funktioniert es, man muss allerdings auch  sicher sein nachdem man die Konstante eingetragen hat,  erst die Betriebsart auf BIP (-4096 ... 4095) zu wechseln, sonst übernimmt Easy-Soft 6.20 Pro den negativen NU-Wert offenbar nicht richtig.

Ist etwas sehr unschön, weil ich zwei verschiedene Handverstellwerte MV brauche:

volles  beschleunigen bzw.  volles bremsen und bei der ganzen  Programmiererei  ständig auf den letzten 100 Bytes des noch übrigen  Speicherplatzes agiere.

Ein zweiter Reglerbaustein DC mit allen  nötigen Strompfaden für P, I D und  SE-Aktivierung und  Baustein-Enable  ist zu viel Speicherplatzverbrauch.

Dieser Thread darf gerne auch andere Probleme  rund um den DC-Baustein besprechen. Falls  jemand eine Problemlösung für  die Verwendung von negativen  Merkerwortinhalten beim PID-Regler  weiß, bitte posten.

Grüße Epoxy
Keine Haftung für Programme oder andere von mir veröffentlichte Inhalte.
Irren ist menschlich !

Offline Knodelpa

  • easy god
  • *****
  • Beiträge: 1410
  • I love easy-Forum.net
Re: PID-Regler-Probleme
« Antwort #1 am: Januar 14, 2010, 19:46:27 Nachmittag »
Hallo Epoxy,

ich verstehe dein Problem nicht. Bei mir funktioniert es problelos mit negativen Werten.
siehe mein angehängtes Programm.

Ich verwende die easysoft 6.40 Pro.

Viele Grüße
Paul

Offline befu

  • Full Member
  • ***
  • Beiträge: 134
Re: PID-Regler-Probleme
« Antwort #2 am: Januar 15, 2010, 15:42:09 Nachmittag »
Hallo Epoxy,

im easy800 muss man beachten, dass 16 bit-Operanden (Merkerworte MW) immer als vorzeichenlose Zahl interpretiert werden (0 .. 65535), während 32 bit-Operanden (Merker-Doppelworte MD und die Ein- und Ausgänge von Funktionsbausteinen) immer als vorzeichenbehaftete Zahl behandelt werden (-2147483648 .. +2147483645). Man muss einen negativen Sollwert für den PID-Baustein also über ein Merker-Doppelwort eingeben und diesen 32 bit-Operanden MD auch auf den entsprechenden Eingang des PID-Bausteins zuweisen.

Weist man den Wert -4096 auf ein Merker-Doppelwort zu und beschaltet dann den Funktionsbaustein-Eingang nur mit dem zugehörigen unteren Merkerwort, findet dabei eine zweimalige Formatumwandlung (Castoperation) von 32 bit (signed long: 0xFFFFF000) des MD auf 16 bit (unsigned short: 0xF000) des MW und dann wieder auf 32 bit (signed long: 0x0000F000) des FB-Eingangs statt, dabei geht das korrekte Vorzeichen verloren. Bleibt man durchgehend bei 32 bit-Operanden, funktioniert alles korrekt.

Freundliche Grüße
Bernhard