Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Генератор FY6900 и его протокол  (Прочитано 16476 раз)
0 Пользователей и 1 Гость смотрят эту тему.
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« : 27-01-2022 21:28 » 

На подходе китайский генератор FY6900. Дешевое Г с широкими возможностями. Больше всего доставил софт — это лучше цирка.
Обзоров на него и младшие приборы данной серии (6600 и 6800) в сети достаточно.
Больше всего народу не нравится джитер, отсутствующий только на частотах, кратных 2.5 МГц (уточнить). Сам лично наблюдал, очень заметный.
При замере осциллографом через короткий 50-омный кабель с BNC, фронты — супер. По спецификации не более 7 нс, по факту не более 4.5 нс. Но как только меняешь BNC на крокодилы, волнение захлестывает экран, поднимается пена, но золотая рыбка так и не приплывает. Т.е. не стоит делать крутые фронты на невысоких частотах.
Нестабильность амплитуды огромна. При 5 В по генератору на осциллографе Vpp 5.14 В. Завалы амплитуды на высоких частотах приличны, синус 60 МГц — почти половина остается от 5 В, хотя заявлено, что для 20..60 МГц — до 5 В. Надо проверить с меньшей амплитудой.

За кривизной софта разбираюсь с протоколом. Девайc управляется через USB UART. Вот есть готовое на питоне, но очень бедно: https://github.com/NikkiGirl/FY6xxx

specification 1.5:
http://www.eevblog.com/forum/testgear/feeltech-fy6600-60mhz-2-ch-vco-function-arbitrary-waveform-signal-generator/?action=dlattach;attach=393626

specification 1.8:
https://supereyes.ru/img/instructions/FY6900_communication_protocol.pdf

Они все разные! И реальность тоже!
Различается не только состав команд, но и параметры, причем хаотично. Часть команд принимает действительное число (напр., RMF и WMF), часть только целое (напр., RMH и WMH), при этом чтение значения может быть, действительным, а запись того же значения — целым (напр., RMA и WMA).
Некоторые параметры можно с прибора выставить до последнего знака, а с команды последний разряд недоступен (WPR) и наоборот, выставив с команды последний разряд, не можешь поменять его с прибора (UST и UEN для offset).
Некоторые параметры доступны только из команд, их нет на приборе (USA, USD, RSA).
Зачем для первого и второго канала не одинаковая нумерация форм сигналов? Второй канал не поддерживает всего лишь одну форму (Adj-Pulse), из-за этого нумерация не совпадает, а ведь не сложно же было сделать.
Плавает логика булевых значений: для записи это всегда 0 и 1, а на чтении вместо 1 может быть 255. Но хотя бы точно 0 и не 0.
А что с официальным софтом? Это жесть! Он падает на всем. Ввел 0 — упал, ввел после цифры "." — упал, ввел после цифры "," — не падает, но и число не парсит. В общем, шлак полный. Да еще и на VB6, судя по ошибкам.
Пипец разработчики с обоих концов...

Нашел недокументированные команды каналов L и T (соотв.: RML, WML, RMT, и т.д.) и нет в приборном интерфейсе им аналогов.
И пока не знаю команд для записи пользовательских форм, ради этого ресерч и замутил.
Надо брать в руки USB-снифер и потерзать официальную программу.

Еще прибор посылает коды действий на панели прибора, что-то типа сканкодов. Лучше бы посылал внесенные изменения.

Черновик исследования:
Код:
= Commands

Line terminator 0x0A.

Rxy — read from Y of X
Wxya — write A to Y of X
Uxxa — system command XX with optional argument A (write)
Rxxa — system command XX with optional argument A (read)
Sxxa — sweep command XX with optional argument A

= Commands for Rx and Wx

x:
* M — main (channel 1)
* F — subsidiary (channel 2)
* S — main pulse (RSS)
* P — trigger
* T — modulation
* C — counter

= Channels

y:
* N — status (0, 1)
* W — wave (0..99)
* F — frequency (Hz) (NNNNNNNN.NNNNNN)
* A — amplitude (V) (read NNNNNN, write NN.NNNNN)
* O — offset (V) (read NNNNN, write NN.NNN)
* P — phase (grad) (read NNNNNN, write NNN.NNN)
* D — duty cycle (%) (read NNNNN, write NN.NNN)
* S — pulse period (ns) (read NNNNNNNNNN, write NNNNNNNNNN, min 10)
* H — rise time (ns) (read NNNNN, wrire NNNNN)
* L — ??? (read 28, can write)
* T — ??? (read 1, no write)
* K — second frequency for FSK modulation (Hz) (NNNNNNNN.NNNNNN)
* M — frequency offset for FM modulation (Hz) (read NNNNNNNN.NNNNNN, write NNNNNNNNNNNNNN)

wave M F
SINE 0 0
Square 1 1
Rectangle 2 2
Trapezoid 3 3
CMOS 4 4
Adj-Pulse 5 -
DC 6 5
TRGL 7 6
Ramp 8 7
NegRamp 9 8
Stair TRGL 10 9
Stairstep 11 10
NegStair 12 11
PosExponen 13 12
NegExponen 14 13
P-Fall-Exp 15 14
N-Fall-Exp 16 15
PosLogarit 17 16
NegLogarit 18 17
P-Fall-Log 19 18
N-Fall-Log 20 19
P-Full-Wav 21 20
N-Full-Wav 22 20
P-Half-Wav 23 22
N-Half-Wav 24 23
Lorentz-Pu 25 24
Multitone 26 25
Random-Noi 27 26
ECG 28 27
Trapezoid 29 28
Sinc-Pulse 30 29
Impulse 31 30
AWGN 32 31
AM 33 32
FM 34 33
Chirp 35 34
Impulse 36 35
ARB1 37 36
...
ARB64 99 98

