Просмотр полной версии : Python - дополнительные функции облака и удалённого управления.
Привет всем.
Подсмотрел на небольшом предприятии взаимодействие ПР205 и Cloud.
Не мог понять, что за версия с новым функционалом - получение из архива несколько вариантов готовых отчётов, и корректировка со смарта рецептов.
Пояснили следующее:
Писали им под заказ на Питоне. Исходники не отдают.
Под "честное слово" попросил показать настройки. Поэтому без подробностей.
Писал человек талантливый, компактно и великолепно всё продумано!!!
1. Тариф БАЗОВЫЙ (https://web.owencloud.ru/company/index/215242?tab=services) 0 рубДоступно по тарифу:
0 SMS
0 Мнемосхемы, шт.
2 Конфигурации, шт.
0 Пользовательские графики, шт.
0 Пользовательские отчеты, шт.
0 Пользовательские программы, шт.
2. Нет заморочек с мнемосхемами и ограничениями в бесплатной версии.
Чтоб долго не перечислять - у них доработанное от ОВЕН "своё" облако.
Человеческий интерфейс и внятный алгоритм взаимодействия через... Excel.
Главное - никакого винегрета и костылей. Штатное облако от ПР205.
Часть обрабатывается Питоном, гонится в Excel, и в нём же МЕНЮ настроек.
"Побегав" по алгоритму и разобравшись в этой связке решил себе такое.
С Питоном дело не имел, пнул GPT чат, и... - ничего сложного, типа Бейсик. :)
Без запинки мне сформировал нужный мне файл отчёта из 20 переменных!!!
Открылось в Excel, и, после пинков некоторых корректировок, легко получился нужный файл, с автопополнением по ячейкам.
Главное что нет этих дурацких "шапок" типа Старт(P16392), которые прикручены к рядам переменных в отчётах.
Убрать просили ОВЕН годами - при мне полтора года прошло.
Начал с RS-485 т.к. через инет, мне кажется, будет сложнее.
ПР205. Для начала хочу читать Slave регистр (16384) завёл на него секунды:
Использую minimalmodbus (ещё не знаю что оптимальнее)
Настройки порта: RS-485 1 9600 8N1 Slave ID16
Установил: Puthon 3.12 x64, Visual Studio 2022, Win10 x64, USB-485 адаптер AC4-M
Онлайн отладка показывает запись секунд в сетевую переменную (16384), больше на поле и в настройках ничего нет.
# -- coding: cp1251 --
import minimalmodbus
# Установка параметров порта COM20 для ModBus
instrument = minimalmodbus.Instrument('COM20', 16)
instrument.serial.baudrate = 9600 # Установка скорости передачи данных
# Чтение регистра 16384 (секунды)
value = instrument.read_register(16384)
print(value)
Порт точно есть, и работает. Светодиод при других тестах AC4-M моргает.
Пишет ошибку откуда-то из глубин minimalmodbus.py:
"No communication with the instrument (no answer)"
Что ещё надо указать? Или использовать какую другую библиотеку для работы с RS-485?
Поигрался с задержкой:
instrument.serial.timeout = 0.10 # seconds
не помогло...
Николай Суриков
22.06.2024, 08:08
Вы хотите переписать owencloud, на которое было потрачено тысячи человеко-часов, но у вас не получается опросить один регистр?
люди всегда пытаются сделать что-то лучше, выше, быстрее.
Не ип...те себе мозк, поставьте Scada систему себе в облако(на предприятии) и сделайте тоже самое без облака Овен.
Если хочется писать что-то самому, рекомендую RapidScada, там можно многое делать самому, но по крайней мере вы не заморачиваетесь нижним уровнем (то есть его не придется писать с начала) очень многое есть в открытом ядре.
с C# и JS дело имели ?, тем более тогда рекомендую. Когда-то и я с языками программирования не имел дело, ну разве что Basic на ZX Spectrum...
Вы хотите переписать owencloud, на которое было потрачено тысячи человеко-часов, но у вас не получается опросить один регистр?
Вы хоть поняли про что я пишу?
Ещё раз для Вас: Python - дополнительные функции облака и удалённого управления.
А то что: "было потрачено тысячи человеко-часов" так и было, и даже больше.
Каков результат? Наколбасили, что сам разобраться не могут.
А результат таков:
- Убрать эти дурацкие "шапоки" типа Старт(P16392), которые прикручены к рядам переменных в отчётах.
Убрать просили ОВЕН годами - при мне полтора года прошло.
- Поддержка ПР205 отсутствует, хоть и божились что исправили.
не работает - Автоопределяемые приборы ОВЕН
не работает - Программируемый контроллер
приходится через ж... - MX210 через Modbus
А про: "у вас не получается опросить один регистр"
Верно. Я потратил 1 человеко-час, начав с "0".
- GPT в этом направлении создал файл отчёта.
- Python - я его раньше в глаза не видел.
Так что не надо язвить. Помогите, если опыта хватает.
Времена изменились, да вот только ОВЕНЫ ещё в XX веке сидят...
люди всегда пытаются сделать что-то лучше, выше, быстрее.
Не ип...те себе мозк, поставьте Scada систему себе в облако(на предприятии) и сделайте тоже самое без облака Овен.
Если хочется писать что-то самому, рекомендую RapidScada, там можно многое делать самому, но по крайней мере вы не заморачиваетесь нижним уровнем (то есть его не придется писать с начала) очень многое есть в открытом ядре.
с C# и JS дело имели ?, тем более тогда рекомендую. Когда-то и я с языками программирования не имел дело, ну разве что Basic на ZX Spectrum...
"Не ип...те себе мозк, поставьте Scada систему" Очень смешно. :)
Я думаю, прочитав сообщение тов. Сурикову, вопросов у вас не будет.
Вообще-то:
Нужен только файл отчёта, дополняемый из архива при разрывах связи.
Тот спец тоже использует это без всяких проблем.
Заодно и формирование великолепных отчётов!
Появилась связь - передал накопленную порцию.
Сейчас ОВЕН просто колбасит по таймеру, и функционал дополнить не хочет.
GPT мне написал макрос под Excel. Рабочий.
Я так и не понял, почему ОВЕН-ы так боятся GPT использовать???????????????
Воз и ныне там. 03-2024 (https://owen.ru/forum/showthread.php?t=39243&p=432355&viewfull=1#post432355)
ПавелП я к чему вообще. Вам сейчас нужны отчеты но вы долбетесь с modbus. Вместо того, чтобы разбираться с отчетами, настроив готовую scada с готовым modbus.
RapidScada с открытым исходным кодом, есть куча примеров в коде для драйверов, модулей, плагинов web сервера, даже какой-то пример отчета есть насколько помню. То есть разбираешься с нужным, не начиная с нуля.
Николай Суриков
22.06.2024, 13:34
Пять лет назад все везде пихали блокчейн, теперь GPT. Успокойтесь.
https://habr.com/ru/articles/823584/
Николай Суриков gpt помогает написать код плохо понимающему. Пробовал один раз, мне доступ давали, а то в России с этим тяжко сейчас.
И что я могу сказать по данному поводу. Код мне выдало более лучший, чем предлагают всякие недопрограммисты на форумах.
И есть подозрение, что код от gpt будет лучше, чем у программистов Овен :)
Пять лет назад все везде пихали блокчейн, теперь GPT. Успокойтесь.
https://habr.com/ru/articles/823584/
Давайте я ещё раз вам положу на стол свою реализацию:
(это коротко) Не надо никаких революций, я не про это.
(посложнее) ОВЕН не желает каких либо движений в своей области во-обще, от слова - немогу.
Вашу ссылку прочитал. Это как раз тот случай желания революций.
"Я много раз слышал руководителей, говорящих о необходимости немедленного развёртывания генеративного ИИ, чтобы подготовить организацию к работе в будущем. Несмотря на то, что все их речи звучали абсолютно одинаково, я уверен, что они долго репетировали, ведь им удавалось одновременно размахивать руками, говорить и не лить при этом слюну изо рта!"
Это маркетинг.
Мой же пример очень прост.
Решить несколько маленьких пробок "от ОВЕН".
Который корпорация, бьющая о доблести в фанфары ютубовскими роликами, не в состоянии не то что решить, даже обсудить.
А решения, которые возможно помогут, с различными костылями от "развитых" официозов, как раз и есть тухлый винегрет.
Выпуск релизов OL напоминает косметику по затиранию морщин у старой бабки.
И пока такое маркетинговое управление правит - так и будет.
Все сыты, показатели маркетинговые. Что ещё надо...
PYTHON неожиданно смог решать задачи мгновенно.
Не трогая основной софт - без сложностей и заморочек.
Корпорация так не умеет, не умела, и не сумеет... Маркетинг, однако...
Проще спросить GPT, мгновенно получить ответ, сформировать более точный вопрос,
и, после некоторых шагов, получить НУЖНЫЙ результат.
Который ОВЕН в короткое время, это минуты, не даст, не услышит, и даже понять не может.
Вот, я уже добрался до сети: пошёл второй человеко-час :)
Работа с GPT:
FAR файловый менеджер получает успешный ответ от ПР205 на запрос Ping к IP-адресу 192.168.1.249,
это означает, что устройство с этим IP-адресом доступно в моей сети и отвечает на сетевые запросы.
Как слайвер он отдаёт в облако переменные.
Напиши программу на Puthon в среде Visual Studio Win10 x64 с комментариями, используя протокол ICMP (Internet Control Message Protocol), для приёма этих переменных.
import subprocess
import os
def ping(ip_addr): # Функция для отправки ICMP запроса Ping с помощью команды ping
try:
result = subprocess.check_output(['ping', '-n', '1', ip_addr], timeout=2, text=True) # Используем команду ping для отправки ICMP запроса на указанный IP-адрес
print(f"Устройство с IP-адресом {ip_addr} доступно и успешно ответило на запрос Ping.") # Если устройство ответило на запрос, то выводим сообщение об успешном пинге
# Пример обработки переменных и их передача в облако # Допустим, мы хотим отправить в облако переменные hostname и MAC-адрес устройства
hostname = subprocess.check_output(['hostname'], text=True).strip()
mac_address = subprocess.check_output(['arp', '-a', ip_addr], text=True).split()[3]
print(f"Hostname: {hostname}\nMAC-адрес: {mac_address}")
except subprocess.CalledProcessError:
print(f"Устройство с IP-адресом {ip_addr} не доступно.") # Если устройство не ответило на запрос, выводим сообщение об ошибке
except subprocess.TimeoutExpired:
print(f"Запрос к устройству с IP-адресом {ip_addr} превысил время ожидания.") # Если запрос превысил время ожидания, выводим сообщение об ошибке
ip_address = "192.168.1.249" # IP-адрес устройства, к которому хотим отправить запрос Ping
Никаких революций. Пока идёт проба пера. :)
Тихо и спокойно, обходятся ОВЕН-овские глюки.
Строиться своя среда для беспрерывного совершенствования.
Не надо ждать, что ОВЕН вдруг очнётся, и повернётся к нам лицом.
Коля. Вопросы ещё есть? :)
ПавелП, поймите простую вещь, чтобы добавить одну функцию, требуется посчитать трудочасы программиста, возможно наёмного, потому что собственный занят другим.
А функцию просит все один-два человека.
Сделайте выводы. Потратить кучу денег, чтобы реализованной функцией воспользовались пару просивших?
Особенно, если это продукт бесплатный, совсем грустно.
Николай Суриков gpt помогает написать код плохо понимающему. Пробовал один раз, мне доступ давали, а то в России с этим тяжко сейчас.
И что я могу сказать по данному поводу. Код мне выдало более лучший, чем предлагают всякие недопрограммисты на форумах.
И есть подозрение, что код от gpt будет лучше, чем у программистов Овен :)
"gpt помогает написать код плохо понимающему."
Неправильное понимание сути GPT...
Да, это один из вариантов.
В моём случае, формирование отчёта в формате Excel мне даёт ОВЕН Cloud.
Но т.к. там невозможно устранить глюки и добавить полезности, то...
То это сделал GPT в считаные секунды.
Тут с ОВЕН даже сравнивать нечего. Динозавры...
Дело сделано, больше спотыкаться об Excel мне не надо - всё работает.
Подправить, дополнить - можно просто спросив ещё раз!
"Пробовал один раз, мне доступ давали"
Даю вам доступ: https://talkai.info/ru/chat :)
"И есть подозрение, что код от gpt будет лучше, чем у программистов Овен :)"
Это уж точно!!!
Подскажу ещё более мощный в вайбере:
ChatGPT Powered AI Bot
тут он помнит диалоги, задачи и настройки.
Типа "умнее". :)
Там только 40 запросов, не интересно. Так как часто не знаю как спросить, зная, что хочу :)
ПавелП, поймите простую вещь, чтобы добавить одну функцию, требуется посчитать трудочасы программиста, возможно наёмного, потому что собственный занят другим.
А функцию просит все один-два человека.
Сделайте выводы. Потратить кучу денег, чтобы реализованной функцией воспользовались пару просивших?
Особенно, если это продукт бесплатный, совсем грустно.
У компании подход как у плохих авиастроителей...
Самолёт взлетел? УРА-А-А!!! Забыли.
А то что он не один раз должен взлетать и садится...
... тут как раз и возникают указанные вами трудности.
Заложили поддержку изделия? А вот "№;%№! вам всем!!!
И тут не может быть никаких оправданий.
Иногда мелочи исправить не могут годами.
Не смогли, не потянули, нет компетенции удержать изделие на плаву.
Там только 40 запросов, не интересно. Так как часто не знаю как спросить, зная, что хочу :)
Сорок запросов???
Все проще, держать собственных программистов не выгодно, нанимают под задачу и все. Потом накапливают пул хотелок, опять нанимают.
Да, для меня 40 запоров мало, я самоучка, каждый чих смотрю :)
Все проще, держать собственных программистов не выгодно, нанимают под задачу и все. Потом накапливают пул хотелок, опять нанимают. Странно. Они хватаются о десятках тысяч продаж.
Да, для меня 40 запоров мало, я самоучка, каждый чих смотрю :)
Я вторые сутки долбаю этот GPT.
Вероятно я раньше подключился. :)
Тогда в вайбере - там он у меня уже третий месяц живёт.
Третий человеко-час. :) Точно сформированный детальный запрос.
Запрос для GPT:
настройки ПЛК ПР205
ModBUS Master, адрес 100, тайм-аут 100мс, Старшим байтом вперёд, Старшим регистром вперёд, регистры с номерами 12,16,20,2056,24,28,32,36,40,44,48,52,56,84,88,92, 96 с плавающей запятой, регистры 520 и 524 целочисленные, у всег регистров период чтения 50мс.
ПЛК связан с ПК по сети LAN, IP 192.168.1.249, Маска подсети 255.255.254.0, IP адрес шлюза 192.168.1.105,
DNS сервер 1 194.158.196.137, DNS сервер 2 194.158.196.141
ModBUS Slaver, регистры целочисленные
16384,16385,16386,16389,16390,16391,16392,16393,16 402,16403,16405,16406,16408,16413,16416,16417,1642 2
регистры с плавающей запятой 16394,16396,16398,16409,16414,16418,16420
IP-адрес "192.168.1.249" доступен в сети. Команда `ping 192.168.1.249`, порт 502.
из командной строки компьютера - хост отвечает на ICMP-запросы.
Python в среде Visual Studio Win10 x64.
Напиши программу: вывести значения Slaver всех регистров.
Ответ GPT:
# -- coding: cp1251 --
from pymodbus.client import ModbusTcpClient
# Установка соединения с ПЛК по протоколу Modbus TCP
client = ModbusTcpClient('192.168.1.249', port=502)
# Чтение целочисленных регистров (Slaver)
int_registers = [16384, 16385, 16386, 16389, 16390, 16391, 16392, 16393, 16402, 16403, 16405, 16406, 16408, 16413, 16416, 16417, 16422]
for reg_address in int_registers:
response = client.read_input_registers(reg_address, count=1, unit=0x01)
if response.isError():
print(f'Error reading Register {reg_address}: {response.function_code}')
elif len(response.registers) > 0:
print(f'Slaver, Register {reg_address}: {response.registers[0]}')
else:
print(f'No data returned for Register {reg_address}')
client.close()
Результат:
Slaver, Register 16384: 0
Error reading Register 16385: 132
Slaver, Register 16386: 16
Slaver, Register 16389: 0
Slaver, Register 16390: 0
Slaver, Register 16391: 3
Slaver, Register 16392: 0
Slaver, Register 16393: 0
Slaver, Register 16402: 0
Slaver, Register 16403: 0
Slaver, Register 16405: 0
Error reading Register 16406: 132
Error reading Register 16408: 132
Slaver, Register 16413: 0
Slaver, Register 16416: 23
Slaver, Register 16417: 1
Slaver, Register 16422: 0
В нужных регистрах время тикает.
Пришлось порыться и пробовать:
GPT упорно подсовывает:
from pymodbus.client.sync import ModbusSerialClient
а надо:
from pymodbus.client import ModbusSerialClient
что мешало, и пришлось лопатить инет, чтоб про это найти.
- pymodbus тож пошёл с раза пятого, до этого были разные другие библиотеки.
- толком не отображаются, да и то не все:
регистры с плавающей запятой 16394,16396,16398,16409,16414,16418,16420
В общем, всё оказалось довольно просто и быстро.
Железяка достаточно сообразительная.
Как выяснилось, версия GPT для браузера - это типа GPT-2.5.
Обрабатывает только один запрос до 2000 символов.
Не помнит прошлых запросов. С PDF не работает.
Гораздо "умнее" версия GPT для вибера. GPT-3.
Помнит диалоги, можно раз задать много параметров, и потом не упоминать - учитываются при работе.
Покупные версии позволяют скормить парочку увесистых PDF по 10 мег.
Отвечает по ним точно, с ссылками на страницы.
Выколупывает точные ответы и связывает разбросанные по докам данные.
Это уже привет ОВЕН-ам.
GPT просил передать. :)
Видеокарта с памятью 10 гег, и базой в 200 гег - это примерно GPT2.5.
При стоимости в $1000 баксов, и нет привязки к инету.
Для "беготни" по своим PDF самое то.
Скорее всего возьму облако.
При стоимости:
20р/час = Tesla A2 128 бит, 16 GB, 8нм,текстурн 40, тензор 40, ядер 1280
34р/час = Tesla A10 384 бит, 24 GB, 8нм,текстурн 288, тензор 288, ядер 9216
400р/ч = Tesla H100 5120 бит, 80 GB, 4нм, тензор 456, ядер 14592
Раздолье!!! Только работай! :)
Slaver
Где вы таких слов нахватались? Зачем термины коверкать? В вашем случае смысл термина полностью теряется.
который день бьетесь? :)
Зачем биться???
Идёт очень интересный процесс познания + реальное применение. :)
Сегодня выходной. Завтра опять: Настройки всех параметров с Excel.
Slaver
Где вы таких слов нахватались? Зачем термины коверкать? В вашем случае смысл термина полностью теряется.
Зачем впустую сотрясать воздух?
Поконкретнее, если опыта побольше.
ПавелП ну в смысле Modbis Slave а не Slaver
ПавелП ну в смысле Modbis Slave а не Slaver
Так это же описька. :)
Слишком очевидно даже для новичков.
Перелопачивается большой объём информации.
P.S. Slave в первом письме нашёл.
Modbis - не нашёл. Это уже ваша описЬка... :(
Так это же описька. :)
Точно?
76837
Точно?
76837
Modbis - это что?
Может своё брёвнышко в глазу увидишь?
ВЕТЕР - это слишком мелочно.
Вам, да и всем, очевидно, что описка.
Время моё на ерунду не тратьте, если нечего по теме сказать.
За замечание спасибо.
Время моё на ерунду не тратьте, если нечего по теме сказать..
Вообще то есть.
int_registers = [16384, 16385, 16386, 16389, 16390, 16391, 16392, 16393, 16402, 16403, 16405, 16406, 16408, 16413, 16416, 16417, 16422]
for reg_address in int_registers:
response = client.read_input_registers(reg_address, count=1, unit=0x01)
if response.isError():
print(f'Error reading Register {reg_address}: {response.function_code}')
elif len(response.registers) > 0:
print(f'Slaver, Register {reg_address}: {response.registers[0]}')
else:
print(f'No data returned for Register {reg_address}')
Модбас пакетный протокол, опрашивать по одному регистру в цикле, это извращение.
У вас диапазон 16422-16384=38, обычно для модбаса тср это один запрос и один ответ от "работорговца:rolleyes:"
ИИ у вас тупой однако.
Вообще то есть.
Модбас пакетный протокол, опрашивать по одному регистру в цикле, это извращение.
У вас диапазон 16422-16384=38, обычно для модбаса тср это один запрос и один ответ от "работорговца:rolleyes:"
ИИ у вас тупой однако.
1. Вам нечего сказать, только как ругать тупую железяку...
Я же не оптимизировать ставил задачу, а всего-то проверить работу!!!
Что захотел, то и получил. Очень даже неожиданно всё в связке заработало!
2. Мне пофиг эффективность в случае тестов. Главное результат - завелось с полпинка.
3. У меня нет ИИ. Есть доступ к ИИ, как и у всех. ИИ отработал великолепно!
4. Главное. Склоки может устраивать только человек... :)
Вы же великолепно осознаёте, что это начало, а не презентация проекта.
Всё в связке работает, и это считаные часы при неточных вопросах в первый раз.
Уже сегодня к вечеру 25-го я получу полностью рабочую систему, затратив три рабочих дня.
За неделю отточу все параметры, не залазя в дебри Питона и Excel.
Быстро. Эффективно. Разжёвано до мелочей. Без тормознутых посредников.
О чём ещё можно мечтать, когда быстро нужен РАБОЧИЙ результат?
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot