- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
Простой интерфейс для Электропечи на Python
Модератор: Глоб.модераторы
-
- здесь недавно
- Сообщения: 63
- Зарегистрирован: 19 апр 2023, 19:21
- Имя: Даниил
- Страна: Россия
- город/регион: Москва
- Благодарил (а): 2 раза
- Поблагодарили: 1 раз
Простой интерфейс для Электропечи на Python
Приветствую всех! Обучаюсь по специальности "АСУ ТП" и вот необходимо было написать простой интерфейс для электропечи сопротивления камерного вида. (Как бы попробовать). Я сделал это на Python с использованием библиотеки modbus, Pyqt5 и др + QT designer. Только вот при запуске он виснет безбожно из-за ошибок я так понимаю, потому что он не подключен. (или в другом ошибка?) Может кто-то глянуть и сказать, вообще что-то путное получилось или неправильно и такое работать не будет? :) (Это просто вообще первый опыт такого задания) Заранее, спасибо большое за помощь. Прикрепляю файл py и ui соотвественно.
https://drive.google.com/file/d/1k59Gg0 ... sp=sharing
https://drive.google.com/file/d/112CO9w ... sp=sharing
https://drive.google.com/file/d/1k59Gg0 ... sp=sharing
https://drive.google.com/file/d/112CO9w ... sp=sharing
-
- эксперт
- Сообщения: 1035
- Зарегистрирован: 31 мар 2018, 12:05
- Имя: Вячеслав
- Благодарил (а): 100 раз
- Поблагодарили: 141 раз
Простой интерфейс для Электропечи на Python
Что за ВУЗ? Из того что вижу по другим ВУЗам, максимум, даже для диплома - нарисуйте что нибудь в Trace Mode. Вам точно поставили задачу создать интерфейс собственными силами? В курсе же наверное, что для этого существуют специализированные IDE.
-
- здесь недавно
- Сообщения: 63
- Зарегистрирован: 19 апр 2023, 19:21
- Имя: Даниил
- Страна: Россия
- город/регион: Москва
- Благодарил (а): 2 раза
- Поблагодарили: 1 раз
Простой интерфейс для Электропечи на Python
Да, я знаю, что есть TraceMode, MasterScada, Szarp SCADA и тд. Просто с python был знаком, вот и на нем писал. А вообще, Python для этого вообще не подходит? :( Или просто рекомендуется в специализированных писать? Вроде же все работает, все выводится и логируется. Насколько сложно будет перенести все это в TraceMode ?
-
- почётный участник форума
- Сообщения: 3971
- Зарегистрирован: 20 янв 2010, 22:23
- Имя: Никита
- Страна: РФ
- город/регион: Мурманск
- Благодарил (а): 21 раз
- Поблагодарили: 229 раз
Простой интерфейс для Электропечи на Python
Если подозрения на отсутствие Modbus-устройства, то берите какой-нибудь эмулятор Modbus-устройства (их есть много, в т.ч. и бесплатные), запускайте его, гасите весь QT заглушками на вывод сообщений в консоль и константами и пробуйте добиться обмена с эмулятором локально на 127.0.0.1. Как только наладите данные, можно будет прикручивать остальное.
P.S. нормальная асушная программа виснуть не должна в принципе, что бы не произошло. Все ошибки и исключения должны корректно обрабатываться.
P.P.S. Подобные работы в годы моей учебы, независимо от среды разработки, делались вдвоем, двумя дипломниками. Один отвечал за драйверы и обмен с окружающим миром, другой - за картинки.
Опыт - это когда на смену вопросам: "Что? Где? Когда? Как? Почему?" приходит единственный вопрос: "Нахрена? "
-
- здесь недавно
- Сообщения: 63
- Зарегистрирован: 19 апр 2023, 19:21
- Имя: Даниил
- Страна: Россия
- город/регион: Москва
- Благодарил (а): 2 раза
- Поблагодарили: 1 раз
Простой интерфейс для Электропечи на Python
А тут за все я отвечаю :). Это не для диплома в универе, просто хочу попробовать вообще, что это такое. Буду смотреть, пытаться. Спасибо за совет!Никита писал(а): ↑12 май 2024, 15:07Если подозрения на отсутствие Modbus-устройства, то берите какой-нибудь эмулятор Modbus-устройства (их есть много, в т.ч. и бесплатные), запускайте его, гасите весь QT заглушками на вывод сообщений в консоль и константами и пробуйте добиться обмена с эмулятором локально на 127.0.0.1. Как только наладите данные, можно будет прикручивать остальное.
P.S. нормальная асушная программа виснуть не должна в принципе, что бы не произошло. Все ошибки и исключения должны корректно обрабатываться.
P.P.S. Подобные работы в годы моей учебы, независимо от среды разработки, делались вдвоем, двумя дипломниками. Один отвечал за драйверы и обмен с окружающим миром, другой - за картинки.
-
- эксперт
- Сообщения: 1035
- Зарегистрирован: 31 мар 2018, 12:05
- Имя: Вячеслав
- Благодарил (а): 100 раз
- Поблагодарили: 141 раз
Простой интерфейс для Электропечи на Python
Перенести можно будет только саму идею)
Видимо все ребята, кто более менее освоил высокоуровневое программирование решают написать HMI)) Действительно, часто это встречаю. И это здорово. Любой опыт ложится в жизненный багаж. Но закончится это скорее всего ничем. Если вы продолжите карьеру АСУ разработчика, то очень быстро поймете, что в готовой IDE проекты писать гораздо проще. Задачи всегда ставятся разные, и искать пути их решения на питоне априори сложнее, чем пользоваться готовыми инструментами. Хотя бывают случаи, что проще прикрутить свой какой то код в качестве скрипта продуктивнее, чем городить костыли.
Так что дерзайте) Но помните, что WinCC лучше, чем MasterScada, Trace Mode и Alpha Platforma вместе взятые))) Не знаю чем вдохновляются российские разработчики IDE SCADA, но по итогу - вот так.
И да, это мое, сугубо личное мнение ;)
-
- эксперт
- Сообщения: 2471
- Зарегистрирован: 20 дек 2018, 04:45
- Имя: Сергей
- Страна: РБ/РФ
- город/регион: РФ Сергиев Посад
- Благодарил (а): 2121 раз
- Поблагодарили: 208 раз
Простой интерфейс для Электропечи на Python
Вынесите код опроса внешних устройств в отдельный thread. Тогда и все сразу виснуть не будет. Ну и используйте semaphore для обмена данными (последнее - не обязательно, если у вас нет переменных Read/Write).
Ну и отладьте сначала код, потом за GUI беритесь.
ЗЫ. Выше все правильно написали, что бы не думать о семафорах и потоках - лучше использовать среду, где другие люди уже продумали данные вопросы.
ЗЫЫ. Ах, да, обработку исключений - вы тоже не использовали, судя по всему. Modbus по таймауту вызывает исключение.
В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик.
-
- здесь недавно
- Сообщения: 63
- Зарегистрирован: 19 апр 2023, 19:21
- Имя: Даниил
- Страна: Россия
- город/регион: Москва
- Благодарил (а): 2 раза
- Поблагодарили: 1 раз
Простой интерфейс для Электропечи на Python
Спасибо! Сейчас буду смотреть и исправлять
Отправлено спустя 1 минуту :
Возможно так и будет, ну зато, действительно, полезный опыт получил :)stesl писал(а): ↑12 май 2024, 18:20Перенести можно будет только саму идею)
Видимо все ребята, кто более менее освоил высокоуровневое программирование решают написать HMI)) Действительно, часто это встречаю. И это здорово. Любой опыт ложится в жизненный багаж. Но закончится это скорее всего ничем. Если вы продолжите карьеру АСУ разработчика, то очень быстро поймете, что в готовой IDE проекты писать гораздо проще. Задачи всегда ставятся разные, и искать пути их решения на питоне априори сложнее, чем пользоваться готовыми инструментами. Хотя бывают случаи, что проще прикрутить свой какой то код в качестве скрипта продуктивнее, чем городить костыли.
Так что дерзайте) Но помните, что WinCC лучше, чем MasterScada, Trace Mode и Alpha Platforma вместе взятые))) Не знаю чем вдохновляются российские разработчики IDE SCADA, но по итогу - вот так.
И да, это мое, сугубо личное мнение ;)
-
- администратор
- Сообщения: 18758
- Зарегистрирован: 17 июн 2008, 16:01
- Имя: Евгений свет Брониславович
- Страна: Россия
- город/регион: Санкт-Петербург
- Благодарил (а): 973 раза
- Поблагодарили: 1854 раза
Простой интерфейс для Электропечи на Python
Теперь познакомьтесь с MasterScada например, и только тогда Вы поймёте, почему такие вещи никто не делает на Python. Это был полезный опыт.
Почему же? Всё для всего подходит. Можно и на "C" делать. Но бессмысленно. Потому что создатель верхнего уровня должен больше думать об объекте, который он мониторит, а не о том как картинки рисовать. Поэтому картинки рисуют и данные гоняют готовые средства. И это только одна из множества причин.
По вопросам работы Форума можно обратиться по этим контактам.
-
- не первый раз у нас
- Сообщения: 396
- Зарегистрирован: 28 сен 2022, 15:26
- Имя: Андрей
- Благодарил (а): 12 раз
- Поблагодарили: 54 раза
Простой интерфейс для Электропечи на Python
Чем Вам картинки не угодили? Про картинки (но не про то - как рисовать) тоже должен думать. А вот про вынесение драйверов обмена в отдельный(ые) поток(и) и семафоры - точно нет.
-
- администратор
- Сообщения: 18758
- Зарегистрирован: 17 июн 2008, 16:01
- Имя: Евгений свет Брониславович
- Страна: Россия
- город/регион: Санкт-Петербург
- Благодарил (а): 973 раза
- Поблагодарили: 1854 раза
Простой интерфейс для Электропечи на Python
Где я написал что с ними что-то не так?
По вопросам работы Форума можно обратиться по этим контактам.
-
- здесь недавно
- Сообщения: 63
- Зарегистрирован: 19 апр 2023, 19:21
- Имя: Даниил
- Страна: Россия
- город/регион: Москва
- Благодарил (а): 2 раза
- Поблагодарили: 1 раз
Простой интерфейс для Электропечи на Python
Немного переиграл и убрал большинство функций, оставил принципе только графики (думаю в них проблема), добавил thread и.... Все равно виснет, при этом попробовал вывести, что происходит с классом Thread, а он через каждые 18 секунд отправляется в перезагрузку. В чем проблема? Я неправильно написал логику или чего-то не учел. Как это исправить? Буду благодарен за помощь https://drive.google.com/file/d/17CA2jN ... sp=sharingkeysansa писал(а): ↑12 май 2024, 20:25Вынесите код опроса внешних устройств в отдельный thread. Тогда и все сразу виснуть не будет. Ну и используйте semaphore для обмена данными (последнее - не обязательно, если у вас нет переменных Read/Write).
Ну и отладьте сначала код, потом за GUI беритесь.
ЗЫ. Выше все правильно написали, что бы не думать о семафорах и потоках - лучше использовать среду, где другие люди уже продумали данные вопросы.
ЗЫЫ. Ах, да, обработку исключений - вы тоже не использовали, судя по всему. Modbus по таймауту вызывает исключение.
-
- эксперт
- Сообщения: 2471
- Зарегистрирован: 20 дек 2018, 04:45
- Имя: Сергей
- Страна: РБ/РФ
- город/регион: РФ Сергиев Посад
- Благодарил (а): 2121 раз
- Поблагодарили: 208 раз
Простой интерфейс для Электропечи на Python
У вас так и остался один поток в приложении: Поток опроса должен вызываться из main, параллельно графике.
Плюс, у вас только в потоке опроса try except стоят. Остальные функции исключения не обрабатывают. Так что скорее всего, перезагрузка - это не из-за потока опроса. Иначе было бы сообщение об исключительной ситуации.
В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик.
-
- эксперт
- Сообщения: 2471
- Зарегистрирован: 20 дек 2018, 04:45
- Имя: Сергей
- Страна: РБ/РФ
- город/регион: РФ Сергиев Посад
- Благодарил (а): 2121 раз
- Поблагодарили: 208 раз
Простой интерфейс для Электропечи на Python
Рекомендую вам посмотреть в сторону OpenScada. Она бесплатная, но разработана на Украине. Поэтому есть небольшие сложности со скачиванием и поддержкой от производителя. Однако, в телеграмме есть русское сообщество.
В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик.
-
- эксперт
- Сообщения: 1737
- Зарегистрирован: 06 янв 2016, 19:45
- Имя: Петров В.Л.
- Страна: Россия
- город/регион: Красноярск
- Благодарил (а): 78 раз
- Поблагодарили: 235 раз
Простой интерфейс для Электропечи на Python
А ссылочку не дадите. OpenScada - была моей первой скадой. Она мне сильно понравилась. Концептуально - MasterSacada 4 по сравнению с ней - детский сад на лямках.
-
- эксперт
- Сообщения: 2471
- Зарегистрирован: 20 дек 2018, 04:45
- Имя: Сергей
- Страна: РБ/РФ
- город/регион: РФ Сергиев Посад
- Благодарил (а): 2121 раз
- Поблагодарили: 208 раз
Простой интерфейс для Электропечи на Python
В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик.