Форум сайта python.su
Тема не новая, и материалов в интернете полно - все равно не работает
Исходники брал тут и тут
Задача - выгрузить данные, приходящие от устройства по протоколу Modbus, из сом-порта в БД MySQL, развернутую на хостинге в Интернете.
На win7 32bit установлен Python3.7, pywin32, Pyro4, pyserial, pymodbus, OpenOPC
Скрипт начинается с:
from pymodbus.client import ModbusSerialClient as ModbusClient
Отредактировано stereo (Фев. 14, 2024 10:54:40)
Прикреплённый файлы: main.py (1,2 KБ)
Офлайн
Ну основные проблемы тебе убрал!
Дальше смотри - COM порт это не USB что бы к нему цепляться нужно что бы он был свободен
То есть проверь что бы у тебя ничего к нему не висело в коннекте
Кроме того могут быть проблемы с правами доступа пользователя - тогда запусти скрипт на питоне с правами админа
В целом код не ругается на библиотеки на твоем компе и запускается но ругается на то что порт занят
а что у тебя там на нем висит и что уже читать
подбирай сам;
Офлайн
1. Исправил в main.py порт на СОМ8, сетевой адрес устроства = 35, сохранил SAVE, закрыл arOPC сервер, который его занимал
2. В Python 3.7.6 Shell нажал рестарт
Если бы все заработало, мы бы увидели в окне этого Shell двухзначный тег с устройства?
Карты регистров устройства modbus нет, в оригинале она была
for i in range(1,20): try: request = client.read_holding_registers(31 + i, 1, 1) result = request.registers if result and len(result) > 0: data.append({"com": com, "ch_index": i, "ch": f"CH{i}", "val": result[0] / 10}) print(f"{com} CH{i}: {result[0]/10}")
Прикреплённый файлы: Screenshot.jpg (484,0 KБ)
Офлайн