= Modulation

y:
* F — main modulation function (N)
* M — main modulation source (N)
* N — number of trigger pulses for mode BURS (NNNNNNN)
* O — manual trigger command
* R — AM rate (%) (NNN.N)
* P — PM offset (grad) (NNN.NN)

function:
* 0 — ASK
* 1 — FSK
* 2 — PSK
* 3 — BURS (trigger)
* 4 — AM
* 5 — FM
* 6 — PM

source:
* 0 — channel 2
* 1 — external AC (VCO IN for modes 4..6)
* 2 — manual (button OK or WPO command) (modes 0..3 only)
* 3 — external DC (modes 0..3 only)

= Counter

y:
* F — read frequency (Hz) (NNNNNNNN)
* C — read counting and continue (N...)
* C — set coupling mode DC/AC (0, 1)
* Z — reset counting (0)
* P — pause the measurement (0)
* T — read cycle width (ns) (N...)
* + — read positive width (ns) (N...)
* - — read negative width (ns) (N...)
* D — read cycle duty (0.1%) (NNN)
* G — read/set gate time 1/10/100 sec (0, 1, 2)

= Sweep

xx:
* OB — set object (N)
* ST — set start position
* EN — set end position
* TI — set time (NNN.NN)
* MO — set mode linear/log (0, 1)
* BE — on/off (0, 1)
* XY — set the control source time/VCO (0, 1)
* MD — set direction forth/back/forth to back (0, 1, 2)

object:
* 0 — frequency
* 1 — amplitude
* 2 — offset
* 3 — duty cycle

position:
* frequency — (Hz) (NNNNNNNN.N)
* amplitude — (V) (NN.NNN)
* offset — (V) (NN.NNN) = (12.000 — V)
* duty cycle — (%) (NN.NN)

= System

xx (xxx):
* MO — model
* ID — ID
* SN — save the parameters of current two channels (01..20)
* LN — load the parameters of current two channels (01..20)
* SA — add channel 2 to channel 1 sync mode (N)
* SD — delete channel 2 to channel 1 sync mode (N)
* RSA — read status of sync mode (N)
* BZn — set status (0, 1)
* RBZ — read status (0, 255)
* MS — uplink mode master/slave (0, 1)
* RMS — read uplick mode (0, 255)
* UL — uplick off/on (0, 1)

sync mode:
* 0 — waveform
* 1 — frequency
* 2 — amplitude
* 3 — offset
* 4 — duty cycle
« Последнее редактирование: 28-01-2022 17:55 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 28-01-2022 11:34 » 

Порекомендуйте, чем читать данные виртуального USB COM?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 28-01-2022 12:09 » 

Etherlogic virtual serial port emulator. Чордт! Ну ЕВМ, разработчики Х! Ну круто же, вроде, но почему через жопу сделано?!
Мониторинг стирается при любом удобном случае. Нельзя посмотреть обе части обмена, только одну. Я бы выводил на одном экране двумя цветами в хронологическом порядке. А так это, без дополнительного софтового обвеса, только работы добавляет. В общем, пять за идею и трояк за реализацию. Садитесь, товарищ Володимир.

Итого, такая схема работает сбросом в один лог, без разделения потоков.

* screen.png (5.13 Кб - загружено 1249 раз.)
« Последнее редактирование: 28-01-2022 12:52 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 28-01-2022 12:37 » 

Протокол заливки семпла в ARB2 примерно такой:
< "DDS_WAVE02\n"
> "W\n"
< binary LE 16 bit x 8192
> "H"
> "N"

Формат отсчета: беззнаковый 14 бит от 0 до 0x3fff, логический ноль — 0x2000.

Опробовал, норм. Единственное, жаль putty не поддерживает посылку бинарных файлов. Пришлось RealTerm ставить, он, поди, еще под XP писан на дельфях, заводится только с дрыном.
Команду и данные можно слать без интервала и ожидания ответа.
« Последнее редактирование: 28-01-2022 20:14 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 28-01-2022 15:11 » 

По последним докам еще погуглил.
FY2300 с описанием протокола заливки семпла с указанием последовательности и времени.
https://www.eevblog.com/forum/testgear/fy6600-control-software-app-dev-ideas/?action=dlattach;attach=692973
Но тут нет ничего про терминаторы строк.

Что характерно для китайцев, на сайте нихрена нет, официальные ссылки заглушены какими-то иероглифами, а на форумах где-то есть инфа, но сперва надо узнать, что искать.
« Последнее редактирование: 28-01-2022 15:17 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 10-02-2022 00:43 » new

Немного не по протоколу: прибор провел учения с моими защитными автоматами. Автоматы отработали отлично. А вот прибор выделил немного белого дыма. Вскрытие показало, что пострадал только блок питания: предохранитель и один из высоковольтных диодов. Цена вопроса 5+12 руб в расценках Чипидипа. Вопрос — от чего?

Прикол первый: на плате нашел проводящий мусор в размере проволоки 1.5 см длиной, соединяющую высоковольтную часть с низковольтной. Хорошо, что больше никто не пострадал, ни я, ни осциллограф.


Следующий прикол в том, что фильтр высоковольтной части заземлен через Y-конденсатор на землю низковольтной части, которая уже заземлена на соотв. контакт в шнуре питания. Если нет защитного заземления или, к примеру, шнур питания неплотно вставлен, то имеем на корпусе сетевое напряжение через 10 нФ. Удалил кондер от греха подальше.

Прикол третий: БД выдает +5, и ±12, но прибор использует только +5. Т.е. его можно заменить любым БП от мобильника.

* 20220210_021125.jpg (611.22 Кб - загружено 1635 раз.)
« Последнее редактирование: 10-02-2022 00:51 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines