Страница 40 из 43 ПерваяПервая ... 303839404142 ... ПоследняяПоследняя
Показано с 391 по 400 из 426

Тема: CODESYS V3.5. Настройка обмена с другими устройствами (Modbus, ОВЕН, OPC и др.)

  1. #391

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Опишите, пожалуйста, более подробно - о чем речь и зачем это нужно.
    Хочу попробовать перенести проект "Универсальный диспетчер" из CDS2.3
    В тексте программы используется обращение к этой переменной во время начала опроса модуля

    Mdl.pDisp^.ReadInpRegs(Enable := NOT Mdl.pDisp^.ReadInpRegs.Read,
    Mode := MB_RTU,
    DevAddr := Mdl.Base.Adress,
    FirstAddr := StartRegister+8,
    Quantity:=RegisterCount, (*количество регистров*)
    ComHandle := Mdl.pDisp^.Settings.Port,
    TimeOut := Mdl.Base.TimeOut,
    Buffer:= Mdl.pDisp^.ReciveBuffer);

  2. #392

  3. #393

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Тогда это вопрос к автору проекта "Универсальный диспетчер" - каким именно образом формируется данная переменная.
    Почему к автору? Эта переменная присутствует в описании библиотеки Modbus для CDS2.1, а в CDS3 она из описания пропала... Вот:

    FUNCTION_BLOCK MB_RD_INP_REGS
    VAR_INPUT
    Enable: BOOL; (* разрешение работы блока *)
    Mode: MB_MODE; (* Serial Transmission Mode of MODBUS networks *)
    DevAddr: BYTE (1..247); (* адрес подчиненного устройства в сети MODBUS *)
    FirstAddr: WORD; (* начальный адрес регистра *)
    Quantity: BYTE (1..125); (* количество регистров для чтенеия *)
    ComHandleWORD; (* дескриптор последовательного порта библиотеки SysLibCom *)
    TimeOut: TIME; (* время тайм-аута [мс] - макс. задержка на обработку запроса *)
    END_VAR
    VAR_IN_OUT
    Buffer: ARRAY[0..255] OF BYTE; (* байтовый буфер данных *)
    END_VAR
    VAR_OUTPUT
    Complete: BOOL; (* если = TRUE, то обмен завершен *)
    Exception: BYTE; (* исключения протокола MODBUS или 0хFF - таймаут *)
    ByteCnt: BYTE; (* размер прочитанного блока данных, байт *)
    END_VAR
    VAR
    RxData: MB_UNI_IO; (* функциональный блок чтения данных *)
    Read: BOOL; (* активен режим чтения, запрос уже отправлен *)
    END_VAR
    VAR CONSTANT
    EXC_DE: BYTE := 16#FD; (* INPUT DATA ERROR *)
    END_VAR

  4. #394

    По умолчанию

    Это локальная переменная ФБ - она не предназначена для использования за пределами блока.
    Каким образом она участвует в логике диспетчера - вопрос к его автору.

  5. #395

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Это локальная переменная ФБ - она не предназначена для использования за пределами блока.
    Каким образом она участвует в логике диспетчера - вопрос к его автору.
    Я обратил на это внимание... Но в CDS2.1 локальные оказывается тоже доступны... В описании диспетчера автор пишет:

    "Дело в том, что от момента активации экземпляра ФБ (передний фронт
    переменной Enable) до момента завершения его работы (установка переменной Complete в
    True) порт COM1 занят. Поэтому активация другого экземплярного блока в этот момент
    для этого же порта приведен к коллизии сети. Это означает, что необходимо реализовать
    механизм диспетчеризации обращений к порту. "

  6. #396

    По умолчанию

    Цитата Сообщение от Sergeba Посмотреть сообщение
    Я обратил на это внимание... Но в CDS2.1 локальные оказывается тоже доступны... В описании диспетчера автор пишет:

    "Дело в том, что от момента активации экземпляра ФБ (передний фронт
    переменной Enable) до момента завершения его работы (установка переменной Complete в
    True) порт COM1 занят. Поэтому активация другого экземплярного блока в этот момент
    для этого же порта приведен к коллизии сети. Это означает, что необходимо реализовать
    механизм диспетчеризации обращений к порту. "
    Тогда для стандартных компонентов аналогом является переменная xBusy.
    Или вы про библиотеку Modbus? Там такого флага нет - его придется самому формировать в коде программы.

  7. #397
    Пользователь
    Регистрация
    10.11.2014
    Адрес
    Санкт-Петербург
    Сообщений
    719

    По умолчанию

    Цитата Сообщение от Sergeba Посмотреть сообщение
    Я обратил на это внимание... Но в CDS2.1 локальные оказывается тоже доступны... В описании диспетчера автор пишет:

    "Дело в том, что от момента активации экземпляра ФБ (передний фронт
    переменной Enable) до момента завершения его работы (установка переменной Complete в
    True) порт COM1 занят. Поэтому активация другого экземплярного блока в этот момент
    для этого же порта приведен к коллизии сети. Это означает, что необходимо реализовать
    механизм диспетчеризации обращений к порту. "
    В CDS3 локальные тоже доступны. Только помощник не предлагает их при вводе. Но если самому прописать, то скомпилируется.
    Подразумевается, что если пользователь создал переменную локальной, то ее не нужно использовать вне блока.
    По смыслу Read, конечно, должна быть выходной переменной.
    Скорее всего в CDS3, есть другая по названию, но аналогичная по смыслу.

  8. #398
    Пользователь
    Регистрация
    10.11.2014
    Адрес
    Санкт-Петербург
    Сообщений
    719

    По умолчанию

    Цитата Сообщение от Sergeba Посмотреть сообщение
    Я обратил на это внимание... Но в CDS2.1 локальные оказывается тоже доступны... В описании диспетчера автор пишет:

    "Дело в том, что от момента активации экземпляра ФБ (передний фронт
    переменной Enable) до момента завершения его работы (установка переменной Complete в
    True) порт COM1 занят. Поэтому активация другого экземплярного блока в этот момент
    для этого же порта приведен к коллизии сети. Это означает, что необходимо реализовать
    механизм диспетчеризации обращений к порту. "
    Перепишите, поделитесь. Будет интересно посмотреть.

  9. #399

    По умолчанию

    Пользуясь случаем хочу поблагодарить разработчиков библиотеки OwenCommunication.
    Настраивается логично. Работает чОтко и ясно.
    Life is complex: it has both real and imaginary components.

  10. #400

    По умолчанию

    Цитата Сообщение от SlavikP Посмотреть сообщение
    Пользуясь случаем хочу поблагодарить разработчиков библиотеки OwenCommunication.
    Настраивается логично. Работает чОтко и ясно.
    Cпасибо, я им передам. )

Страница 40 из 43 ПерваяПервая ... 303839404142 ... ПоследняяПоследняя

Похожие темы

  1. Настройка ПР200, управление 3-мя устройствами через RS-485
    от Orbes в разделе Среда программирования OWEN Logic
    Ответов: 20
    Последнее сообщение: 15.05.2017, 16:45
  2. СП3ХХ Пример настройка обмена с ПЛК на CODESYS 2.3
    от Denis_Kay в разделе Панели оператора (HMI)
    Ответов: 6
    Последнее сообщение: 02.03.2017, 15:12
  3. Ответов: 43
    Последнее сообщение: 13.04.2015, 14:05
  4. Универсальная функция для обмена с устройствами OwenIO и всеми любимый LabView.
    от Алексей Крагель в разделе Помощь Разработчикам
    Ответов: 0
    Последнее сообщение: 30.05.2014, 14:38

Ваши права

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