Допрос Mastech MS8050 бюджетного цифрового мултиметра

VISA, TCP/IP, USB, CAN, GPIB и подобные протоколы
Endeavour
junior
junior
Сообщения: 55
Зарегистрирован: 30 июл 2012, 16:00
Версия LabVIEW: 2011 & 8.0

Допрос Mastech MS8050 бюджетного цифрового мултиметра

Сообщение Endeavour »

Уважаемые знатоки,

прошу помочь с пониманием, как правильно допросить одного китайца, а именно - Mastech MS8050. По описанию накатал простейший VI
Mastech-MS8050test.png
Mastech-MS8050test.png (4.76 КБ) 12244 просмотра
для общения по последовательному порту с помощью VISA, но, пока, получаю только сообщение о TimeOutError.
К вопросу прилагаю описание прибора и его протокола данных:
Mastech_MS8050(Datasheet&DataFormat).zip
(219.02 КБ) 714 скачиваний
Буду очень признателен.
Аватара пользователя
Jakob Brontfeyn

Activity Gold Silver Black
expert
expert
Сообщения: 1738
Зарегистрирован: 28 фев 2008, 11:01
Награды: 6
Благодарил (а): 2 раза
Контактная информация:

Re: Допрос Mastech MS8050 бюджетного цифрового мултиметра

Сообщение Jakob Brontfeyn »

Не заставляй нас скачивать и копаться в чужой документации,
просто опиши, как выглядит посылка опроса
и как выглядит принимаемая посылка,
а может этот "китаец" работает спорадически без опроса...?
а может по интервалу времени...?
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5692
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 35 раз
Поблагодарили: 129 раз

Re: Допрос Mastech MS8050 бюджетного цифрового мултиметра

Сообщение IvanLis »

Endeavour писал(а):прошу помочь с пониманием, как правильно допросить одного китайца
я как-то сражался с подобным прибором
он не начинал передавать данные пока не установишь DTR в "1", а RTS в "0".
Сигналы последовательных портов писал(а):DTR - Установленный сигнал показывает модему или другому устройству, что модуль последовательного порта готов установить соединение.
RTS - Установленный сигнал информирует модем или другое устройство о том, что модуль последовательного порта готов к обмену данными.
Посмотрите здесь: Задержка между Visa Write и Visa Read, но у Вас может быть и иная комбинация.
У меня была с ним демо программа и я сниффером внешним подключался и смотрел, как они взаимодействуют с прибором.
Аватара пользователя
Oleg B.

Activity Professionalism
leader
leader
Сообщения: 674
Зарегистрирован: 25 сен 2011, 11:30
Награды: 2
Версия LabVIEW: 5 .. 2021
Откуда: Israel
Контактная информация:

Re: Допрос Mastech MS8050 бюджетного цифрового мултиметра

Сообщение Oleg B. »

Чтобы этот китаец начал что-то передавать через RS-232, надо нажать кнопку "HOLD" на две секунды.
А чтобы перестал - еще раз на две секунды.
veni, vidi, phallomorphi
Endeavour
junior
junior
Сообщения: 55
Зарегистрирован: 30 июл 2012, 16:00
Версия LabVIEW: 2011 & 8.0

Re: Допрос Mastech MS8050 бюджетного цифрового мултиметра

Сообщение Endeavour »

