1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

Простой интерфейс для Электропечи на Python

SCADA, серверы, АРМ верхнего уровня, диспетчерские

Модератор: Глоб.модераторы

Ответить

Автор темы
Ding222
здесь недавно
здесь недавно
Сообщения: 63
Зарегистрирован: 19 апр 2023, 19:21
Имя: Даниил
Страна: Россия
город/регион: Москва
Благодарил (а): 2 раза
Поблагодарили: 1 раз

Простой интерфейс для Электропечи на Python

Сообщение Ding222 »

Приветствую всех! Обучаюсь по специальности "АСУ ТП" и вот необходимо было написать простой интерфейс для электропечи сопротивления камерного вида. (Как бы попробовать). Я сделал это на 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

stesl
эксперт
эксперт
Сообщения: 1035
Зарегистрирован: 31 мар 2018, 12:05
Имя: Вячеслав
Благодарил (а): 100 раз
Поблагодарили: 141 раз

Простой интерфейс для Электропечи на Python

Сообщение stesl »

Что за ВУЗ? Из того что вижу по другим ВУЗам, максимум, даже для диплома - нарисуйте что нибудь в Trace Mode. Вам точно поставили задачу создать интерфейс собственными силами? В курсе же наверное, что для этого существуют специализированные IDE.

Автор темы
Ding222
здесь недавно
здесь недавно
Сообщения: 63
Зарегистрирован: 19 апр 2023, 19:21
Имя: Даниил
Страна: Россия
город/регион: Москва
Благодарил (а): 2 раза
Поблагодарили: 1 раз

Простой интерфейс для Электропечи на Python

Сообщение Ding222 »

stesl писал(а): 12 май 2024, 06:34 Что за ВУЗ? Из того что вижу по другим ВУЗам, максимум, даже для диплома - нарисуйте что нибудь в Trace Mode. Вам точно поставили задачу создать интерфейс собственными силами? В курсе же наверное, что для этого существуют специализированные IDE.
Да, я знаю, что есть TraceMode, MasterScada, Szarp SCADA и тд. Просто с python был знаком, вот и на нем писал. А вообще, Python для этого вообще не подходит? :( Или просто рекомендуется в специализированных писать? Вроде же все работает, все выводится и логируется. Насколько сложно будет перенести все это в TraceMode ?
Аватара пользователя

Никита
почётный участник форума
почётный участник форума
Сообщения: 3971
Зарегистрирован: 20 янв 2010, 22:23
Имя: Никита
Страна: РФ
город/регион: Мурманск
Благодарил (а): 21 раз
Поблагодарили: 229 раз

Простой интерфейс для Электропечи на Python

Сообщение Никита »

Ding222 писал(а): 11 май 2024, 22:14 Только вот при запуске он виснет безбожно из-за ошибок я так понимаю, потому что он не подключен. (или в другом ошибка?)
Если подозрения на отсутствие Modbus-устройства, то берите какой-нибудь эмулятор Modbus-устройства (их есть много, в т.ч. и бесплатные), запускайте его, гасите весь QT заглушками на вывод сообщений в консоль и константами и пробуйте добиться обмена с эмулятором локально на 127.0.0.1. Как только наладите данные, можно будет прикручивать остальное.
P.S. нормальная асушная программа виснуть не должна в принципе, что бы не произошло. Все ошибки и исключения должны корректно обрабатываться.
P.P.S. Подобные работы в годы моей учебы, независимо от среды разработки, делались вдвоем, двумя дипломниками. Один отвечал за драйверы и обмен с окружающим миром, другой - за картинки.
Опыт - это когда на смену вопросам: "Что? Где? Когда? Как? Почему?" приходит единственный вопрос: "Нахрена? "

Автор темы
Ding222
здесь недавно
здесь недавно
Сообщения: 63
Зарегистрирован: 19 апр 2023, 19:21
Имя: Даниил
Страна: Россия
город/регион: Москва
Благодарил (а): 2 раза
Поблагодарили: 1 раз

Простой интерфейс для Электропечи на Python

Сообщение Ding222 »

Никита писал(а): 12 май 2024, 15:07
Ding222 писал(а): 11 май 2024, 22:14 Только вот при запуске он виснет безбожно из-за ошибок я так понимаю, потому что он не подключен. (или в другом ошибка?)
Если подозрения на отсутствие Modbus-устройства, то берите какой-нибудь эмулятор Modbus-устройства (их есть много, в т.ч. и бесплатные), запускайте его, гасите весь QT заглушками на вывод сообщений в консоль и константами и пробуйте добиться обмена с эмулятором локально на 127.0.0.1. Как только наладите данные, можно будет прикручивать остальное.
P.S. нормальная асушная программа виснуть не должна в принципе, что бы не произошло. Все ошибки и исключения должны корректно обрабатываться.
P.P.S. Подобные работы в годы моей учебы, независимо от среды разработки, делались вдвоем, двумя дипломниками. Один отвечал за драйверы и обмен с окружающим миром, другой - за картинки.
А тут за все я отвечаю :). Это не для диплома в универе, просто хочу попробовать вообще, что это такое. Буду смотреть, пытаться. Спасибо за совет!

stesl
эксперт
эксперт
Сообщения: 1035
Зарегистрирован: 31 мар 2018, 12:05
Имя: Вячеслав
Благодарил (а): 100 раз
Поблагодарили: 141 раз

Простой интерфейс для Электропечи на Python

Сообщение stesl »

Ding222 писал(а): 12 май 2024, 12:22 Насколько сложно будет перенести все это в TraceMode
Перенести можно будет только саму идею)
Ding222 писал(а): 12 май 2024, 17:22 просто хочу попробовать вообще, что это такое
Видимо все ребята, кто более менее освоил высокоуровневое программирование решают написать HMI)) Действительно, часто это встречаю. И это здорово. Любой опыт ложится в жизненный багаж. Но закончится это скорее всего ничем. Если вы продолжите карьеру АСУ разработчика, то очень быстро поймете, что в готовой IDE проекты писать гораздо проще. Задачи всегда ставятся разные, и искать пути их решения на питоне априори сложнее, чем пользоваться готовыми инструментами. Хотя бывают случаи, что проще прикрутить свой какой то код в качестве скрипта продуктивнее, чем городить костыли.

Так что дерзайте) Но помните, что WinCC лучше, чем MasterScada, Trace Mode и Alpha Platforma вместе взятые))) Не знаю чем вдохновляются российские разработчики IDE SCADA, но по итогу - вот так.
И да, это мое, сугубо личное мнение ;)
Аватара пользователя

keysansa
эксперт
эксперт
Сообщения: 2469
Зарегистрирован: 20 дек 2018, 04:45
Имя: Сергей
Страна: РБ/РФ
город/регион: РФ Сергиев Посад
Благодарил (а): 2119 раз
Поблагодарили: 207 раз

Простой интерфейс для Электропечи на Python

Сообщение keysansa »

Ding222 писал(а): 11 май 2024, 22:14 Только вот при запуске он виснет безбожно из-за ошибок я так понимаю, потому что он не подключен.
Вынесите код опроса внешних устройств в отдельный thread. Тогда и все сразу виснуть не будет. Ну и используйте semaphore для обмена данными (последнее - не обязательно, если у вас нет переменных Read/Write).
Ну и отладьте сначала код, потом за GUI беритесь.

ЗЫ. Выше все правильно написали, что бы не думать о семафорах и потоках - лучше использовать среду, где другие люди уже продумали данные вопросы.
ЗЫЫ. Ах, да, обработку исключений - вы тоже не использовали, судя по всему. Modbus по таймауту вызывает исключение.
В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик.

Автор темы
Ding222
здесь недавно
здесь недавно
Сообщения: 63
Зарегистрирован: 19 апр 2023, 19:21
Имя: Даниил
Страна: Россия
город/регион: Москва
Благодарил (а): 2 раза
Поблагодарили: 1 раз

Простой интерфейс для Электропечи на Python

Сообщение Ding222 »

