Hallo,
also nur die Sequenz mit der alternierenden LED an sich funktioniert. Da blinkt dann die Fronatpanel-LED „BOOL“. Wenn ich die Sequenz mit dem schon vorhandenen VI verknüpfe, siehe Bild aus Posting #7, dann blinkt sie nicht mehr und auch an der Hardware-Platine kommt kein Signal an.
Auch das ursprüngliche VI funktioniert für sich allein. Wenn ich da den Schalter per Hand mit der Mouse umlege kann ich die LED auf der Platine an und ausschalten.
Nur die Verknüpfung der beiden Sequenzen führt zu keinem Ergebnis.
Das Programm ist in der Kombinierten Version (siehe Bild Posting #7) zwar startbar, aber es blinkt weder die LED „BOOL“ im Frontpanel noch die reale LE auf der Platine.
Das VI „befehl_schreiben.vi“ lade ich hier hoch. Es ist nicht von mir und verstehen tu ich es erst recht nicht. Ist mir leider (noch) zu kompliziert.
Aber ich habe eine kurze Beschreibung dazu und zwar folgende:
Um einen Befehl zum Testboard zu senden, ist es nötig, neben dem eigentlichen Command / Subcommand zusätzlich noch ein Längenbyte zu senden, welches die Gesamtanzahl der folgenden Bytes angibt. Desweiteren wird eine Checksumme verlangt, welche sich aus der Exclusivveroderung der Bytes nach dem Längenbyte bis zum letzten Byte vor der Checksumme ergibt. Das ganze wurde in LabVIEW folgendermaßen realisiert:
Dieses SubVI bildet die Grundlage eines jeden VIs. Die Länge und die Commands werden übergeben. Hierbei können unter CMD auch SubCMDs und weitere Datenbytes stehen. Die CMD-Bytes werden auf die angegebende Länge begrenzt und anschließend exclusivverodert, zur Bildung der Checksumme. Die CMD-Bytes müssen ein Byte weniger enthalten, als die Länge, da die Checksumme in der Längenangabe mit inbegriffen ist. Die gesamten Bytes (Length, CMD, SubCMD, Data, Checksum) werden in ein Array eingefügt und zu einem String umgewandelt. Anschließend wird das Datenpaket an die serielle Schnittstelle gesendet.
Die Beschreibung geht noch ein kleines Stück weiter, aber nicht mehr direkt zu befehl_schreiben.vi. Ich poste es einfach mal:
Der Aufbau eines VIs zum Senden eines Befehls ist wie im oben dargestellten Bild realisiert. Die Länge wird als Konstante an das SubVI übergeben. Die folgenden Bytes (CMD, SubCMD, Data) werden als Array übergeben. In diesem Beispiel wird das CMD als Konstante übergeben. Das SubCMD lässt sich über einen Auswahlbalken einstellen. Die Data-Bytes werden in ein numerisches Element eingegeben. Es ist darauf zu achten, dass die gesamte Kommunikation hexadezimal erfolgt und somit alle Zahlenformate einheitlich sind. Der Rahmen steht für eine gestapelte Sequenzstruktur, es wird Seite für Seite abgearbeitet. Auf der folgenden Seite dieser Struktur befindet sich eine Zeitverzögerung von 200ms, um eine eventuell auftretende Zeitverzögerung bei der Aufnahme von Messdaten zu vereinheitlichen.
Die empfangenen Bytes werden wie in der Abbildung zu sehen ist, ausgegeben und auf Fehler überprüft. Zum einen wird die vom Controller berechnete Checksumme überprüft und zum anderen werden die gesendeten Commands mit den empfangenen Commands verglichen. Wichtig ist die Angabe der zu empfangenden Bytes. Ist diese Angabe falsch, können nicht ausgelesene Bytes im Buffer stehen bleiben und beim Auslesen eines weiteren Commands zur Verschiebung der Antwortdiagramme führen. Beim Lesen der Daten aus der seriellen Schnittstelle ist darauf zu achten, dass das Abschlusszeichen deaktiviert ist. Ansonsten endet das Auslesen bei einem bestimmten Zeichen (normal: 0x0A).
Vielen Dank für eure Hilfe !!!
(VI LV 7.1)