Autor Thema: Blocktransfer  (Gelesen 6535 mal)

Juergen.J

  • Gast
Blocktransfer
« am: Dezember 29, 2007, 02:16:59 Vormittag »
Hallo,
ich beschäftige mich gerade mit dem Baustein BT und möchte einen Wert aus einem DB in ein MW kopieren. Könnte ich auch direkt machen, wollte aber den BT-Baustein benutzen um die wertvollen DB-Bausteine zu sparen. Aus der Hilfe werde ich nicht ganz schlau. In anhängendem Hilfeauszug kann ich keinen Unterschied von Beispiel 2 zu 3 erkennen. Hat damit schon jemand Erfahrung und kann mir auf die Sprünge helfen, oder ist was ich möchte damit nicht möglich?
Gruß
Jürgen  ??? ??? ???

Offline Knodelpa

  • easy god
  • *****
  • Beiträge: 1410
  • I love easy-Forum.net
Re: Blocktransfer
« Antwort #1 am: Dezember 29, 2007, 10:26:26 Vormittag »
Hallo Jürgen,

der BT ist sicherlich der mächtigste Baustein in der easy800 / MFD. Hier kannst du einen Merkerblock direkt oder über indirekte Adressierung kopieren.

Wird der Baustein mit Merkern parametriert handelt es sich um eine direkte Adressierung.
Wird stattdessen ein anderer Baustein als Adresse verwendet (z.B. AR, LS), dann handelt es
sich um eine indirekte Adressierung. Der Inhalt des Bausteins wird als Merkerbyteadresse verstanden. Es kann allerdings der komplette Merkerbereich adressiert werden (0..383).

Der BT kopiert aber ausschließlich Merkerbereiche !!!

Falls du DB's aufsparen willst verwende doch AR oder VC Bausteine.

 :) ;) :D
Gruß Paul

Juergen.J

  • Gast
Re: Blocktransfer
« Antwort #2 am: Dezember 30, 2007, 01:41:46 Vormittag »
Hallo Paul,
danke für die Antwort. Hatte mir fast schon gedacht das ich damit auf dem Holzweg bin. Den Tip mit der Verwendung von BV-Bausteinen aus Schieber habe ich versucht, jedoch ohne Erfolg. Im Angang habe ich das Programm das ich umsetzen möchte. Ich möchte einen Programm Sollwertspeicher realisieren. Im Beispiel habe ich 3 Programme mit je 2 Sollwerten. In der Anzeige, nach Start, Programm 1 eingeben, mit Alt wechsele ich zur Sollwerteingabe. Nach Eingabe der Sollwerte mit * zurück zur Programmeingabe. Jetzt genauso mit Programm 2 und 3 verfahren. Sind alle 6 Sollwerte eingeben z.B. wieder Programm 1 aufrufen. Die Sollwerte werden wieder angezeigt (Sollwert 1 zwar blinkend zur Änderung, stört mich zwar noch, könnte damit aber leben).
Verwende ich statt der DB (rückschreiben) jetzt wie vorgeschlagen VC erhalte ich bei der Sollwerteingabe nach Bestätigung mit OK, sofort wieder 0 als Sollwert. Mach ich einen Fehler oder warum ist das so? Hast du, oder vielleicht auch jemand anders, eine Idee wie man dabei DB-Bausteine sparen kann, um ev. mehr Programme und Sollwerte speichern zu können.
Das Ziel ist die verwendeten MW 47+48 im Programm als z.B. Zeitwertvorgaben oder Analogwertvergleiche usw. zu verwenden. Z.Z. sind damit max. 16 Sollwerte zu realisieren, besser wären 30, 10 Programme a 3 Sollwerte z.B.
Gruss
Jürgen
« Letzte Änderung: Dezember 30, 2007, 02:17:00 Vormittag von Juergen.J »

Offline Knodelpa

  • easy god
  • *****
  • Beiträge: 1410
  • I love easy-Forum.net
Re: Blocktransfer
« Antwort #3 am: Dezember 30, 2007, 11:58:14 Vormittag »
Hallo Jürgen,

du Anzahl der möglichen Sollwerte ist durch den remanenten Speicher des MFD-Titan begrenzt. Du hast max. 96 Byte oder 48 Worte oder 24 Doppelworte zur Verfügung !!!

Wie groß werden die beiden Sollwerte Maximal ??
- Byte 0..255
- Wort 0..65535
- Doppelwort -2..+2 Millarden...

- Byte ca. 40 Sollwertpaare
- Wort ca. 20 Sollwertpaare
- Doppelwort ca. 15 Sollwertpaare

Es kann aber auch durchaus sein, dass ein Sollwert vom Typ Byte ist und der zweite Sollwert vom Typ Wort ist.

Da deine Sollwerte normalerweise im reamanenten Speicher gespeichert werden ist der BT (Blocktransfer) doch der richtige Baustein. Da aber abhängig vom angewählten Sollwertm die Merkeradressen unterschiedlich sind brauchst du indirekte Adressierung.

Sobald die Details geklärt sind mache ich Dir gerne ein Beispiel !!!

 :) ;) :D
Gruß Paul

Juergen.J

  • Gast
Re: Blocktransfer
« Antwort #4 am: Dezember 30, 2007, 13:17:27 Nachmittag »
Hallo Paul,
danke für die rasche Antwort.
Zu den Fragen, im Moment ist das Beispiel mit 2 Sollwerten, es könnten aber auch 3 Sollwerte werden, vorgestellt habe ich mir 10 Programme. Der Datentyp Wort ist aussreichend.
Was ich jedoch möchte ist wie im Beispiel das ich bei erneutem Aufruf des Programm die zuvor gespeicherten Werte angezeigt werden. In meinem Beispiel werden die Daten remanent in den DB abgelegt und zur Verarbeitung wird immer das gleiche MW (48+47) verwendet. Wenn es eine Möglichkeit gäbe die zum schieben verwendeten DB durch einen anderen Baustein zu ersetzen könnte ich so max. 32 Sollwerte speichern. Bin aber gespannt auf die Variante mit dem BT, bekanntlich führen ja viele Wege zum Ziel.
Gruss
Jürgen  :) ;) :D

Offline Knodelpa

  • easy god
  • *****
  • Beiträge: 1410
  • I love easy-Forum.net
Re: Blocktransfer
« Antwort #5 am: Januar 01, 2008, 18:41:38 Nachmittag »
Hallo Jürgen,

anbei das versprochene Beispiel. Ich habe darin 4 Sollwertmasken mit je zwei Sollwerten erstellt. (MW8 + MW9, MW10 + MW11....). In der Startmaske kann ein Programm 1..4 über die OK Taste oder den Pfeiltasten ausgewählt werden. Je nach Auswahl (im Beispiel 1..4) werden die gewünschten Sollwerte in die Merkerworte MW49 + MW50 gespeichert.

Im Beispiel ist der Merkerbereich von MB13..MB96 remanent geschaltet (MW7..MW48) und somit gegen Spannungsausfall und das Übertragen von neuen Programmen geschützt  :)
Demnach hast du noch viel viel Platz für weitere Sollwerte.

Falls du Fragen hast bitte melden !!!

 :) ;) :D
Gruß Paul

Juergen.J

  • Gast
Re: Blocktransfer
« Antwort #6 am: Januar 01, 2008, 18:52:45 Nachmittag »
hallo Paul,
erst mal Danke für die Mühe. Werde mir das Programm dann mal in Ruhe ansehen und versuchen nachzuvollziehen. Falls sich dazu noch Fragen ergeben werd ich mich melden und wenn ichs verstanden habe sowieso.
Gruss
Jürgen

Juergen.J

  • Gast
Re: Blocktransfer
« Antwort #7 am: Januar 02, 2008, 02:03:09 Vormittag »
Hallo Paul,
bin soweit durch und habe, glaube ich zumindest, alles verstanden.  ;D  Jetzt habe ich auch den Satz in der Hilfe:
Zitat
Der Transfer wird jeweils byteweise durchgeführt. Es können folgende Merkertypen übertragen und beschrieben werden: MB, MW, MD
verstanden.
Beim normalen lesen denkt man (zumindest ich) das die MW + MD auch direkt übertragen werden können.
Aber zurück zum Programm, ist fast das was ich will, eine Kombination aus beiden wäre mir das Liebste. Erlaube mir mal meine Version mit deiner zu vergleichen:
Deine Version
remanentes speichern von 18 MD, 36 MW oder 72 MB (ohne den Merkerbereich an zu kratzen) möglich, Schaltplan Programmierung relativ gering, Programmauswahl und Werteanzeige über eine Maske, Werteeingabe über jeweils eine Maske des zusammengehörenden Datensatzes, Maskenprogrammierung umfangreich
Meine Version
remanentes speichern von nur 16 Werten, egal ob MD, MW, oder MB, Schaltplanprogrammierung umfangreich, Programmauswahl Werteanzeige und Werteeingabe über eine Maske möglich, geringerer Aufwand der Maskenprogrammierung
Insgesamt habe ich dazu gelernt und kann jetz zwischen 2 Varianten wählen, wenige Daten einfache Bedienung, viele Daten, etwas aufwendigere Bedienung.
Nochmals Danke für deine Bemühungen mich aus dem Tal der Ahnungslosen herausgeführt zuhaben.
Gruss
Jürgen   :) ;) :D ;D ;D
« Letzte Änderung: Januar 02, 2008, 03:29:15 Vormittag von Juergen.J »

Offline Knodelpa

  • easy god
  • *****
  • Beiträge: 1410
  • I love easy-Forum.net
Re: Blocktransfer
« Antwort #8 am: Januar 02, 2008, 14:13:14 Nachmittag »
Hallo Jürgen,

auch in meiner Variante könnte man die Eingaben auf eine Maske reduzieren.

siehe hier:
http://easy-forum.net/index.php?topic=889.0

Dies ist nur ein Beispiel und passt nicht auf deinen Anwendungsfall,
lässt sich aber problemlos anpassen.

 :) ;) :D
Gruß Paul

Juergen.J

  • Gast
