Шесть месяцев назад я переехал во Флориду и начал работать в GradientOne, стартапе, создающем веб-платформу для взаимодействия с научными и тестовыми инструментами и выполнения анализа данных. Это находится прямо в центре моих интересов и занимает меня довольно много. Между моей новой работой и работой над электропроводкой в ​​моем новом доме у меня не было много времени для сторонних проектов или обзора музыки, которую я слушал.

Тем не менее, я вел блог за доллары о вещах, которые я создал для GradientOne, и я собираюсь использовать этот пост в блоге как возможность показать, что я создал. Если какая-либо из этих функций вас интересует, вам следует связаться с GradientOne, чтобы получить доступ к API или поговорить о ваших конкретных необходимых функциях.

Поддержка CANOpen

Я добавил поддержку устройств CANOpen, которые сильно отличались от устройств, совместимых с SCPI, которые ранее поддерживал GradientOne. В отличие от SCPI, я никогда раньше не работал с протоколами CAN, которые больше походили на TCP/IP, чем на протокол последовательной связи. Я создал веб-интерпретатор кадров CANOpen, чтобы другим, изучающим CANOpen, в будущем было проще.

Совпадение с образцом трассировки

Было много случаев, когда в процессе отладки оборудования я наблюдал за сюжетом, и это вызывало чувство дежа-вю. Фигуры запоминаются намного легче, чем список чисел. Созданный мной инструмент сопоставления шаблонов трассировки позволяет помечать разделы набора данных x-y, а затем выполнять поиск по всем предыдущим данным трассировки. Это означает, что если в эксперименте есть устойчивая вспышка, которая происходит один раз из тысячи, эту вспышку можно идентифицировать, даже если она появляется в разное время и в разных местах или даже несколько раз. Как только шаблоны определены, их можно использовать для определения других измерений, так что вы можете сделать что-то вроде расчета времени между началом тактового сигнала и появлением определенного байта.

Определение критерия прохождения/непрохождения

Большинство современных фабрик работают на ПЛК, где каждый отдельный процесс сводится к логическим значениям true/false при определении будущих ветвящихся процессов. С этой целью я создал интерфейс для определения тестов, чтобы добавить критерии прохождения/непрохождения к собранным данным. Критерии «годен/не годен» могут быть получены в конце серии нескольких различных измерений. Рассчитанные измерения «годен/не годен» добавляются в индекс поиска, чтобы существующие измерения можно было быстро отсортировать на основе «годен/не годен».

Командный язык GradientOne

Точное знание того, как общаться с новым устройством, как только вы его получите, является раздражающей болью. Хотя устройства, совместимые с SCPI, немного проще в использовании, чем те, которые используют какой-либо новый протокол связи, разработанный инженером, бросающим дротики в клавиатуру, как, кажется, многие устройства, разработанные за пределами США, многие производители устройств не в состоянии сделать это. их протоколы SCPI совместимы с SCPI. Язык команд GradientOne использует синтаксис, подобный Python, и пытается обеспечить согласованную грамматику для написания инструментов и запросов к ним. После добавления функций устройства в GradientOne включение их в язык команд означает, что веб-редактор может подсказывать пользователю обо всех доступных функциях.

Это четыре крупных проекта, которые я реализовал за последние шесть месяцев. В настоящее время я работаю над использованием машинного обучения для декодирования цифровых сигналов и планирую поддержку большего количества устройств.