Доброго времени. Получили вчера 3 комплекта осциллов. Всё ок. И сразу мысль можно ли все 3 осцилла подключить к одному ноуту и 3 сигнала наблюдать в одном окне программы? С дивайсами ещё особо глубако не игрались только-только распаковали и настроили дрова.
Три на одном ПК - возможно, но уже не на первом Пентиум, а хотя бы мегагерц 500 потребуется для комфортной работы. Будет три раздельных осциллографа, каждый в своём окне. В одно окно свести нельзя - между осциллографами нет синхронизации развертки. В осциллографах общепринято, когда шкала времени на экране осциллографа единая для всех отображаемых каналов.
Спасибо за оперативный ответ. Если я правильно понял, то проблема в том, что железо oscill делает синхронизацию самостоятельно? Или можно синхронизироваться по одному из каналов, как это сделано на двухлучевых осциллографах, тех же C1-... например?
Да, синхронизация происходит внутри oscill: компаратор, сравнивающий опорный уровень и уровень сигнала на входе АЦП, вырабатывает событие синхронизации. По этому событию начинается отсчет времени до прекращения заполнения выборками кольцевого буфера. Если развертка задержанная - то отсчет идет до начала заполнения буфера выборками.
Проблема в том, что невозможно мгновенно передать из одного oscill-а в другой это событие синхронизации, и поэтому развертки будут несинхронны.
Если невозможно передать событие синхронизации, то может быть лучше дождаться этого события от железа oscill. А за тем сравнивая и учитывая время запаздывания относительно самого первого пришедшего события синхронизации выводить кривые на экране программы. Единственное условие - опросить железо одновременно. Возможно коряво объяснил. 1. Опрашиваем одновременно железо и ждём ответ. 2. Пришло первое событие синхронизации от какого либо oscill. 3. Запоминаем номер этого oscill и начинаем отсчёт ожидания остальных событий синхронизации. 4. Запоминаем отставание каждого следующего события синхронизации. 5. Выводим на экран данные с учетом отставания каждого из сигналов. как-то так.
Это невозможно. От oscill не приходят события синхронизации. В компьютер поступает готовая осциллограмма через неопределенное время после интервала оцифровки. Синхронизации с компьютером быть не может в принципе, ни в одну, ни в другую сторону. Это не позволят ни протокол/чипсет/чип USB, ни операционная система. Задержки огромны: до десятков (а на медленных ПК - сотен) миллисекунд.
Теоретически, можно сделать полностью независимый "внешний синхронизатор", получающийся на его выходе импульс скармливать на вход компаратора каждого из oscill-ов... Но получающаяся громоздкая, неудобная и дорогая конструкция начисто лишена смысла.
даже проще можно: выход синхронизации одного осцилла завести на вход синхронизации другого. Но конструктивно такая связь не получится в нынешнем исполнении. И задержка этой синхронизации не ясна, особенно если ее делать через оптрон (чтобы каналы были гальванически развязаны между собой).
если я правильно понимаю, то основная причина немногоканальности - конструктив... если так, почему бы не описать то, как можно было бы синхронизировать, что бы сделать это самостоятельно, и каждый кому это нужно сделал бы это сам под личную ответственность... а уж как кто это сделает.. или просто отверстия с торчащими проводами или что-то более изошрённое... по поводу неопределённости с задержкой, но ведь её можно программно нивелировать... я бы сразу второй экземплярчик заказал ведь иногда ну оочень нехватает второго канала...
Программно синхронизировать нельзя, к сожалению. Windows может в любой момент прервать работу программы, и вернуть ей управление через неопределенное время. USB чипсет также не позволит синхронизировать устройства: последовательность опроса портов неизвестна, да и контроллеров USB может быть несколько. То есть, нельзя точно узнать момент физической посылки команды в oscill, и также момент прихода данных узнать невозможно.
Опыт показал, что самостоятельными доработками мало кто интересуется. Нужно давать готовое решение. Двухканальность в ПО вводить довольно сложно, и ради самодельной взаимосинхронизации - неэффективно.
Уже сейчас можно использовать два (3, 4) осцилла - каждый в своем окне, и со своей синхронизацией. Это имеет преимущества: каналы развязаны гальванически, и можно использовать разную развертку для каждого.
синхронизацию я имел в виду апаратную, а вот уже задержку, которую вносит тот же оптрон между устройствами уже коректировать програмно при калибровке... она ведь относительно постоянна и не зависит от контроллера юсб или шедулера винды... а в реализации программной части такого мероприятия с удовольствием поучавствовал бы, если нужны лишние руки... по поводу каналов в разных окнах - это конечно вариант, но иногда необходимо, например, проверить или измерять dead-time в несколько десятков нс, проверить/отрегулировать совпадение фаз и т.п.... как здесь быть?
внедрять в одну оболочку работу с двумя осциллами - это большой и неблагодарный труд, поскольку такое будет редко покупаться: цена двух oscill уже одного порядка с ценой китайских двухканальных USB-осциллографов. Тем более, что это не будет готовым решением: ведь нужна прямая синхронизация, мало кто будет паять эту связь, а потом при работе обвешиваться таким количеством проводов... Перспективнее видится добавить в осцилл второй (медленный, или даже цифровой) канал, и смешать данные в один пакет, передаваемый по одному USB-кабелю. Это в планах.
Но, засинхронизировав аппаратно каналы, есть свои плюсы и минусы в раздельных окнах для каналов. Например, у каждого канала свои В/дел, и в разных окнах они не путаются.
Разность фаз намного точнее (и без необходимости калибровать оптронную развязку) можно измерить старым способом (в прошлом веке большинство осциллографов было одноканальными): посадив на один из сигналов вход внешней синхронизации, а щуп попеременно на один и второй сигнал, замеряя по экрану разницу. В этом способе главное - низкая входная емкость осциллографа (впрочем, ее можно компенсировать соотв конденсатором вместо щупа).
Насчет "поучастия" - в предыдущей тестовой версии (1.4.1) был открыт сетевой доступ к управлению оболочкой (и через нее - осциллом). Это позволяет, написав свой софт, получить: - более красивую/удобную панель управления (например, с визуальными крутилками и тумблерочками, вплоть до "оживления" фотографии какого-нибудь легендарного С1-65А);
- управление от "железной" панели, например - с валкодерами, вплоть до педалей. Панель можно подключить пассивно к LPT (в том числе - USB LPT) , или сделать на базе микроконтроллера с USB, или даже взять китайский Bluetooth модуль на CSR чипсете, у которого есть свободных ног с десяток и SDK...
- то, что Вам нужно: пульт управления одновременно двумя оболочками.
Для всех этих вариантов удобно то, что панели управления winoscill можно прятать, оставляя только сами экраны с сеткой и осциллограммой. Протокол управления оболочкой через TCPпорт тут на сайте описан, если что надо - добавим.
Спасибо большое за информацию, много полезного подчеркнул... по поводу сети... фишка кнешна интенесная... но это игрушка... (учитывая специфику осцилографа как таковую) лаги от работы с сетью - лучше с ними вообще не связваться чем разгребать... лично для меня было бы намного ценнее - достпность протоола обмена с железякой (без дллки), нарисовать примитивную обёртку на С + интерфейс на, к примеру, python+Qt, что б легко портировать можно было... ну а дальше свободы куда больше получается, вплоть до совсем нестандартных применений железяки (в виду её невысокой стоимости)...
самому реализовывать от самого низа - очень много работы, вряд ли у кого есть на это время. Возня с нижними уровнями отобьёт желание, поскольку станет очевидно: до результата (своей осциллограммы) - еще долгие месяцы. Поэтому целесообразнее начинать сверху - сначала индикация готового пакета (их много видов, разного формата и длины, сняты с разными установками чувствительности, оффсета, предвыборок, синхронизации, и т д). Затем, когда разные виды пакетов показываются, сохраняются и измеряются - можно заняться управлением, то есть наваять кнопок-ползунков, и через oscilink.dll уже самостоятельно командовать oscill-ом. Ну а уж потом можно (если захочется) забрать себе и функции oscilink-а (работа с COM-портом/USBXpress, упаковка в пакеты, конвейер команд, автопосылки, проверка целостности, перепосылки-перезапросы, таймауты, и GUI по настройке всего этого.
По поводу сети - на ней свет клином не сошелся, можно и через буфер обмена (clipboard) организовать управление, или ещё как-нибудь. Хоть виртуальный COM-порт создать и его слушать (вместо сокета).
Мечта просто. Единственно, с аналоговой частью непонятно, какова реальная полоса пропускания. Но, тем не менее. Это чуть-чуть дороже 2-х штук oscill, зато + 2-канальность + лог.анализатор + автономность. И проект развивается!
самому реализовывать от самого низа - очень много работы, вряд ли у кого есть на это время. Возня с нижними уровнями отобьёт желание, поскольку станет очевидно: до результата (своей осциллограммы) - еще долгие месяцы. Поэтому целесообразнее начинать сверху - сначала индикация готового пакета (их много видов, разного формата и длины, сняты с разными установками чувствительности, оффсета, предвыборок, синхронизации, и т д). Затем, когда разные виды пакетов показываются, сохраняются и измеряются - можно заняться управлением, то есть наваять кнопок-ползунков, и через oscilink.dll уже самостоятельно командовать oscill-ом. Ну а уж потом можно (если захочется) забрать себе и функции oscilink-а (работа с COM-портом/USBXpress, упаковка в пакеты, конвейер команд, автопосылки, проверка целостности, перепосылки-перезапросы, таймауты, и GUI по настройке всего этого.
По поводу сети - на ней свет клином не сошелся, можно и через буфер обмена (clipboard) организовать управление, или ещё как-нибудь. Хоть виртуальный COM-порт создать и его слушать (вместо сокета).
при всём уважении, порой складывается ощущение, что вы искусный отговариватель.. ))
кто-то реализует каку-то примитивную функцию железяки и будет её использовать.. кто то возьмётся делать идеальный софт-осцилограф на базе этой железяки и провозится всю жизнь не дойдя до цели, а большинство будет где-то между, и каждый найдёт что-то полезное для себя... суть не в конкретной конечной цели, она у каждого своя, суть в том что бы была какая-то база и возмжности, и каждый уже будет плясать сам в строну своих целей от этой базы благодаря этим возможностям...
Даже чтобы примитивную функцию реализовать - надо выстроить и отладить все уровни взаимодействия, и провести сложную подготовку в начале сеанса: выкачать из oscill-а его возможности и границы параметров.
Added 08.07.2011 13:04:51:
Gray Cat wrote:
И проект развивается!
oscill модернизируется - уже на выходе очередная версия ПО для Windoows (с поддержкой USB драйверов v3, улучшенным Bluetooth и прочим). Есть прогресс с ПО для Winmobile - вчера заработало на HTC HD2 (WM6.5). Вот что значит летнее снижение спроса - сразу появляется время для разработок.