Re: Blocktransfer
« Antwort #9 am: Januar 03, 2008, 02:58:34 Vormittag »
Hallo Paul,
da steht dieser Beitrag schon fast 3 Jahre im Forum und fast genau das was ich gesucht habe. Habe das Programm auf meine derzeitigen Vorstellungen umgeschrieben, habe jedoch noch ein Problem  >:( ???. Zur Eingabe des 2. Sollwert muss wieder eine Maskenanwahl mit dem Tastaureditor erfolgen (*), gleichzeitig mus jedoch auch M1 wieder gesetzt werden. Wird jedoch der Wert wieder mit "ok" besätigt setze ich nochmals M1. Also lange Rede kurzer Sinn ich muss bei Werteeingabe von Wert 2, 3xok betätigen das der Wert übernommen wird. Komme z.Z. auf keine brauchbare Lösung, da die Hilfe zum Tasteneditor, in Verbindung von mehreren Kombinationen, auch nicht gerade Erklärungen bietet. Vielleicht hast du ja eine Lösung parat  :D.
Gruss
Jürgen

PS: habe eine Lösung gefunden, bringe einfach im Tasteneditor nach betätigen von ok,  erneut Maskenelement anwählen. Vielleicht gibt es ja aber noch weitere Lösungen.
« Letzte Änderung: Januar 03, 2008, 03:41:37 Vormittag von Juergen.J »

Offline Knodelpa

  • easy god
  • *****
  • Beiträge: 1410
  • I love easy-Forum.net
Re: Blocktransfer
« Antwort #10 am: Januar 03, 2008, 14:45:50 Nachmittag »
Hallo Jürgen,

ich denke die Lösung 2 ist super. Auf Anhieb fällt mir keine bessere ein.

Gruß Paul

Juergen.J

  • Gast
Re: Blocktransfer
« Antwort #11 am: Januar 03, 2008, 21:45:58 Nachmittag »
Hallo Paul,
das Kompliment kann ich nur zurückweisen, super war das Ursprungsprogramm.
Wo ich noch so meine Propleme habe ist die Handhabung des Tastatureditor. Die einzelnen Funktionen sind ja recht gut beschrieben, wenn dann jedoch solche Kombinationen erforderlich sind gibt die Hilfe keine Auskunft. Gibt es eine nähere Beschreibung oder ist dies Erfahrungssache?
Gruss
Jürgen
« Letzte Änderung: Januar 03, 2008, 22:19:27 Nachmittag von Juergen.J »

Offline KressSwiss

  • easy god
  • *****
  • Beiträge: 1659
  • Und sie dreht sich doch..."Galileo Galilei"
    • Electronics Planet
Re: Blocktransfer
« Antwort #12 am: Januar 04, 2008, 10:54:02 Vormittag »
Zitat
Wo ich noch so meine Propleme habe ist die Handhabung des Tastatureditor

Hallo Jürgen
Falls Du die Werteingabe meinst............

1) Mit OK den zu  ändernder Parameter anwählen (Einer Ziffer blinkt)
2) Mit Cursor AUF oder AB die Einer-Ziffer rollen
3) Mit Cursor LINKS nächste Ziffer anfahren (Zehner Ziffer blinkt)
4) Mit Cursor AUF oder AB die Zehner-Ziffer rollen
5) Usw. Wenn der Parameter eingestell tst OK drücken zwecks Abschluss
6) Nächser Parameter wird zur Einganbe angesprungen (Einer-Ziffer blinkt)

Ich hoffe, das ist einigermassen klar beschrieben, sonst nichz zögern und fragen.
Gruss
Hermann
 
« Letzte Änderung: Januar 04, 2008, 10:57:56 Vormittag von KressSwiss »
Achtung:
Angehängte Dateien sind nur für eingelogte User sichtbar!

Juergen.J

  • Gast
Re: Blocktransfer
« Antwort #13 am: Januar 04, 2008, 22:26:14 Nachmittag »
Hallo Hermann,
danke für die Ausführung. Soweit hatte ich diese schon verstanden, was ich nicht wusste und vielleicht gibt es da noch weitere Feinheiten, ist die Programmierung wie in Datei "Paraeingabe_MW_versuch2.e60" wie im vorletzten Beitrag. Im Anhang der Screenshot, wo ich mal eingekreist habe was ich meine. Betätige einmal die OK-Taste werden gleich 2 Anweisungen ausgeführt. Bin ich dann in der Werteingabe und betätige die OK-Taste wird der Wert abgespeichert und zum nächsten Eingabefeld gesprungen. Bestätige ich dann den Wert wieder mit der OK-Taste, wird der Wert übernommen und die variable wieder auf 0 gesetzt. Was jetzt aber noch dazu kommt ist, habe ich 2x OK betätigt und breche dann mit ESC ab wird die variable (M1) wieder auf 0 gesetzt. Das ist mir unklar und habe bisher auch nichts nachlesen können. Wahrscheinlich gibt es weiter Kombinationen die man gut anwenden könnte, aber so richtig nachvollziehen kann man (ich) es nicht.
Gruss
Jürgen