Страница 1044 из 1047 ПерваяПервая ... 44544944994103410421043104410451046 ... ПоследняяПоследняя
Показано с 10,431 по 10,440 из 10464

Тема: ВОПРОС-ОТВЕТ (отвечаем на простые вопросы от новичков)

  1. #10431

    По умолчанию

    Добрый день.
    Пытаюсь связаться с МК210-302 по Modbus TCP.
    Честно, никогда раньше не имел дела ни с Modbus ни с OWEN.
    Отправляю на сокет с указанным в конфигураторе IP такой пакет
    #pragma pack(push, 1)
    struct data_t {
    uint16_t transaction_n;
    uint16_t protocol_id;
    uint16_t packet_size;

    uint8_t slave_id;
    uint8_t func_id;
    uint16_t registry_n;
    uint16_t registers_count;
    uint8_t value_size;
    uint8_t value;
    };
    #pragma pack(pop)

    data_t data;
    data.transaction_n = 0;
    data.protocol_id = 0;
    data.packet_size = 8;
    data.slave_id = 1;
    data.func_id = 16;
    data.registry_n = 470;
    data.registers_count = 1;
    data.value_size = 1;
    data.value = 8;

    нужные значения дискретных выходов не устанавливаются.
    правильный ли я пакет отправляю?

  2. #10432

    По умолчанию

    всё, получилось, прошу прощение за беспокойство

  3. #10433

    По умолчанию

    НО. Появился другой вопрос. Чтобы стабильно установить эти данные, приходится посылать одно и тоже 2 раза.
    Это явно нехорошо. Что я делаю неправильно может нужна какая-то инициализация?

  4. #10434

    По умолчанию

    вернее наоборот, опытном путем выяснил, что НЕ проходит именно последняя команда. Причем дело явно не в клиенте (мастере), поскольку если отправить эту же структуру в конце, забитую 0-ми, то ничего не поменяется, сервер его просто не обработает, как и последнюю значащую команду.

  5. #10435

    По умолчанию

    Цитата Сообщение от dkhokhlov Посмотреть сообщение
    НО. Появился другой вопрос. Чтобы стабильно установить эти данные, приходится посылать одно и тоже 2 раза.
    Это явно нехорошо. Что я делаю неправильно может нужна какая-то инициализация?
    Поставьте себе например Owen OPC Server, это пара минут, он может читать и записывать по Модбас или TCP, например ваш модуль.

    В журнале, в логах опроса видно всё, запросы мастера, ответы модуля слейва, посмотрите как это работает.
    https://owen.ru/catalog/opc_serveri
    Последний раз редактировалось kondor3000; 24.04.2024 в 18:25.

  6. #10436

    По умолчанию

    спасибо, обязательно попробую

  7. #10437

    По умолчанию

    Приветвствую.

    У кого-нибудь получилось написать обёрточную функцию для принудительного вызова функций записи \ чтения из библиотеки Modbus, вместо того, чтобы гонять цикл CASE.. OF (как указано в примерах к библиотеке)?

  8. #10438
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,251

    По умолчанию

    Цитата Сообщение от stdenits Посмотреть сообщение
    У кого-нибудь получилось написать обёрточную функцию для принудительного вызова функций записи \ чтения из библиотеки Modbus,..?
    Через час после ознакомления с модбас-либ

  9. #10439

    По умолчанию

    Задание 1
    Для выполнения сегодняшнего задания используйте проект с прошлого занятия по заданию состояния светофора.
    Продолжите работать с этим проектом на языке ST.
    Вам нужно осуществить в этом домашнем задании автоматическую работу светофора с возможностью ручного выбора режима.
    В окне визуализации, кроме индикации светофора, теперь понадобятся три кнопки без фиксации для выбора режима:
    «Дежурный ночной» - мигающий желтый,
    «Нормальный дневной» - обычный режим работы с разными выдержками времени на отдельные состояния,
    «Едет депутат» - машинам зеленый, пешеходам – красный.
    Также предусмотрите переключатель «Работа-Стоп». К этим элементам привяжите отдельные булевы переменные (не массив!!!).
    Вашей задачей будет обеспечить работу светофора в выбранном режиме, а также – его включение и выключение.

    При помощи оператора IF, в зависимости от состояния кнопок и переключателя, предусмотрите присвоение интовой переменной «Режим» значений от 0 до 3. (0 – светофор отключен, 1-3 – один из режимов работы)

    Работу в каждом из четырех возможных режимов реализуйте при помощи оператора CASE. При этом переключение состояния светофора выполняйте за счет вызова функционального блока, созданного на прошлом уроке, с присвоением необходимого значения его входной переменной.

    Три режима работы «Отключено», «Дежурный ночной» и «Едет депутат» не должны у Вас вызвать затруднений.

    Рассмотрим подробнее оставшийся режим - «Нормальный дневной». В этом режиме Вам нужно использовать несколько вариантов состояния светофора с разной длительностью. Задайте самостоятельно длительность каждого из состояний – но не менее 2с каждое. Посчитайте общую длительность всех фаз. Осуществите вызов таймера типа TON с заданием времени по входу и используйте его выход ET для отсчета интервалов времени для каждой фазы. При этом в каждой фазе осуществляйте вызов функционального блока, созданного на прошлом уроке, с присвоением необходимого значения его входной переменной. После окончания одного полного цикла работы светофора (это можно определить по состоянию выхода таймера Q) произведите сброс счетчика.

    Работу над этим проектом также начните с составления блок-схемы.


    Задание 2
    Выполните небольшую модификацию Задания 1 в трех вариантах.

    Булевые переменные для кнопок «Дежурный ночной», «Нормальный дневной» и «Едет депутат» реализуйте в виде массива из трех элементов. А для обработки их состояния и присвоение интовой переменной «Режим» нужного значеня используйте цикл WHILE, REPEAT или FOR – один для каждой из модификаций.

    Как это сделать? Не могу понять. С чего начать?

  10. #10440

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Через час после ознакомления с модбас-либ
    Можете поделиться примером или самой функцией, если это возможно?

Страница 1044 из 1047 ПерваяПервая ... 44544944994103410421043104410451046 ... ПоследняяПоследняя

Метки этой темы

Ваши права

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