PDA

Просмотр полной версии : Библиотека SysLibSem



rim776
15.04.2019, 08:15
Доброго дня коллеги. Прошу совета по работе с библиотекой SysLibSem.
Не могу найти описание, как с ней работать. Делаю многозадачный проект в CoDeSys 2.3.
При отладке компилятор выдает ошибку Конкурентный доступ к переменным. В поисках решения нашел документ Петрова И.В.
"Отладка прикладных ПЛК программ в CoDeSys (часть 10). В нем есть упоминание на эту библиотеку и документ с описанием. К сожалению поиск в инете описания результатов не дал. Подскажите пожалуйста, если кто применял её в своих проектах, как с ней работать, и будет ли работать в ПЛК 160?

rim776
15.04.2019, 11:09
CoDeSys 2.3, ПЛК 160М от Овена. Есть необходимость применения семафора для организации поочередного доступа задач к определенным переменным.
Для понимания. С блока МВ110 ТД1 по протоколу Modbus показания тензодатчика пишутся в переменную ves_tenzo. С этой переменной работают два модуля.
1. Модуль измерения веса (Vesomer) - запускается с периодом 500мс. Модуль счета поданного сырья (Schetchik)- запускается с периодом 30 секунд. При компиляции проекта компилятор выдает ошибку Vesomer - ves_tenzo %ID7.6.0.0 Доступ только по чтению, Schetchik - ves_tenzo %ID7.6.0.0 Доступ только по чтению.
42283
Как можно организовать поочередный доступ к этой переменной?

Филоненко Владислав
15.04.2019, 11:30
SysLibSem в ПЛК с 2-м Кодесисом не поддержана. Доступ из 2-х задач всегда будет по очереди, т.к. задачи работают в режиме кооперативной многозадачности

rim776
15.04.2019, 11:53
Владислав, по многозадачности изучал статью Петров И.В., Вагнер Р., Долл В. "Отладка прикладных ПЛК программ в CoDeSys" http://www.codesys.ru/pb1 часть 10. На странице 3-4 описываются виды многозадачности Кооперативная (почему-то названная Ккорпоративной) и Вытесняющая, и как их использовать. А на 4 странице указано, что ...Вытесняющая многозадачность реализована в ПЛК с CoDeSys, выполенных на базе 32-х разрядных процессоров с многозадачной ОС. Проясните, пожалуйста, ПЛК160М не относится к таковым?

rim776
15.04.2019, 12:00
в чем подвох? обе задачи как близнецы, читают одну переменную и пишут опять же в одну переменную

Виноват, ошибся с картинкой. 42285

rim776
15.04.2019, 13:55
Во вложении мой файл.

capzap
15.04.2019, 14:04
найдите разницу

rim776
15.04.2019, 14:17
:) Нашел разницу. Всего-то нужно было перенести одну переменную в глобальные и потом с ней работать... Спасибо большое за подсказку! Удачного дня!

Филоненко Владислав
15.04.2019, 20:42
Владислав, по многозадачности изучал статью Петров И.В., Вагнер Р., Долл В. "Отладка прикладных ПЛК программ в CoDeSys" http://www.codesys.ru/pb1 часть 10. На странице 3-4 описываются виды многозадачности Кооперативная (почему-то названная Ккорпоративной) и Вытесняющая, и как их использовать. А на 4 странице указано, что ...Вытесняющая многозадачность реализована в ПЛК с CoDeSys, выполенных на базе 32-х разрядных процессоров с многозадачной ОС. Проясните, пожалуйста, ПЛК160М не относится к таковым?

Тов. Петров тут допустил неточность. На ПЛК с 3-м Кодесисом - вытесняющая, со 2-м - кооперативная. А разрядность процессора вообще побоку.
Это что касается продукции ОВЕН. У других производителей свои особенности.

rim776
16.04.2019, 07:55
Благодарю за разъяснения!