Здравствуйте. Создаю простенькую программу для проверки в Codesis 2.3 программа видит ошибку, не понимаю что не так?
Вложение 82423
Вид для печати
Здравствуйте. Создаю простенькую программу для проверки в Codesis 2.3 программа видит ошибку, не понимаю что не так?
Вложение 82423
А все библиотеки подключены? Стандартная есть?
Кликал уже, ни чего не показывает.
Конечно библиотеки на месте иначе была бы другая картинка блоков.
Должно быть так Вложение 82424 Не TIME на выходе, а переменная типа TIME.
Да, вы правы, если удалить TIME или объявить ET то ошибка уходит и все работает. Спасибо.
Добрый день!
Требуется мнение компетентных людей по вопросу организации задач ПЛК (Codesys 2.3). В существующей версии программы есть две задачи, работающие циклически, с интервалом 200 мсек каждая (задача №1 отвечает за получение технологических данных и обмен с подчиненными устройствами по Modbus, задача №2 производит расчеты и определяет состояния для подчиненных устройств). Есть предположение что такая организация задач создает неточности в управлении исполнительным механизмом, управляемым по времени его хода. Коротко говоря, контроль времени и работы реализован через сравнение времени активности шага SFC и заданного времени хода. Так как на очередном цикле, при сравнении этих времен, может быть так, что время активности шага на несколько мсек меньше заданного, то соответственно следующая проверка будет в следующем цикле, то есть через 200 мсек. То есть реальное время хода механизма может быть больше на 200 мсек. При заданном времени хода, допустим 2 сек, погрешность в 200 мсек это 10%. Причем это будет накапливающаяся погрешность, на каждом такте управления.
Возможным решением кажется иная организация задач. Задаче №1 устанавливается меньший приоритет, и тип выполнения "свободная". Задача №2 имеет более высокий приоритет, и тип "по событию". В конце выполнения задачи №1 по триггеру запускается выполнение задачи №2, по завершению второй задачи, выполняется первая. Лишних задержек нет, конфликт задач исключен вроде как. Один из незначительных недостатков, как я понимаю, в том, что при запуске выполнения задачи №2, выполнение задачи №1 прерывается, и после выполнения задачи №2, происходит завершение выполнения задачи№1 (по сути просто возврат управления системе ПЛК, то есть это дополнительный цикл, но с очень малым временем цикла).
Есть ли какие-то недостатки в таком решении?
Александр TL;DR =) А почему просто задачам не поставить меньшее время выполнения-то? Например 50 мсек?
И вообще. Почему это не может быть одна задача, внутри которой будет крутиться таймер, который каждые 200 мсек дёргает нужный код?