Вход

Просмотр полной версии : Python - дополнительные функции облака и удалённого управления.



ПавелП
22.06.2024, 00:44
Привет всем.

Подсмотрел на небольшом предприятии взаимодействие ПР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?

ПавелП
22.06.2024, 01:25
Поигрался с задержкой:

instrument.serial.timeout = 0.10 # seconds

не помогло...

Николай Суриков
22.06.2024, 08:08
Вы хотите переписать owencloud, на которое было потрачено тысячи человеко-часов, но у вас не получается опросить один регистр?

melky
22.06.2024, 12:05
люди всегда пытаются сделать что-то лучше, выше, быстрее.
Не ип...те себе мозк, поставьте Scada систему себе в облако(на предприятии) и сделайте тоже самое без облака Овен.
Если хочется писать что-то самому, рекомендую RapidScada, там можно многое делать самому, но по крайней мере вы не заморачиваетесь нижним уровнем (то есть его не придется писать с начала) очень многое есть в открытом ядре.
с C# и JS дело имели ?, тем более тогда рекомендую. Когда-то и я с языками программирования не имел дело, ну разве что Basic на ZX Spectrum...

ПавелП
22.06.2024, 12:52
Вы хотите переписать owencloud, на которое было потрачено тысячи человеко-часов, но у вас не получается опросить один регистр?

Вы хоть поняли про что я пишу?
Ещё раз для Вас: Python - дополнительные функции облака и удалённого управления.
А то что: "было потрачено тысячи человеко-часов" так и было, и даже больше.

Каков результат? Наколбасили, что сам разобраться не могут.

А результат таков:

- Убрать эти дурацкие "шапоки" типа Старт(P16392), которые прикручены к рядам переменных в отчётах.
Убрать просили ОВЕН годами - при мне полтора года прошло.

- Поддержка ПР205 отсутствует, хоть и божились что исправили.

не работает - Автоопределяемые приборы ОВЕН
не работает - Программируемый контроллер
приходится через ж... - MX210 через Modbus


А про: "у вас не получается опросить один регистр"

Верно. Я потратил 1 человеко-час, начав с "0".
- GPT в этом направлении создал файл отчёта.
- Python - я его раньше в глаза не видел.


Так что не надо язвить. Помогите, если опыта хватает.

Времена изменились, да вот только ОВЕНЫ ещё в XX веке сидят...

ПавелП
22.06.2024, 13:13
люди всегда пытаются сделать что-то лучше, выше, быстрее.
Не ип...те себе мозк, поставьте 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)

melky
22.06.2024, 13:32
ПавелП я к чему вообще. Вам сейчас нужны отчеты но вы долбетесь с modbus. Вместо того, чтобы разбираться с отчетами, настроив готовую scada с готовым modbus.

RapidScada с открытым исходным кодом, есть куча примеров в коде для драйверов, модулей, плагинов web сервера, даже какой-то пример отчета есть насколько помню. То есть разбираешься с нужным, не начиная с нуля.

Николай Суриков
22.06.2024, 13:34
Пять лет назад все везде пихали блокчейн, теперь GPT. Успокойтесь.
https://habr.com/ru/articles/823584/

melky
22.06.2024, 14:12
Николай Суриков gpt помогает написать код плохо понимающему. Пробовал один раз, мне доступ давали, а то в России с этим тяжко сейчас.
И что я могу сказать по данному поводу. Код мне выдало более лучший, чем предлагают всякие недопрограммисты на форумах.

И есть подозрение, что код от gpt будет лучше, чем у программистов Овен :)

ПавелП
22.06.2024, 16:31
Пять лет назад все везде пихали блокчейн, теперь 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


Никаких революций. Пока идёт проба пера. :)
Тихо и спокойно, обходятся ОВЕН-овские глюки.
Строиться своя среда для беспрерывного совершенствования.
Не надо ждать, что ОВЕН вдруг очнётся, и повернётся к нам лицом.

Коля. Вопросы ещё есть? :)

melky
22.06.2024, 16:47
ПавелП, поймите простую вещь, чтобы добавить одну функцию, требуется посчитать трудочасы программиста, возможно наёмного, потому что собственный занят другим.
А функцию просит все один-два человека.
Сделайте выводы. Потратить кучу денег, чтобы реализованной функцией воспользовались пару просивших?
Особенно, если это продукт бесплатный, совсем грустно.

ПавелП
22.06.2024, 16:48
Николай Суриков gpt помогает написать код плохо понимающему. Пробовал один раз, мне доступ давали, а то в России с этим тяжко сейчас.
И что я могу сказать по данному поводу. Код мне выдало более лучший, чем предлагают всякие недопрограммисты на форумах.

И есть подозрение, что код от gpt будет лучше, чем у программистов Овен :)

"gpt помогает написать код плохо понимающему."
Неправильное понимание сути GPT...

Да, это один из вариантов.
В моём случае, формирование отчёта в формате Excel мне даёт ОВЕН Cloud.
Но т.к. там невозможно устранить глюки и добавить полезности, то...

То это сделал GPT в считаные секунды.
Тут с ОВЕН даже сравнивать нечего. Динозавры...
Дело сделано, больше спотыкаться об Excel мне не надо - всё работает.
Подправить, дополнить - можно просто спросив ещё раз!


"Пробовал один раз, мне доступ давали"
Даю вам доступ: https://talkai.info/ru/chat :)

"И есть подозрение, что код от gpt будет лучше, чем у программистов Овен :)"
Это уж точно!!!

Подскажу ещё более мощный в вайбере:
ChatGPT Powered AI Bot
тут он помнит диалоги, задачи и настройки.
Типа "умнее". :)

melky
22.06.2024, 16:56
Там только 40 запросов, не интересно. Так как часто не знаю как спросить, зная, что хочу :)

ПавелП
22.06.2024, 16:59
ПавелП, поймите простую вещь, чтобы добавить одну функцию, требуется посчитать трудочасы программиста, возможно наёмного, потому что собственный занят другим.
А функцию просит все один-два человека.
Сделайте выводы. Потратить кучу денег, чтобы реализованной функцией воспользовались пару просивших?
Особенно, если это продукт бесплатный, совсем грустно.

У компании подход как у плохих авиастроителей...
Самолёт взлетел? УРА-А-А!!! Забыли.

А то что он не один раз должен взлетать и садится...

... тут как раз и возникают указанные вами трудности.

Заложили поддержку изделия? А вот "№;%№! вам всем!!!
И тут не может быть никаких оправданий.

Иногда мелочи исправить не могут годами.

Не смогли, не потянули, нет компетенции удержать изделие на плаву.

ПавелП
22.06.2024, 17:00
Там только 40 запросов, не интересно. Так как часто не знаю как спросить, зная, что хочу :)

Сорок запросов???

melky
22.06.2024, 17:06
Все проще, держать собственных программистов не выгодно, нанимают под задачу и все. Потом накапливают пул хотелок, опять нанимают.

Да, для меня 40 запоров мало, я самоучка, каждый чих смотрю :)

ПавелП
22.06.2024, 17:11
Все проще, держать собственных программистов не выгодно, нанимают под задачу и все. Потом накапливают пул хотелок, опять нанимают. Странно. Они хватаются о десятках тысяч продаж.


Да, для меня 40 запоров мало, я самоучка, каждый чих смотрю :)

Я вторые сутки долбаю этот GPT.
Вероятно я раньше подключился. :)

Тогда в вайбере - там он у меня уже третий месяц живёт.

ПавелП
23.06.2024, 01:47
Третий человеко-час. :) Точно сформированный детальный запрос.

Запрос для 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

В нужных регистрах время тикает.

ПавелП
23.06.2024, 02:26
Пришлось порыться и пробовать:


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
Раздолье!!! Только работай! :)

melky
24.06.2024, 08:31
который день бьетесь? :)

BETEP
24.06.2024, 08:42
Slaver
Где вы таких слов нахватались? Зачем термины коверкать? В вашем случае смысл термина полностью теряется.

ПавелП
24.06.2024, 14:50
который день бьетесь? :)
Зачем биться???

Идёт очень интересный процесс познания + реальное применение. :)

Сегодня выходной. Завтра опять: Настройки всех параметров с Excel.

ПавелП
24.06.2024, 14:51
Slaver
Где вы таких слов нахватались? Зачем термины коверкать? В вашем случае смысл термина полностью теряется.

Зачем впустую сотрясать воздух?

Поконкретнее, если опыта побольше.

melky
24.06.2024, 16:32
ПавелП ну в смысле Modbis Slave а не Slaver

ПавелП
24.06.2024, 18:52
ПавелП ну в смысле Modbis Slave а не Slaver
Так это же описька. :)

Слишком очевидно даже для новичков.
Перелопачивается большой объём информации.

P.S. Slave в первом письме нашёл.
Modbis - не нашёл. Это уже ваша описЬка... :(

BETEP
24.06.2024, 19:01
Так это же описька. :)
Точно?
76837

ПавелП
24.06.2024, 19:26
Точно?
76837

Modbis - это что?
Может своё брёвнышко в глазу увидишь?

ВЕТЕР - это слишком мелочно.
Вам, да и всем, очевидно, что описка.

Время моё на ерунду не тратьте, если нечего по теме сказать.

За замечание спасибо.

BETEP
24.06.2024, 22:36
Время моё на ерунду не тратьте, если нечего по теме сказать..
Вообще то есть.

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:"

ИИ у вас тупой однако.

ПавелП
25.06.2024, 00:31
Вообще то есть.

Модбас пакетный протокол, опрашивать по одному регистру в цикле, это извращение.
У вас диапазон 16422-16384=38, обычно для модбаса тср это один запрос и один ответ от "работорговца:rolleyes:"

ИИ у вас тупой однако.

1. Вам нечего сказать, только как ругать тупую железяку...
Я же не оптимизировать ставил задачу, а всего-то проверить работу!!!
Что захотел, то и получил. Очень даже неожиданно всё в связке заработало!

2. Мне пофиг эффективность в случае тестов. Главное результат - завелось с полпинка.

3. У меня нет ИИ. Есть доступ к ИИ, как и у всех. ИИ отработал великолепно!

4. Главное. Склоки может устраивать только человек... :)
Вы же великолепно осознаёте, что это начало, а не презентация проекта.

Всё в связке работает, и это считаные часы при неточных вопросах в первый раз.


Уже сегодня к вечеру 25-го я получу полностью рабочую систему, затратив три рабочих дня.
За неделю отточу все параметры, не залазя в дебри Питона и Excel.

Быстро. Эффективно. Разжёвано до мелочей. Без тормознутых посредников.
О чём ещё можно мечтать, когда быстро нужен РАБОЧИЙ результат?