Просмотр полной версии : многозадачность в плк63
как устроенна?
каждая нитка работает со своей локальной копией переменной или все общее( если во время работы одной нитки а вклинится другая б, покрутит какие то глобальные переменные, то оставшийся кусок нитки а будет дорабатывать уже с новыми значениями)?
а если с локальной копией, то как потом система разруливает результаты работы двух ниток, которые ее поменяли?
P.s. кстати существует ли какая нибудь стандартная методика взаимодействия ниток?
lara197a
15.09.2010, 09:45
вообще на плк другой принцип обработки программы.
программа крутится циклично:
-проверка состояния входов
- выполнение программы сверзу вниз в порядке в каком она написана
- запись значений выходов
если используются прерывания, то после выполнения подпрограммы, плк вернется к месту прерывания.
исключением составлет случай использования менеджера задач. в этом случае вы произвольно определяете порядок их выполнения
однако плк все равно работает по описаному выше принципу.
...исключением составлет случай использования менеджера задач. в этом случае вы произвольно определяете порядок их выполнения
однако плк все равно работает по описаному выше принципу.
т.е. так
PLC_PRG() (*невидимая функция*)
{
MY_TASK1();
MY_TASK2();
MY_TASK3();
MY_TASK4();
}
Что вроде где то что то видел про вытесняющую многозадачность в CoDeSys, по этому и спрашиваю.
P.S. Кстати а прерывания( мои), callbackи как работают в этом плане?
Малышев Олег
15.09.2010, 10:14
подсказка - ниток в плк63 нет. равно как и иголок. равно как и копий для нитки. почитайте в доке про экземпляры Pou.
задачи запускаются по очереди в порядке приоритетов. для того что бы не боятся вышеуказанных вещей см проект-опции-генератор кода-проверять автоматически (ставьте все опции)
Малышев Олег
15.09.2010, 10:16
Я так понимаю у вас ПЛК63. Callback есть только на ПЛК1х0. Он работает как прерывание.
Филоненко Владислав
15.09.2010, 10:32
суммируя, на всех плк сейчас корпоративная многозадачность.
однако в плк11х при использовании события таймера можно для 1 (одной) задачи сделать вытесняющую многозадачность.
P.s. адресное пространство единое, виртуальная память не используется.
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot