Показано с 11 по 16 из 16

Тема: СТГ 3 и modbus

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию СТГ 3 и modbus

    Пытаюсь считать с СТГ 3 текущие измеренное значение, Нажмите на изображение для увеличения. 

Название:	1.png 
Просмотров:	31 
Размер:	91.7 Кб 
ID:	78530Нажмите на изображение для увеличения. 

Название:	2.png 
Просмотров:	29 
Размер:	74.8 Кб 
ID:	78531


    Пример запроса данных:
    01; 03; 00; 00; 00; 02; sum 0; sum 1,
    где N номер сигнализатора в сети. Устанавливается пользователем в
    диапазоне от 1 до 31;
    sum 0; sum 1 контрольная сумма (CRC), рассчитывается в соответствии
    с протоколом «MODBUS-RTU».


    # Извлечение данных из регистров
    reg0 = registers[0]
    reg1 = registers[1]

    # Разбиение регистров на байты
    byte1 = (reg0 >> 8) & 0xFF
    byte2 = reg0 & 0xFF
    byte3 = (reg1 >> 8) & 0xFF
    byte4 = reg1 & 0xFF

    # Извлечение состояния сигнализации и знака
    sign_bit = (byte1 >> 7) & 0x01
    p1 = (byte1 >> 3) & 0x01
    p2 = (byte1 >> 4) & 0x01
    comma_position = (byte1 & 0x07)

    # Определение знака
    sign = '-' if sign_bit else '+'

    # Чтение значений
    integer_part = byte2 * 100 + byte3 * 10 + (byte4 >> 4)
    decimal_part = (byte4 & 0x0F) * 100

    # Формирование значения
    value = integer_part + decimal_part / 10000
    if sign_bit:
    value = -value

    # Сдвиг запятой
    value /= 10 ** comma_position

    # Форматирование результата
    print(f"Значение: {value:.{comma_position}f}")
    print(f"Состояние сигнализации: П1={p1}, П2={p2}")

    def main():
    # Параметры запроса
    unit_id = 1
    address = 0x00 # Начальный адрес
    count = 2 # Количество регистров

    while True:
    # Чтение данных
    data = read_modbus_data(client, unit_id, address, count)
    if data:
    interpret_data(data.registers)




    Ну как бы все просто и элементарно но в ответ я получаю всякую ерунду

    Значение: 0.02120
    Состояние сигнализации: П1=0, П2=0
    Значение: 0.02423
    Состояние сигнализации: П1=0, П2=0
    Значение: 0.01677
    Состояние сигнализации: П1=0, П2=0
    Значение: 0.015674
    Состояние сигнализации: П1=0, П2=0
    Значение: 0.016387


    Хотя в официальной программе значение Нажмите на изображение для увеличения. 

Название:	3.png 
Просмотров:	12 
Размер:	3.6 Кб 
ID:	78532 что я делаю не так?
    Последний раз редактировалось atomo2; 09.09.2024 в 12:46.

Похожие темы

  1. Ответов: 26
    Последнее сообщение: 31.01.2023, 17:42
  2. Ответов: 2
    Последнее сообщение: 04.06.2019, 16:55
  3. Ответов: 10
    Последнее сообщение: 10.06.2018, 16:36
  4. Ответов: 2
    Последнее сообщение: 17.03.2016, 08:47
  5. Ответов: 5
    Последнее сообщение: 14.10.2010, 13:42

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •