Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Выбор языка программирования для создания ПО к прибору.

James Raynor Ученик (122), закрыт 2 года назад
Добрый день. Какой язык программирования необходим для создания ПО, которое будет управлять аналитическим оборудованием в лаборатории? То есть ПО должно взаимодействовать с оборудованием и получать от него информацию (температура, давление, сила тока и напряжение и прочее) и в дальнейшем обсчитывать полученные данные, выдавать результат и т.д.
Лучший ответ
matod Искусственный Интеллект (181274) 2 года назад
Я вижу в вашем вопросе не одну, а несколько задач, которые, возможно, эффективно будут решаться разными языками.

На уровне сбора информации вы можете быть ограничены языком оборудования или требованиями быстродействия, параллельности, надежности... Одно дело опрашивать какой-нибудь "умный" датчик раз в 10 секунд, скачивая с него порции данных, другое - написать специальный софт для отслеживания быстротекущих процессов с гигабайтами информации в секунду, сотнями датчиков и высокой скоростью и сложностью управляющих команд.. Тут можно встретить обычно С/C++, ассемблер. Но и другое встречается или приемлемо. Та же Java, а то и вовсе бейсик какой-нибудь.

Второй "слой" - это база данных, где будет накапливаться и проходить первичную обработку эта информация. Тут тоже варианты могут быть, если данные сложные, их обработка тоже, объемы большие - возможно есть смысл положиться на СУБД с их языками. Тоже простор - или "промышленные" языки, SQL например. Или городить что-то самодельное.

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

И, наконец, четвертый - рабочее место пользователя, оператора и т. д. Тут будут свои критерии, быстродействие не так важно, как эргономика, совместимость со средой или скорость разработки.

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

Если пальцем в небо, для нестрашной лабораторной установки я бы, наверное смотрел в сторону использования С/C++/ассемблера для программирования микроконтроллеров, SQL для хранения, извлечения и поддержания корректности данных. Для расчетов, управления - Python. + web- интерфейс.
Для совсем простой задачи - взял бы язык попроще и поуниверсальней отдельно или в связке с SQL.

Но это не точно. Поэтому вам лучше начать не с выбора языка, а с построения подробных требований к информационной системе, включающих описание датчиков, показателей, временных характеристик, имеющегося парка оборудования, требования к надежности, быстродействию, ожидаемые объемы данных, сложность математики и т. д.
James RaynorУченик (122) 2 года назад
Спасибо за развернутый ответ.
Если совсем кратко, то должно быть ПО, которое будет удобно пользователю. Это может быть сложный анализ, по типу кулонометрического титрования хлоридов, либо что-то попроще, вроде обычного контроля за температурой в рабочей камере и регулировка подачи газа в зависимости от временного интервала.
То есть наблюдать на график увеличения сигнала, отслеживать параллельно некоторые параметры. Перед глазами должен быть список проб уже проанализированных и стоящих в очереди.
Датчики тоже разные, как температурные, так и электродная система в растворе, которая контролирует уровень потенциала.
matod Искусственный Интеллект (181274) Я не знаю что такое кулонометрическое титрирование и сейчас не готов даже погуглить, чтобы составить представление о сложности требуемой математики... Ваше описание - это далеко не то, что нужно для принятия хорошего решения. Например, "удобно пользователю" - это может быть что угодно, часто противоречивое. Например, что для вас важнее - скорость принятия решения или защита от ошибок оператора? И это только один из десятков уточнений.
Остальные ответы
Василий Дмитров Мыслитель (7704) 2 года назад
Си, C++, ассемблер. Всякие питоны, явы и прочие тормоза даже не рассматривай
АндреевичПрофи (986) 2 года назад
Для такой простой программы человеку изучать катострофически сложные языки типа асемблер си с++ не стоит.
Василий Дмитров Мыслитель (7704) Андреевич, Человек работает с оборудованием. А вдруг это паровой котел на электростанции? Тут важна скорость обработки, и надо заморочиться
Василий ДмитровМыслитель (7704) 2 года назад
* с генератора, присоединенного к турбине
Андреевич Профи (986) 2 года назад
Я писал на delphi такие простые программы можно.
Игорь Искусственный Интеллект (106889) 2 года назад
си - меньше всего мороки и практически полный доступ к аппаратуре (порты, ячейки)
James RaynorУченик (122) 2 года назад
Благодарю)
Федор Новиков Искусственный Интеллект (362376) 2 года назад
сильно зависит от требований к аппратуре и ПО. Если ПО должно неспешно собирать данные на мощном ПК под Виндовс, то C# или Java вполне подойдут. Если ПО должно в жестком реальном времени работать на микропроцессоре - Си или С++, возможно, с применением ассемблера.
James RaynorУченик (122) 2 года назад
Спасибо за ответ. Нужен сбор данных в реальном времени.
Федор Новиков Искусственный Интеллект (362376) James Raynor, нужно определиться, с какой точностью над отрабатывать время. Если задержка на 10 мс недопустима - использовать Виндовс нельзя, там даже драйвер может тормознуться.
Олег Молчанов Гуру (2682) 2 года назад
если программа простоя должна быть то вполне хватит питона
си и тд нужны для более сложных решений
Aleks Nots Просветленный (25200) 2 года назад
Скорее всего есть какие-нибудь нормы, правила, лицензирование, инструкции к приборам. Из этого и надо исходить.

Если бы не лаборатория, где всё регламентировано, а "для дома, для семьи" в виде хобби, то тут конечно широкий выбор вариантов.
А в лаборатории надо придерживаться регламента, чтобы результаты анализов были соответствующие требованиям.
Юрий Семыкин Искусственный Интеллект (207989) 2 года назад
На нескольких языках надо писать, однако. "С" - для драйвера и работы с железом на низком уровне. Повыше (на уровне пользователя) - на чём угодно из современных языков. Желательно выбрать готовую базу данных и с ней интегрироваться.
Похожие вопросы