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

Тема: Не записываются переменные в CoDeSys

Комбинированный просмотр

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

    По умолчанию Не записываются переменные в CoDeSys

    Здравствуйте! Очередной ламерский вопрос. У меня есть проект, который при запуске что на контроллере, что в эмуляции, странно работает, то есть не работает: входы считываются, но значения из одних переменных не передаются другим, как будто проект не запущен, хотя он запущен. Я уже голову сломал, не могу понять, может, какой-то специальный режим включен?

    Причем действует это избирательно.

    На всякий случай прикладываю файл проекта - особо это видно в POU to_OPC и Valves_alarms.
    Вложения Вложения
    Последний раз редактировалось Juan Esteban; 19.03.2021 в 09:32.

  2. #2

    По умолчанию

    Посредством всяких тыканий выяснил, что не работают только задачи, после определенного приоритета (например, задачи с приоритетом выше 11 выполняются, а остальные нет).

    Проблема решилась переводом всех задач в циклический режим (до этого две были в свободном режиме - видать, перебивали выполнение других задач).

  3. #3

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    .. т.е. отказом от непонятно за каким прикрученым сюда приоритетам. Да еще овер 11 уровней.
    Нет, не так. Приоритеты остались, их в любом случае в конфигураторе задач надо задавать, если он используется - от 0 до 15.

    Под циклическим режимом в данном случае подразумевается выполнение задачи через определенное время - в данном случае через 1 секунду. Свободный режим подразумевает выполнение задачи по кругу без пауз.
    Последний раз редактировалось Juan Esteban; 19.03.2021 в 16:29.

  4. #4

    По умолчанию

    Так приоритеты тасков - это НЕ номер последовательности, по которой они выполняются.
    Это именно приоритет: кто ГЛАВНЕЕ, если выражаться образно. И если окажется так, что ты сказал "вот эта задача главнее, а эта - совсем на 15ом месте" и если "более главная" задача отжирает больше ресурсов и времени - то может быть так, что менее важные задачи вообще не будут работать, потому что ПЛК отдаст время тем, кто главнее.

    Задачами удобнее пользоваться для разделения чего-то по времени. Например, если есть медленные процессы типа "взяли температуру и через секунд 10 как-то там среагировали, потому что пофиг" (например, регулирование отопления в квартире, где медленная реакция прокатит) - то всё это можно вынести в задачу и сказать ей "Выполняйся раз в 500 мсек".
    И, например, если у нас идёт обмен с модулями IO (обработка данных от AI, пересчёт их и что-то такое) - то это мы делаем самым коротким по коду (чтобы быстро выполнялось и не было сложных задач) и говорим "выполняйся раз в 20 мсек".

    А на сами задачи можно повесить несколько вызовов программ, если тебе так нагляднее.

  5. #5

    По умолчанию

    Я ещё допишу. Вот задачи IO - нафига они по секунде стоят? Конечно они не будут работать. Раз в секунду-то...
    Ты путаешь, путаешь очередь выполнения (она пользователю недоступна) и важность выполнения. Раз у тебя стоит Discret_outputs 15ым (самым последним) в очереди, и ещё и раз в секунду - то ПЛК на эту задачу может просто забить и сказать "А, ну нафиг, она не важная, и ещё и раз в секунду - отдам время другим задачам, а этой как придётся".

    Тебе хватит меньше задач:
    * Просто для IO с переменными - самая быстрая (20-30 мсек), высокий приоритет (0-1)
    * Регулирование (для управления чем ты управляешь) - быстрая (50-100 мсек), приоритет чуть ниже IO, но высокий (1-2)
    * Обмен с OPC - медленная (200-500 мсек), приоритет ещё чуть ниже (2-5)
    И всё.

  6. #6

    По умолчанию

    Спасибо за пояснения. По секунде у меня все стоит для простоты: опрос модулей осуществляется с интервалом 1 с (на данном производстве нет необходимости делать это быстрее), поэтому задачи IO, да и остальные тоже нет надобности, как я понимаю делать быстрее, - только контроллер нагружать.

    В данном случае, если интервал запуска у всех задач одинаковый - то их очередь выполнения соответствует порядку заданных приоритетов, ведь так?

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

    По умолчанию

    Цитата Сообщение от Juan Esteban Посмотреть сообщение
    Спасибо за пояснения. По секунде у меня все стоит для простоты: опрос модулей осуществляется с интервалом 1 с (на данном производстве нет необходимости делать это быстрее), поэтому задачи IO, да и остальные тоже нет надобности, как я понимаю делать быстрее, - только контроллер нагружать.

    В данном случае, если интервал запуска у всех задач одинаковый - то их очередь выполнения соответствует порядку заданных приоритетов, ведь так?
    Разве не логично при постановке такого вопроса, записать в главной программе, последовательно, все поу которые сейчас разнесены по задачам?
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  8. #8

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    Разве не логично при постановке такого вопроса, записать в главной программе, последовательно, все поу которые сейчас разнесены по задачам?
    А что, в PLC_PRG можно вызывать другие PRG?

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

    По умолчанию

    Цитата Сообщение от Juan Esteban Посмотреть сообщение
    А что, в PLC_PRG можно вызывать другие PRG?
    пробуйте, ни кто из присутствующих не запрещает
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  10. #10

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    пробуйте, ни кто из присутствующих не запрещает
    Потому и спрашиваю, что не знаю, как это делать. Как вызывать функцию или ФБ - понятно, а PRG - не знаю. Если имеется в виду простое копирование кода из всех PRG в PLC_PRG - то это как-то тупо.

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

Похожие темы

  1. Ответов: 13
    Последнее сообщение: 24.11.2017, 10:42
  2. Ответов: 3
    Последнее сообщение: 19.04.2017, 12:49
  3. ПЛК - переменные в Codesys
    от ioo в разделе ПЛК1хх
    Ответов: 9
    Последнее сообщение: 07.04.2011, 18:51
  4. Переменные в Codesys
    от Дмитрий Артюховский в разделе ПЛК1хх
    Ответов: 8
    Последнее сообщение: 28.03.2008, 13:55
  5. Как в CoDeSys связать переменные с Ип-320
    от незарегистрированный в разделе ПЛК1хх
    Ответов: 2
    Последнее сообщение: 28.02.2008, 07:15

Ваши права

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