Programm zum Hochladen von Signalformen auf den FY6900

OP Moderator #6525070
Lesenswert?

Da die PC-Software für den FY6900 ziemlich buggy ist, hatte ich schon
vor längerem ein paar Zeilen Python zusammengehackt, um wenigstens
vernünftig selbstdefinierte Signalformen hochladen zu können. Da Falk
gerade einen Artikel zum FY6900 verfasst und ins Wiki gestellt hat,
habe ich dies zum Anlass genommen, mein Progrämmchen etwas universeller
zu gestalten und ein paar Fehlerprüfungen einzubauen (wfupload.py).

Das Kommando

1
wfupload.py -h

zeigt alle wesentlichen Informationen zur Benutzung an:

1
usage: wfupload.py [-h] [-p PORT] [-w NUM] FILE
2

3
Upload an arbitrary waveform to FY6900
4

5
positional arguments:
6
  FILE        data file with 8192 integer values in the range 0..16383,
7
              separated by whitespace
8

9
optional arguments:
10
  -h, --help  show this help message and exit
11
  -p PORT     serial port, defaults to '/dev/ttyUSB0'
12
  -w NUM      waveform number (1..64), defaults to 1

Eine Beispieldatei (sqrlp.dat) zum Ausprobieren habe ich ebenfalls
angehängt. Sie enthält die Signalform, die entsteht, wenn man ein
Rechtecksignal durch einen Tiefpass 1. Ordnung schickt.

Nach dem Hochladen mit dem Kommando

1
wfupload.py -w 13 sqrlp.dat

kann die Signalform auf dem FY6900 als "ARB13" ausgewählt werden.

Vermutlich funktioniert das Programm auch für das Vorgängermodell
FY6800.

Windows-Nutzer müssen dem Kommando evtl. noch ein "python" voranstellen.
Außerdem bietet es sich für sie an, den Default für den seriellen Port
in Zeile 11 des Programms in 'COM1' oder dergleichen zu ändern.
Angehängte Dateien:
Gast #6525161
Lesenswert?

Gerade ausprobiert: Es funktioniert mit einem FY6800. Danke :-)
1
python wfupload.py -p /dev/ttyUSB1 -w 64 sqrlp.dat 
2
sending data ...
3
finished

Am besten ist es, wenn man die Waveform mit '-w 64' auf die 
Waveform-Nummer auf 64 legt, weil man dann mit dem Auswahlrad für die 
Waveform mit einmal zurückdrehen gleich zur Wellenform gelangt.
Praktischer wäre es vielleicht noch, wenn das Python-Script gleich auf 
die übertragene Wellenform umschalten würde.
OP Moderator #6525391
Lesenswert?

chris_ schrieb:
> Am besten ist es, wenn man die Waveform mit '-w 64' auf die
> Waveform-Nummer auf 64 legt, weil man dann mit dem Auswahlrad für die
> Waveform mit einmal zurückdrehen gleich zur Wellenform gelangt.

Im Waveform-Einstellmodus schaltet die OK-Taste zwischen SINE und ARB1
hin und her, so dass auch die Waveform 1 schnell erreichbar ist.

> Praktischer wäre es vielleicht noch, wenn das Python-Script gleich auf
> die übertragene Wellenform umschalten würde.

Ich habe das Programm mal entsprechend erweitert. Mit der Option -c kann
angegeben werden, welcher Kanal auf die mit -w festgelegte Signalform
umgeschaltet wird. Der Dateiname kann jetzt auch weggelassen werden,
wenn nur die Signalform umgeschaltet werden soll. Weil der Upload damit
optional ist, habe ich das Programm in arbwf.py umbenannt.

1
usage: arbwf.py [-h] [-p PORT] [-w NUM] [-c NUM] [FILE]
2

3
Upload an arbitrary waveform to FY6900
4

5
positional arguments:
6
  FILE        data file with 8192 integer values in the range 0..16383,
7
              separated by whitespace (if omitted, no data is uploaded)
8

9
optional arguments:
10
  -h, --help  show this help message and exit
11
  -p PORT     serial port, defaults to '/dev/ttyUSB0'
12
  -w NUM      waveform number (1..64), defaults to 1
13
  -c NUM      channel to be switched to the waveform (3 for both, 0 for none),
14
              defaults to 0
Angehängte Dateien:
Gast #6526097
Lesenswert?

>Im Waveform-Einstellmodus schaltet die OK-Taste zwischen SINE und ARB1
>hin und her, so dass auch die Waveform 1 schnell erreichbar ist.

Danke für den sehr nützlichen Tipp und die Erweiterung.
Könnte man den Frequenzzähler auch mit Python auslesen?
OP Moderator #6526451
Lesenswert?

chris_ schrieb:
> Könnte man den Frequenzzähler auch mit Python auslesen?

Ja, natürlich. Alles, was die PC-Software von FeelTech kann, kann man
auch in Python implementieren. Der PC-Software liegt die Datei "FY6900
Serial communication protocol.pdf" bei, die das Kommunikationsprotokoll
fast vollständig dokumentiert. Nur das Protokoll zum Hochladen von
Signalformen scheint vergessen worden zu sein. Solche Dinge kann man
aber selber herausfinden, indem man die entsprechende Funktion der
Originalsoftware benutzt und dabei die serielle Kommunikation abhört.
Gast #6625386
Lesenswert?

Hallo Yalu, Danke für die Info.
Ich habe mir von Siglent das EASYWAVE installiert. Dort habe ich 
erfolgreich mit Sample Rate 8192 Kurven als SendWave csv Datei 
abgespeichert, die erste Zeile der erzeugten Datei mit Inhalt Amplitude 
gelöscht und das File in *.fy umbenannt.
Laden kann ich dann diese Datei in der DDS Signal PC Software ohne 
Fehler. Jetzt würd ich halt noch gern das ganze in den FY6900 bringen. 
Das ist mir jedoch noch nicht gelungen :-(
Gast #6625458
Lesenswert?

Jetzt ist es mir doch noch gelungen die neu erstellte Kurvenform ins 
FY6900 zu importieren.
1. Nach Starten der DDS Signal PC Software auf TAB "Waveform Window" 
wechseln. 2. Dann Button <Add Waveform> drücken.
3. Ganz links erscheint die "Superposition List"; Unter Position 17 und 
18 sieht man Custom; Daneben den Button <Add" drücken; Jetzt kann das 
vorher erstellte *.fy File mit Button <Öffnen> geöffnet werden. Dann auf 
Button <Loading waveform> drücken. Man kommt zurück ins "Waveform 
Window". Hier die "Loading Area auf den gewünschten Wert ändern(z.B. 
64)- Dann Button <Send Data> drücken. Der Ladebalken nimmt zu und als 
Erfolgsmeldung erscheint "Data is written to the completion of" Im 
FY6900 ist unter z.B. 64 die neue Waveform gespeichert.
Viel Spass damit
Beitrag #6625868 wurde von einem Moderator gelöscht.
Beitrag #6629839 wurde von einem Moderator gelöscht.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren