Autor Thema: Schieberegisterbaustein  (Gelesen 4206 mal)

Offline Sepp Manser

  • Jr. Member
  • **
  • Beiträge: 29
Schieberegisterbaustein
« am: Juli 10, 2007, 21:22:27 Nachmittag »
Hallo zusammen!

1. Frage:

Kann mir jemand helfen, ich habe Probleme mit einer Schieberegisterschaltung. Ich hatte hier im Forum schon ein Beispiel von Jan bekommen.

Meine Ausgangslage:

ich möchte mit einer Taste am MFD (P3) eine Schaltung von z.B. 8 Merkern (M20 bis M27)realisieren, wobei so die Datenbausteine (DB01 bis DB08) geschaltet werden sollen. Dabei soll die Umschaltung von einem Merker zum andern immer mit dieser einen Taste geschehen. Es soll immer nur ein Merker geschaltet sein. Am Analogeingang 1 ist ein Drucksensor angeschlossen. Dieses Signal soll dann immer wieder zum letzten hinzuaddiert werden (siehe Schaltplan)!

Mein Problem:

Die Summe stimmt mir schon nach der 1. Zusammenzählung nicht mehr. Ich habe z.B. den Wert 2500 und möchte dann mit dem neuen Wert auch 2500 zusammenzählen, dann gibt es plötzlich 11500 oder irgend so einen Wert.
Es ist manchmal auch vorgekommen, dass dann auf einmal alle diese Schieberegisterausgänge miteinander zu blinken begonnen haben!!

2. Frage:

Wie kann ich den Masterresetbaustein einbauen, damit ich alle Datenbausteine miteinander reseten kann?

Kann mir da jemand helfen ???

Vielen Dank

Sepp Manser

Offline Mr. Spok

  • Sr. Member
  • ****
  • Beiträge: 652
Re: Schieberegisterbaustein
« Antwort #1 am: Juli 11, 2007, 06:26:49 Vormittag »
Hallo Sepp,

Du hast denn "klassischen" Programmierfehler der Merkerüberscheidung in Deinem Programm. Du benutz M10-M20 als Bitmerker und MW1 als Wordmerker MW1 beinhaltet aber  M1-M16 und MW2 beinhaltet M17-M32.
Deshalb änder sich auch die "Dezimalwerte" der Merkerwörter und somit Dein Rechenergebnis. Ich würde für die "Dezimalwerte" mit MW7 beginnen, so werden die Bitmerker schon mal nicht doppelt belegt.

Für den Reset der DB´s würde ich nicht den Masterreset benutzen, da somit alle Merker im Programm gelöscht werden. Benutze stattdessen 4 DB´s die die entsprechenden MD´s reseten. Ich habe Dein Programm mal dahingehend geändert. Mit der Taste "P1" werden die Werte resetet.


mfG Jan
« Letzte Änderung: Juli 11, 2007, 06:37:23 Vormittag von Mr. Spok »
Für die Richtigkeit und Funktionalität der hier veröffentlichten Beispiele wird keine Gewähr übernommen.
Für Schäden, die durch Verwendung der Beispiele entstehen, wird keine Haftung übernommen.

Offline Sepp Manser

  • Jr. Member
  • **
  • Beiträge: 29
Re: Schieberegisterbaustein
« Antwort #2 am: Juli 12, 2007, 14:47:55 Nachmittag »
Hallo Jan,

hab ich doch auch diesen Fehler gemacht  :-[ ! Habe jetzt im Hilfemenu noch eine Merkertabelle gefunden und ausgedruckt. Vielen Dank, Du hast mir sehr geholfen. Jetzt funktioniert das bestenes. Es ist eine wahre Freude, was man mit einer solch kleinen Steuerung alles machen kann!!

Jetzt hab ich aber noch ein (hoffentlich :-\) letztes Problem:

Mit meinem Drucksensor bekomme ich ein Analogsignal in den Eingang des Skalierbausteins. Der Ausgang des Skalierbausteins habe ich als Merkerdoppelwort belegt. Dieses Merkerdoppelwort kommt als I1 in meinen Arithmetikbaustein. Er soll dort mit einer NU-Konstante von z.B. 0.78 an I2 multipliziert werden. Das Resultat muss dann vom Arithmetikbaustein-Ausgang ins Display auf eine Zahlenwert-Anzeige geleitet werden.

Das Problem ist, das der Arithmetikbaustein nur ganze Zahlen verrechnen kann. Es geht auch nicht mit zwei Bausteinen ( dividiert durch 100 und wieder mal 78)!!!

Was könnte ich machen? Ich brauche das unbedingt, damit ich die Gewichte auch noch mit den entsprechenden Faktoren als Volumen darstellen kann!

Kannst Du mir (oder sonst jemand) da weiterhelfen??

Wäre sehr dankbar

Gruss Sepp
« Letzte Änderung: Juli 12, 2007, 15:04:07 Nachmittag von Sepp Manser »

Offline Knodelpa

  • easy god
  • *****
  • Beiträge: 1410
  • I love easy-Forum.net
Re: Schieberegisterbaustein
« Antwort #3 am: Juli 12, 2007, 16:08:38 Nachmittag »
Hallo Sepp,

warum verwendest du nicht einen Skalierbaustein LS ???
Hier kannst du einen beliebigen Wert linear skalieren.

Beipiel:
0..1000mBar = 0..780xy
I1 = zu skaliernder Wert
X1 = 0
Y1 = 0
X2 = 1000
Y2 = 780

Wenn du zwei Arithmetikbausteine verwendest musst du die Reihenfolge der Bausteine beachten. Zuerst multiplizieren, dann dividieren. Verwende kein Merkerwort als Zwischenspeicher, sondern verknüpfe die Bausteine direkt miteinander. AR02 verwendet als Parameter AR01.QV (ohne Merker).

Nicht die Reihenfolge im Schaltplan ist entscheidend, sondern die Reihenfolge im Bausteinplan !!!

 :) ;) :D
Gruß Paul


Offline Sepp Manser

  • Jr. Member
  • **
  • Beiträge: 29
Re: Schieberegisterbaustein
« Antwort #4 am: Juli 12, 2007, 18:31:02 Nachmittag »
Hallo Paul,

ja so gehts natürlich noch einfacher! Super Tip! Ich muss es jedoch jetzt mit Literangabe machen, mit m3-Angabe geht es nicht. Auch dieser Baustein kann nur ganze Zahlen ausgeben, keine z.B. 0.234!

Aber das ist ein Detail, habe jetzt einfach bei X2 im LS 100000 anstatt 1000 eingegeben. So wird das Volumen jetzt halt in Litern statt in m3 angezeigt!

Aber vielen Dank für Deine Hilfe

Gruss Sepp

Offline Knodelpa

  • easy god
  • *****
  • Beiträge: 1410
  • I love easy-Forum.net
Re: Schieberegisterbaustein
« Antwort #5 am: Juli 13, 2007, 08:04:37 Vormittag »
Hallo Sepp,

im Programm kannst du nur mit Ganzzahlen arbeiten. Dann musst du halt statt in m3 in Litern oder ml denken.

Auf dem Dispplay des MFD kannst du aber problemlos mit Kommazahlen arbeiten. Bei jeder Zahlenanzeige oder Werteingabe hast du einen Wertebereich und einen Anzeigebereich.

z.B.
Wertebereich:         0..100000 l
Anzeigebereich:      0.00.. 1000.00 m3

 :) ;) :D
Gruß Paul