stesl писал(а): 12 май 2024, 18:20 Вынесите код опроса внешних устройств в отдельный thread. Тогда и все сразу виснуть не будет. Ну и используйте semaphore для обмена данными (последнее - не обязательно, если у вас нет переменных Read/Write).
Спасибо! Сейчас буду смотреть и исправлять

Отправлено спустя 1 минуту :
stesl писал(а): 12 май 2024, 18:20
Ding222 писал(а): 12 май 2024, 12:22 Насколько сложно будет перенести все это в TraceMode
Перенести можно будет только саму идею)
Ding222 писал(а): 12 май 2024, 17:22 просто хочу попробовать вообще, что это такое

Видимо все ребята, кто более менее освоил высокоуровневое программирование решают написать HMI)) Действительно, часто это встречаю. И это здорово. Любой опыт ложится в жизненный багаж. Но закончится это скорее всего ничем. Если вы продолжите карьеру АСУ разработчика, то очень быстро поймете, что в готовой IDE проекты писать гораздо проще. Задачи всегда ставятся разные, и искать пути их решения на питоне априори сложнее, чем пользоваться готовыми инструментами. Хотя бывают случаи, что проще прикрутить свой какой то код в качестве скрипта продуктивнее, чем городить костыли.

Так что дерзайте) Но помните, что WinCC лучше, чем MasterScada, Trace Mode и Alpha Platforma вместе взятые))) Не знаю чем вдохновляются российские разработчики IDE SCADA, но по итогу - вот так.
И да, это мое, сугубо личное мнение ;)
Возможно так и будет, ну зато, действительно, полезный опыт получил :)
Аватара пользователя

Jackson
администратор
администратор
Сообщения: 18749
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 973 раза
Поблагодарили: 1852 раза

Простой интерфейс для Электропечи на Python

Сообщение Jackson »

Ding222 писал(а): 12 май 2024, 12:22 Да, я знаю, что есть TraceMode, MasterScada, Szarp SCADA и тд. Просто с python был знаком, вот и на нем писал.
Теперь познакомьтесь с MasterScada например, и только тогда Вы поймёте, почему такие вещи никто не делает на Python. Это был полезный опыт. :good:
Ding222 писал(а): 12 май 2024, 12:22А вообще, Python для этого вообще не подходит? :(
Почему же? Всё для всего подходит. Можно и на "C" делать. Но бессмысленно. Потому что создатель верхнего уровня должен больше думать об объекте, который он мониторит, а не о том как картинки рисовать. Поэтому картинки рисуют и данные гоняют готовые средства. И это только одна из множества причин.
По вопросам работы Форума можно обратиться по этим контактам.

I_m
не первый раз у нас
не первый раз у нас
Сообщения: 396
Зарегистрирован: 28 сен 2022, 15:26
Имя: Андрей
Благодарил (а): 12 раз
Поблагодарили: 54 раза

Простой интерфейс для Электропечи на Python

Сообщение I_m »

Jackson писал(а): 13 май 2024, 06:46 Потому что создатель верхнего уровня должен больше думать об объекте, который он мониторит, а не о том как картинки рисовать.
Чем Вам картинки не угодили? Про картинки (но не про то - как рисовать) тоже должен думать. А вот про вынесение драйверов обмена в отдельный(ые) поток(и) и семафоры - точно нет.
Аватара пользователя

Jackson
администратор
администратор
Сообщения: 18749
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 973 раза
Поблагодарили: 1852 раза

Простой интерфейс для Электропечи на Python

Сообщение Jackson »

I_m писал(а): 13 май 2024, 08:02 Чем Вам картинки не угодили?
Где я написал что с ними что-то не так?
По вопросам работы Форума можно обратиться по этим контактам.

Автор темы
Ding222
здесь недавно
здесь недавно
Сообщения: 63
Зарегистрирован: 19 апр 2023, 19:21
Имя: Даниил
Страна: Россия
город/регион: Москва
Благодарил (а): 2 раза
Поблагодарили: 1 раз

Простой интерфейс для Электропечи на Python

Сообщение Ding222 »

keysansa писал(а): 12 май 2024, 20:25
Ding222 писал(а): 11 май 2024, 22:14 Только вот при запуске он виснет безбожно из-за ошибок я так понимаю, потому что он не подключен.
Вынесите код опроса внешних устройств в отдельный thread. Тогда и все сразу виснуть не будет. Ну и используйте semaphore для обмена данными (последнее - не обязательно, если у вас нет переменных Read/Write).
Ну и отладьте сначала код, потом за GUI беритесь.

ЗЫ. Выше все правильно написали, что бы не думать о семафорах и потоках - лучше использовать среду, где другие люди уже продумали данные вопросы.
ЗЫЫ. Ах, да, обработку исключений - вы тоже не использовали, судя по всему. Modbus по таймауту вызывает исключение.
Немного переиграл и убрал большинство функций, оставил принципе только графики (думаю в них проблема), добавил thread и.... Все равно виснет, при этом попробовал вывести, что происходит с классом Thread, а он через каждые 18 секунд отправляется в перезагрузку. В чем проблема? Я неправильно написал логику или чего-то не учел. Как это исправить? Буду благодарен за помощь https://drive.google.com/file/d/17CA2jN ... sp=sharing
Аватара пользователя

keysansa
эксперт
эксперт
Сообщения: 2469
Зарегистрирован: 20 дек 2018, 04:45
Имя: Сергей
Страна: РБ/РФ
город/регион: РФ Сергиев Посад
Благодарил (а): 2119 раз
Поблагодарили: 207 раз

Простой интерфейс для Электропечи на Python

Сообщение keysansa »

Ding222 писал(а): 17 май 2024, 21:38 а он через каждые 18 секунд отправляется в перезагрузку.
У вас так и остался один поток в приложении:
[+]
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec_())
Поток опроса должен вызываться из main, параллельно графике.

Плюс, у вас только в потоке опроса try except стоят. Остальные функции исключения не обрабатывают. Так что скорее всего, перезагрузка - это не из-за потока опроса. Иначе было бы сообщение об исключительной ситуации.
В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик.
Аватара пользователя

keysansa
эксперт
эксперт
Сообщения: 2469
Зарегистрирован: 20 дек 2018, 04:45
Имя: Сергей
Страна: РБ/РФ
город/регион: РФ Сергиев Посад
Благодарил (а): 2119 раз
Поблагодарили: 207 раз

Простой интерфейс для Электропечи на Python

Сообщение keysansa »

Ding222 писал(а): 17 май 2024, 21:38 Я неправильно написал логику или чего-то не учел. Как это исправить?
Рекомендую вам посмотреть в сторону OpenScada. Она бесплатная, но разработана на Украине. Поэтому есть небольшие сложности со скачиванием и поддержкой от производителя. Однако, в телеграмме есть русское сообщество.
В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик.
Аватара пользователя

petr2off
эксперт
эксперт
Сообщения: 1735
Зарегистрирован: 06 янв 2016, 19:45
Имя: Петров В.Л.
Страна: Россия
город/регион: Красноярск
Благодарил (а): 78 раз
Поблагодарили: 235 раз

Простой интерфейс для Электропечи на Python

Сообщение petr2off »

keysansa писал(а): 19 май 2024, 00:04 Однако, в телеграмме есть русское сообщество.
А ссылочку не дадите. OpenScada - была моей первой скадой. Она мне сильно понравилась. Концептуально - MasterSacada 4 по сравнению с ней - детский сад на лямках.
Аватара пользователя

keysansa
эксперт
эксперт
Сообщения: 2469
Зарегистрирован: 20 дек 2018, 04:45
Имя: Сергей
Страна: РБ/РФ
город/регион: РФ Сергиев Посад
Благодарил (а): 2119 раз
Поблагодарили: 207 раз

Простой интерфейс для Электропечи на Python

Сообщение keysansa »

petr2off писал(а): 24 май 2024, 08:47 А ссылочку не дадите.
На всякий случай под спойлером
[+]
https://t.me/openscada
В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик.
Ответить

Вернуться в «Верхний уровень автоматизации (отображение)»