PDA

Просмотр полной версии : Обмен данными между задачами



bezbel
15.05.2014, 12:29
Подскажите, пожалуйста, каким образом организовать корректный обмен данными между циклическими задачами через глобальные переменные? Поясню. Одна задача вычисляет переменные (с разрядностью больше чем слово контроллера) или массив переменных, вторая - использует их для своих вычислений. Как скопировать данные через глобальные переменные исключив возможность их порчи более приоритетной задачей? Я работал раньше с plc Ваших конкурентов, и для их контроллеров в адаптацию Codesys'а была включена специальная библиотека для связи переменных одинакового размера, принадлежащих программам, вызываемых из разных задач. Есть ли что-то аналогичное для Вашей адаптации Codesys?

bmc938
15.05.2014, 12:37
Заведите флаг. Задача, пишущая в переменную, перед началом записи устанавливает флаг, по окончании - сбрасывает. Задача, читающая переменную, перед началом чтения смотрит флаг, если сброшен - можно читать, если установлен - нельзя.

Scream
15.05.2014, 17:37
Заведите флаг. Задача, пишущая в переменную, перед началом записи устанавливает флаг, по окончании - сбрасывает. Задача, читающая переменную, перед началом чтения смотрит флаг, если сброшен - можно читать, если установлен - нельзя.
Всё гениальное - просто!