Jakob Brontfeyn писал(а):Не заставляй нас скачивать и копаться в чужой документации, просто опиши, как выглядит посылка опроса и как выглядит принимаемая посылка, а может этот "китаец" работает спорадически без опроса...? а может по интервалу времени...?
У меня и мысли не было нагружать вас лишней информацией! Просто мои знания работы с RS232 по скудности сравнимы с описанием этого зверя. Я интерпретировал инфу из Data Format в свой VI, но не был уверен в своей правоте.
Посылки опроса нет, девайс все время лопочет по последовательному порту то, что у него сейчас на уме.
IvanLis писал(а): я как-то сражался с подобным прибором, он не начинал передавать данные пока не установишь DTR в "1", а RTS в "0"...
У меня была с ним демо программа и я сниффером внешним подключался и смотрел, как они взаимодействуют с прибором.
Спасибо, учёл: DTR = "Asserted", а RTS = "Unasserted".
Качнул это убожество, оно даже кое-как работает. А что за сниффер вы использовали? Можно ли такое организовать через "RS232 то USB" + LabView? Или может hyperterminal заставить слушать китайца?
Oleg B. писал(а):Чтобы этот китаец начал что-то передавать через RS-232, надо нажать кнопку "HOLD" на две секунды.
А чтобы перестал - еще раз на две секунды.
ДА! Именно! Только после этого он и стал лопотать. Теперь вот, пытаюсь распознать, что.

Выглядит это так: включил коммуникацию по RS-232, выставил модус DCV autorange и подал 17Vdc. В описалове стоит: "Each group datas is made up of 8 bytes, transmitted baud rate is 2400, even parity bit, 8 data bits and 1 start bit,1 stop bit. Ага, установил это в настройках VISA: Пытался считать последовательно по байтам 1. один байт - диапазон, 2. один байт - перегруз, 3. байт - минимум/максимум/нагатив и пять оставшихся - значение.
Работает через раз: сначала - VISA overrun error, затем - есть соединение и данные читаются. Но меняются каждый такт. Чтобы разобраться, что мне всё же китаец посылает, установил чтение до 100 байт. Вот результат:
test2_Blockdiagram.png
test2_Blockdiagram.png (8.45 КБ) 12208 просмотров
test2_FrPanel.png
test2_FrPanel.png (3.15 КБ) 12208 просмотров
Заметил, что группы байтов разделeны "7D00 A101", а значния пятёрки в группе меняются слабо (не хамелион: трудно отследить показание монитора и DMMа). Могу предположить, это - значение моей напруги. Но! А где же информация о том, что мереется, диапазон, знак/мин/макс?
Аватара пользователя
Oleg B.

Activity Professionalism
leader
leader
Сообщения: 674
Зарегистрирован: 25 сен 2011, 11:30
Награды: 2
Версия LabVIEW: 5 .. 2021
Откуда: Israel
Контактная информация:

Re: Допрос Mastech MS8050 бюджетного цифрового мултиметра

Сообщение Oleg B. »

Как интерпретировать эти 100 байтов, к сожалению не знаю.
В присланном тобой файле Mastech_MS8050_Data_Format.pdf написано, что первый полубайт(4 бита В7-В4) в блоке данных
всегда 1010 (0хА)
Поэтому данные разбиваются следующим образом:
data.png
data.png (4.81 КБ) 12190 просмотров
Сам очень удивился, но блоки получились по 14 байт вместо 8-и.
В указанном случае почти все блоки совершенно идентичны - поэтому попытаюсь "перевести" на наш язык только один

Код: Выделить всё

A101 1000 0106 0908 0400 0000 7D00  - 6 раз
A101 1000 0106 0908 0300 0000 7D00 - 1 раз
option1 A1 А - start of block, (b0001) - множитель, в зависимости от режима измерения (option2,B4-B0), но для dBm такого множителя нет.
option2 01 (b000) -? (b00001) - dBm ( автор уверяет, что должен быть DCV - для DCV множитель как раз подходит)
0106 0908 04 -> 16984 -> 16.984V , что близко к установленным 17.0
0106 0908 03 -> 16983 -> 16.983V

A101 1000 0106 0908 0400 0000 7D00
o1o2 o3x1 D4D3 D2D1 D0x2 x3x4 x5x6

x1..x6 -ХЗ(рус)
Больше мне сказать нечего, так как формат представленных данных и его описание не совпадают.
Последний раз редактировалось Oleg B. 01 авг 2012, 20:23, всего редактировалось 1 раз.
veni, vidi, phallomorphi
Endeavour
junior
junior
Сообщения: 55
Зарегистрирован: 30 июл 2012, 16:00
Версия LabVIEW: 2011 & 8.0

Re: Допрос Mastech MS8050 бюджетного цифрового мултиметра

Сообщение Endeavour »

option1 A1 А - start of block, (b0001) - множитель, в зависимости от режима измерения (option2,B4-B0), но для dBm такого множителя нет. option2 01 (b000) -? (b00001) - dBm ( автор уверяет, что должен быть DCV)
Да, пока измеряю DCV. Спасибо, вы подтвердили моё подозрение.

Простите покорно, но у меня проблема с идентификацией данных: start of block это А, А1 или А101? А end of block будет 7D00, 0 или начло следующего блока? Он же долже, по правилам, кончаться бинарным 0. По какому значнию мне нужно парсер ответа организовать, чтобы срезать нос и хвост?
Я всё ещё не понимаю, где в этих 7 байтах(?) части OPTION1, OPTION2, OPTION3, D4, D3, D2, D1 и D0? Они ведь должны быть разделены 01.
Аватара пользователя
Oleg B.

Activity Professionalism
leader
leader
Сообщения: 674
Зарегистрирован: 25 сен 2011, 11:30
Награды: 2
Версия LabVIEW: 5 .. 2021
Откуда: Israel
Контактная информация:

Re: Допрос Mastech MS8050 бюджетного цифрового мултиметра

Сообщение Oleg B. »

Я всё ещё не понимаю, где в этих 7 байтах(?) части OPTION1, OPTION2, OPTION3, D4, D3, D2, D1 и D0? Они ведь должны быть разделены 01.
Посмотри мой предыдущий пост - я его поправил.
о1,о2,о3, D4,D3,D2,D1,D0 = OPTION1, OPTION2, OPTION3, D4, D3, D2, D1 и D0 соответственно.
01 - это старт и стоп биты протокола и пользователю они не передаются.

start of block это А!!!!
veni, vidi, phallomorphi
Endeavour
junior
junior
Сообщения: 55
Зарегистрирован: 30 июл 2012, 16:00
Версия LabVIEW: 2011 & 8.0

Re: Допрос Mastech MS8050 бюджетного цифрового мултиметра

Сообщение Endeavour »

0106 0908 04 -> 16984 -> 16.984 , что близко к установленным 17.0
0106 0908 03 -> 16983 -> 16.983

A101 1000 0106 0908 0400 0000 7D00
o1o2 o3x1 D4D3 D2D1 D0x2 x3x4 x5x6

x1..x6 -ХЗ(рус)
Всё верно, это показание дисплея DMM с погрешностью моего источника и самого вольтметра, оно не всегда стабильно и прыгает временами.

Олег, если я персчитываю DEC ->HEX, то получаю 16984 -> 4258, если же наоборот - 0106 0908 04 -> 1125290901508. По какому правилу вы разгадали ответ китайца? Ваше поясниение "o1o2 o3x1 D4D3 D2D1 D0x2 x3x4 x5x6" я понять не смог.
Endeavour
junior
junior
Сообщения: 55
Зарегистрирован: 30 июл 2012, 16:00
Версия LabVIEW: 2011 & 8.0

Re: Допрос Mastech MS8050 бюджетного цифрового мултиметра

Сообщение Endeavour »

Начинаю улавливать.
Аватара пользователя
Oleg B.

Activity Professionalism
leader
leader
Сообщения: 674
Зарегистрирован: 25 сен 2011, 11:30
Награды: 2
Версия LabVIEW: 5 .. 2021
Откуда: Israel
Контактная информация:

Re: Допрос Mastech MS8050 бюджетного цифрового мултиметра

Сообщение Oleg B. »

Код: Выделить всё

0106 0908 04 
 1  6  9 8  4   -> 16984 -> 16.984V
00 -> 0
01 -> 1
02 -> 2
03 -> 3
04 -> 4 
05 -> 5
06 -> 6
07 -> 7
08 -> 8
09 -> 9 

