Skip to content

Modbus Plugin

Yurii Solodzhuk edited this page Feb 12, 2026 · 3 revisions

Плагін для Modbus RTU зв'язку через серійний порт. Підтримує всі стандартні функціональні коди.

Встановлення

pip install pyqtier[modbus]

Використання

# app/widgets/main_window.py
from pyqtier.plugins.modbus_plugin import ModbusPluginManager, ModbusDataProcessor


class MainWindow(PyQtierMainWindow):
    def setup_view(self):
        self.modbus = ModbusPluginManager(
            with_baudrate=True,
            default_baudrate=9600,
            default_slave_id=1
        )
        self.modbus.setup_view(self.view.modbus_widget, self.view.statusbar)
        self.modbus.set_data_processor(MyModbusProcessor())

    def create_behavior(self):
        self.modbus.connected.connect(self.on_connected)
        self.modbus.disconnected.connect(self.on_disconnected)
        self.modbus.data_ready.connect(self.on_data)
        self.modbus.error_occurred.connect(self.on_error)

Читання даних

# Holding registers (FC 3)
values = self.modbus.read_holding_registers(address=100, count=5, slave_id=1)

# Input registers (FC 4)
values = self.modbus.read_input_registers(address=200, count=3)

# Coils (FC 1)
states = self.modbus.read_coils(address=0, count=8)

# Discrete inputs (FC 2)
states = self.modbus.read_discrete_inputs(address=10, count=4)

# Універсальний метод
values = self.modbus.read(function_code=3, address=100, count=5)

Запис даних

# Один регістр (FC 6)
self.modbus.write_register(address=100, value=1234)

# Кілька регістрів (FC 16)
self.modbus.write_registers(address=100, values=[10, 20, 30])

# Один coil (FC 5)
self.modbus.write_coil(address=0, value=True)

# Кілька coils (FC 15)
self.modbus.write_coils(address=0, values=[True, False, True])

# Універсальний метод
self.modbus.write(function_code=6, address=100, value=1234)

Сигнали

Сигнал Опис
connected Успішне підключення
disconnected Відключення
connection_lost Втрата з'єднання
error_occurred Помилка
data_ready Оброблені дані (після Data Processor)
devices_list_updated Оновлення списку портів

Підтримувані baudrate

9600, 19200, 38400, 57600, 115200

Примітки

  • Slave ID можна задати в UI або передати параметром у кожен метод
  • Допустимий діапазон Slave ID: 1–247
  • Data Processor автоматично запускає/зупиняє polling при підключенні/відключенні
  • Всі методи читання повертають None при помилці

<< CAN Plugin | Створення Data Processor >>

Clone this wiki locally