Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 16

Тема: Порядок выполнения цикла на ПЛК

  1. #1

    По умолчанию Порядок выполнения цикла на ПЛК

    В процессе программирования возник следующий вопрос, точнее не понимание. Руководство прочитал, ответа на свой вопрос не нашел.
    Итак: имеется ПР200 с двумя сетевыми платами; ПР 100 подключенный к ПР200 в качестве slave (ПР200 мастер для него); имеется шлюз Wifi для реализации modbus/TCP, подключенный к ПР200 (ко второй плате), ПР200 для него slave. В алгоритме необходимо обмениваться данными как по сети rs485 между ПР100 и ПР200, так и между ПР200 и Шлюзом. на виртуино, как ни странно, все данные отражаются, меняются (если они только читаются), а вот при попытке из изменения по сети - возникает конфуз.
    Суть вопроса в следующем: в каком порядке осуществляется алгоритм? я предположу, если что поправьте:

    -для мастера:
    1. Опрос сетевых регистров слейвов.
    2. Запись во внутреннюю память данных, полученных из сетевых регистров
    3. Запись во внутреннюю память данных, полученных с физических входов ПР-ки
    4. Работа 1-ого цикла программы
    5. Запись, полученных результатов в цикле алгоритма, во внутренние переменные
    6. Вывод данных на физические выходы ПР-ки
    7. Запись данных в сетевые регистры слейвов.

    -для слейва:
    1. Запись во внутреннюю память данных, полученных из сетевых регистров
    2. Запись во внутреннюю память данных, полученных с физических входов ПР-ки
    3. Работа 1-ого цикла программы
    4. Запись, полученных результатов в цикле алгоритма, во внутренние переменные
    5. Вывод данных на физические выходы ПР-ки
    6. Запись выходных данных в сетевые регистры

    Буду рад, оказанной помощи.

  2. #2

    По умолчанию

    Цитата Сообщение от shishkin_a_s@mail.ru Посмотреть сообщение
    В процессе программирования возник следующий вопрос, точнее не понимание. Руководство прочитал, ответа на свой вопрос не нашел.
    Итак: имеется ПР200 с двумя сетевыми платами; ПР 100 подключенный к ПР200 в качестве slave (ПР200 мастер для него); имеется шлюз Wifi для реализации modbus/TCP, подключенный к ПР200 (ко второй плате), ПР200 для него slave. В алгоритме необходимо обмениваться данными как по сети rs485 между ПР100 и ПР200, так и между ПР200 и Шлюзом. на виртуино, как ни странно, все данные отражаются, меняются (если они только читаются), а вот при попытке из изменения по сети - возникает конфуз.
    ...
    А конфуз то в чём выражается?

  3. #3

    По умолчанию

    Цитата Сообщение от shishkin_a_s@mail.ru Посмотреть сообщение
    В процессе программирования возник следующий вопрос, точнее не понимание. Руководство прочитал, ответа на свой вопрос не нашел.
    Итак: имеется ПР200 с двумя сетевыми платами; ПР 100 подключенный к ПР200 в качестве slave (ПР200 мастер для него); имеется шлюз Wifi для реализации modbus/TCP, подключенный к ПР200 (ко второй плате), ПР200 для него slave. В алгоритме необходимо обмениваться данными как по сети rs485 между ПР100 и ПР200, так и между ПР200 и Шлюзом. на виртуино, как ни странно, все данные отражаются, меняются (если они только читаются), а вот при попытке из изменения по сети - возникает конфуз.
    Суть вопроса в следующем: в каком порядке осуществляется алгоритм? я предположу, если что поправьте:

    -для мастера:
    1. Опрос сетевых регистров слейвов.
    2. Запись во внутреннюю память данных, полученных из сетевых регистров
    3. Запись во внутреннюю память данных, полученных с физических входов ПР-ки
    4. Работа 1-ого цикла программы
    5. Запись, полученных результатов в цикле алгоритма, во внутренние переменные
    6. Вывод данных на физические выходы ПР-ки
    7. Запись данных в сетевые регистры слейвов.

    -для слейва:
    1. Запись во внутреннюю память данных, полученных из сетевых регистров
    2. Запись во внутреннюю память данных, полученных с физических входов ПР-ки
    3. Работа 1-ого цикла программы
    4. Запись, полученных результатов в цикле алгоритма, во внутренние переменные
    5. Вывод данных на физические выходы ПР-ки
    6. Запись выходных данных в сетевые регистры

    Буду рад, оказанной помощи.
    Если учесть, что сетевые регистры (а скорее память где хранятся значения принятые/подготовленные для отправки) энергонезависимые, то скорее всего опрос идет иначе:
    В начале каждого цикла производиться передача запроса (при свободном порту) или прием ответа (при занятом порту), иначе в игре только известные (сохраненные) значения. Представьте, какая будет задержка до вызова цикла пользователя, если ждать завершения опроса всех ведомых с учетом перезапросов и тайм-аутов.
    Последний раз редактировалось EFrol; 09.09.2024 в 09:43.

  4. #4

    По умолчанию

    Цитата Сообщение от 1exan Посмотреть сообщение
    А конфуз то в чём выражается?
    Конфуз в том, что при управлении по сети - не все данные изменяются.

  5. #5

    По умолчанию

    Цитата Сообщение от shishkin_a_s@mail.ru Посмотреть сообщение
    Конфуз в том, что при управлении по сети - не все данные изменяются.
    Какие-то конкретные переменные не меняются или всегда разные?
    Надо выяснять, с какой стороны проблема - можно например заменить мастера (шлюз) на ПК с ОРС и попробовать менять данные с него

  6. #6

    По умолчанию

    Вот то, что нашёл в руководстве:
    <<Время цикла– это время выполнения рабочего цикла прибора, а именно:
    • опрос состояния физических входов прибора и копирование их значений в ячейки памяти;
    • обработка программы;
    • чтение/запись сетевых переменных программы;
    • запись результатов работы программы в физические выходы прибора.
    По умолчанию время цикла равно 1 мс. Прибор подстраивает время цикла в зависимости от сложности программы.>>

    По-этому, возможно, по тайм-ауту в программу идёт или предыдущее значение или значение "по-умолчанию"

  7. #7
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    12,049

    По умолчанию

    чтение/запись сетевых переменных программы; это не одно и то же, что передать эти переменные по протоколу.

    Цикл чтения/записи Modbus не зависит от самой программы.

  8. #8

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    чтение/запись сетевых переменных программы; это не одно и то же, что передать эти переменные по протоколу.

    Цикл чтения/записи Modbus не зависит от самой программы.
    Может я неправильно что-то понимаю. Но в документации написано следующее:
    "В процессе разработки алгоритма, когда логика усложняется, то увеличивается время цикла и количество запросов за секунду будет снижаться."

    Соответственно работа по интерфейсу завязана на работу самой программы.

    Собственно в этом то и вопрос, в какой момент "по умолчанию" происходит передача информации из регистров в программу (чтение) и из программы в регистры (запись).
    Ведь не зря есть пункт "запись в конце цикла"

  9. #9
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    12,049

    По умолчанию

    Да не может быть она завязана на работу интерфейса. сами сделайте опрос нескольких переменных при программе X мс, а потом отключите опрос, программа так и будет крутиться X мс
    Запись в конце цикла это другое.

  10. #10

    По умолчанию

    ...и опять начинается ерунда! Проблема в данному случае НЕ в опросе по Modbus.
    Проблема в том, что ШТАТНОГО способа записывать переменную с трёх мест - НЕТ.
    Для этого нужно писать СВОЙ алгоритм. Например, я писал такой для себя в виде взаимоблокировок: если значение изменилось из одного места (например, с панели), то, пока оно везде не запишется, не реагируем на изменения его по Modbus. Условно.
    И рыть надо в эту сторону. А обмануть ПРку или ПЛК в виде "Во! Пока он там ещё Modbus окучивает, я подменю значение, и он его на лету поймает" - не получится.


    melky В ПРках, если программа нагруженная, то время опроса Modbus увеличивается. Проверено лично мной.
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. Порядок исполнения блоков
    от starmos в разделе Среда программирования OWEN Logic
    Ответов: 10
    Последнее сообщение: 28.02.2023, 13:18
  2. Порядок выполнения
    от Anatoly.snjrs в разделе ПЛК2хх
    Ответов: 1
    Последнее сообщение: 25.04.2022, 13:26
  3. OWEN Logic Как изменить порядок выполнения операций
    от FPavel в разделе Программируемые реле
    Ответов: 5
    Последнее сообщение: 01.08.2015, 14:22
  4. Скорость выполнения цикла
    от Vitamin в разделе Master SCADA 3
    Ответов: 3
    Последнее сообщение: 22.01.2015, 15:10
  5. Ответов: 4
    Последнее сообщение: 14.03.2011, 10:30

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

Ваши права

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