A101  o1o2       
1000   o3x1
0106   D4D3
0908   D2D1
0400   D0x2
0000   x3x4
7D00   x5x6
 
о1,о2,о3, D4,D3,D2,D1,D0 = OPTION1, OPTION2, OPTION3, D4, D3, D2, D1 и D0 соответственно.
veni, vidi, phallomorphi
Endeavour
junior
junior
Сообщения: 55
Зарегистрирован: 30 июл 2012, 16:00
Версия LabVIEW: 2011 & 8.0

Re: Допрос Mastech MS8050 бюджетного цифрового мултиметра

Сообщение Endeavour »

Олег, спасибо, разжевали-разъяснили: теперь алгоритм понятен.
С вашей подачи начал парсить ответ. Цифирь начала вырисовываться: метод найден, а остальное дело техники.


Так как имею честь общаться с профессионалами, представлю текущие скриншоты: может быть есть более простой способ? Уж больно навороченный парсер вылупился. И это только для напруги, а у китайца еще 20 модусов. И это меня толкает в сомнения.

Буду рад узнать ваше мнение. Прошу смотреть картинки.
Вложения
var1c_block_diagram.png
var01c_front_panel.png
var01c_front_panel.png (3.31 КБ) 12132 просмотра
Аватара пользователя
Oleg B.

Activity Professionalism
leader
leader
Сообщения: 674
Зарегистрирован: 25 сен 2011, 11:30
Награды: 2
Версия LabVIEW: 5 .. 2021
Откуда: Israel
Контактная информация:

Re: Допрос Mastech MS8050 бюджетного цифрового мултиметра

Сообщение Oleg B. »

Посмотри, что получилось у меня
read China.png
Вложения
Read MS8050.vi
LV 8.0
(16.47 КБ) 180 скачиваний
veni, vidi, phallomorphi
Endeavour
junior
junior
Сообщения: 55
Зарегистрирован: 30 июл 2012, 16:00
Версия LabVIEW: 2011 & 8.0

Re: Допрос Mastech MS8050 бюджетного цифрового мултиметра

Сообщение Endeavour »

Ваше решение оптимальнее, и, к тому же, стабильнее моего. Трудно поверить, но у меня VISA заартачилась, как раз, когда я увидел ваше сообщение! :D
Итак, наступил следующий этап: распознание режимов китайца. Их там у него аж 21 штука зарезервированна, и (почти) для каждого - свои множетели значений. Я как раз, с этим до конца не разобрался. Прилагаю ваш дополненнный :vi: и "замороженную" версию моего парсера.
Mastech-MS8050test01d.zip
(30.67 КБ) 179 скачиваний
Read_MS8050a.vi
(39.51 КБ) 197 скачиваний
Буду очень рад любым предложениям и поправкам!
Аватара пользователя
Oleg B.

Activity Professionalism
leader
leader
Сообщения: 674
Зарегистрирован: 25 сен 2011, 11:30
Награды: 2
Версия LabVIEW: 5 .. 2021
Откуда: Israel
Контактная информация:

Re: Допрос Mastech MS8050 бюджетного цифрового мултиметра

Сообщение Oleg B. »

Взломал я этого китайца до конца.
Он передает в каждом блоке 14 байт:
4 байта служебной информации (флаг начала блока, режим, множитель, знак,.....) (opt1,opt2,opt3,opt4)
5 байт данных основного индикатора (D4,D3,D2,D1,D0)
5 байт данных дополнительного индикатора (S4,S3,S2,S1,S0)

opt1- B7..B4 - всегда b1010 (xA) - флаг начала блока
B3..B0 - множитель основного индикатора - зависит от режима работы
opt2 - B4..B0 режим работы
opt3 - опции индикаторов
opt4 - опции дополнительного индикатора
D4,D3,D2,D1,D0 - цифры основного индикатора
S4,S3,S2,S1,S0 - цифры дополнительного индикатора

Ухожу - допишу, когда вернусь
veni, vidi, phallomorphi
Ответить

Вернуться в «Коммуникация с приборами»