Mario, this is puzzling to be sure! No, I am not seeing the peaks, but we may not yet have the software matched to the particular configuration of your FY6900. Let's unpack the reports you gave:
I have tried the WMW1000 command, as you asked me for, but nothing happens, no change at all in the FY6900 Display.
Here more examples:
WMW123456.12345678 => waveform jumps to ARB29
Oops - I completely blew it. I meant to say WM
F1000, not WM
W1000. As you have seen, WMW changes the wave form. The code only ever sets WMW to 0 to select a sine wave. (I guess to be extra sure, you might verify that you do get a sine wave when you issue WMW0.)
WMF123456.12345678 => frequency change to 123.456´123´456KHz
RMF => 00123456.123456
WMF12345678.12345678 => frequency change to 12´345.678´123´456KHz
RMF => 12345678.123456
This part seems to match the firmware that I have on my FY6900 and the code that I wrote. Variations of the FY6900 firmware handle the request and response differently; some requires the frequency to be given as an integer (representing microHertz); some sets it as a floating point, but reads it as an integer; and so on. If you look at the param_translator structure in the awg_fy6900.cpp file (and the corresponding structure description in awg_fy.h), you will see that for FRQ the parameters are as follows:
{ pt_DOUBLE, 0, 6, 0, pt_DOUBLE, 0 }, // FRQThis says that the frequency setting command (WMF) should be provided as follows:
pt_DOUBLE -> floating point format
0 -> no adjustment of magnitude (i.e., multiply by 10^0)
6 -> 6 decimal places
0 -> no need for a fixed width
and that the frequency reading command (RMF) should return the value as follows:
pt_DOUBLE -> floating point format
0 -> no adjustment of magnitude (i.e., multiply by 10^0)
Fortunately, this is what your tests are showing. You are asking for a frequency of 123456.12345678; the display shows that it is set to 123.456 123 456 kHz - note the k, so this is equivalent to 123456.123456 Hz. Note also the limit of 6 decimal places (or to say it another way, it allows settings down to 1/100000 of a Hz).
Reading back, you are getting 00123456.123456 - the zero fill is ignored, but the value is the same as what was requested.
On to the next bit:
In the Telnet monitor I found the following meassages:
"VXI connection established on port 9011
CREATE LINK request from "inst0" on port 9011
WRITE DATA on port 9011 = C1:BSWV FRQ,2458.97959
Unable to verify FRQ
DESTROY LINK on port 9011
Closing VXI connection on port 9011"
Yes, the fact that it did not succeed in verifying the requested frequency
may be a problem. Currently the code is set to do 2 retries (see line 132 in espBode.ino) precisely because it doesn't always "take" the first time. Can you capture more of the Telnet debug report, and see if it tries again to set the frequency and does succeed? Perhaps it is "mostly" succeeding within 2 retries, but once in a while it drops the ball and gives you the peak?? (Just guessing here ...) The way to determine this would, unfortunately, be to capture the complete Telnet debug and then go through it to try to match it with the peak frequency in your report. Tedious, but it would provide helpful information - specifically, whether the problem is indeed a matter of not getting the frequency setting, or whether something else is going on.
One possibility is that the amplitude, offset, or phase settings are not working as expected. Here is the param_translator in awg_fy6900.cpp as I wrote it:
{ pt_DOUBLE, 0, 4, 0, pt_INT, -4 }, // AMP
{ pt_DOUBLE, 0, 3, 0, pt_INT, -3 }, // OFST
{ pt_DOUBLE, 0, 3, 0, pt_INT, -3 } // PHSE
What this is showing is that each of these values is sent as a floating point number for the exact amount, limited to either 4 decimal places (amplitude) or 3 decimal places (phase and offset); however the values are returned as integers, and have to be divided by 10,000 (amplitude) or 1,000 (phase and offset). Thus, for example, you send the offset in volts (e.g., WMO1.234) but you get the response back in millivolts (RMO returns 1234).
Try sending the following commands via the Telnet PASSTHROUGH and see if the scope settings and responses are as expected:
WMA1.2345
RMA should return 12345 and scope should show 1.2345V as the amplitude
WMO2.345
RMA should return 2345 and scope should show 2.345V as the offset
WMP54.321
RMA should return 54321 and scope should show 54.321° as the phase
I definitely want to get back to this. It may be that there are some optional timing delays that could help - i.e., in case the FY6900 is just getting overwhelmed with too much, too fast. I'm still buried in work responsibilities, but the end is in sight - I will partially retire at the end of May, so my time will be a good bit more flexible after that!
Andy