Просмотр полной версии : Библиотека SysLibSem
Доброго дня коллеги. Прошу совета по работе с библиотекой SysLibSem.
Не могу найти описание, как с ней работать. Делаю многозадачный проект в CoDeSys 2.3.
При отладке компилятор выдает ошибку Конкурентный доступ к переменным. В поисках решения нашел документ Петрова И.В.
"Отладка прикладных ПЛК программ в CoDeSys (часть 10). В нем есть упоминание на эту библиотеку и документ с описанием. К сожалению поиск в инете описания результатов не дал. Подскажите пожалуйста, если кто применял её в своих проектах, как с ней работать, и будет ли работать в ПЛК 160?
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-х задач всегда будет по очереди, т.к. задачи работают в режиме кооперативной многозадачности
Владислав, по многозадачности изучал статью Петров И.В., Вагнер Р., Долл В. "Отладка прикладных ПЛК программ в CoDeSys" http://www.codesys.ru/pb1 часть 10. На странице 3-4 описываются виды многозадачности Кооперативная (почему-то названная Ккорпоративной) и Вытесняющая, и как их использовать. А на 4 странице указано, что ...Вытесняющая многозадачность реализована в ПЛК с CoDeSys, выполенных на базе 32-х разрядных процессоров с многозадачной ОС. Проясните, пожалуйста, ПЛК160М не относится к таковым?
в чем подвох? обе задачи как близнецы, читают одну переменную и пишут опять же в одну переменную
Виноват, ошибся с картинкой. 42285
:) Нашел разницу. Всего-то нужно было перенести одну переменную в глобальные и потом с ней работать... Спасибо большое за подсказку! Удачного дня!
Филоненко Владислав
15.04.2019, 20:42
Владислав, по многозадачности изучал статью Петров И.В., Вагнер Р., Долл В. "Отладка прикладных ПЛК программ в CoDeSys" http://www.codesys.ru/pb1 часть 10. На странице 3-4 описываются виды многозадачности Кооперативная (почему-то названная Ккорпоративной) и Вытесняющая, и как их использовать. А на 4 странице указано, что ...Вытесняющая многозадачность реализована в ПЛК с CoDeSys, выполенных на базе 32-х разрядных процессоров с многозадачной ОС. Проясните, пожалуйста, ПЛК160М не относится к таковым?
Тов. Петров тут допустил неточность. На ПЛК с 3-м Кодесисом - вытесняющая, со 2-м - кооперативная. А разрядность процессора вообще побоку.
Это что касается продукции ОВЕН. У других производителей свои особенности.
Благодарю за разъяснения!
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot