PDA

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



STU
20.08.2018, 20:29
Доброго времени суток!

Сразу скажу - в ПЛК новичок. Делал небольшой проект на ПЛК100, на FB. Есть опыт программирования МК (STM, Microchip) на С.
Сейчас присматриваюсь к СПК, т.к. нужно визуализировать некоторые данные.
Есть ряд вопросов на которые не смог ничего найти поиском:
1. Установил Codesys 3.5 - во встроенной помощи идет описание библиотек CAA в качестве системных, но этих библиотек нет в репозитории. Где их можно взять? Или СПК поддерживает только небольшое количество CAA которые есть в \intern\CAA\.....
2. Где можно найти описание на библитеки \System\Syslibs?
3. Возможно ли в СПК использовать таймеры? Если да то с какой библиотекой?
4. Опять же к вопросу по таймерам - как именно вызывается callback функция, механизм вызова? Функция будет вызываться только в основном цикле или в т.ч. и в системной области программы ПЛК (по аналогии с прерыванимем)?

Прошу прощения если вопросы глупые.

С уважением,
Сергей

Евгений Кислов
21.08.2018, 07:19
Добрый день.

1. Дерево библиотек не очень удобное. Нажмите на эти кнопки - и увидите их все в виде списка:

38416

2. Какие именно библиотеки вас интересуют? Для многих из них вообще нет описания (за исключением встроенного в библиотеку).
3. Да, см. библиотеку Standard (обычно она присутствует в проекте по умолчанию).
4. Таймеры представлены в виде функциональных блоков (объектов). При запуске таймера запоминается значение системного тика и далее при каждом вызове таймера оно сравнивается с текущим. По истечению заданного интервала времени выход таймера Q принимает значение TRUE. Т.е. таймеры - асинхронные, вызываются только в программе пользователя.

Cсылки, которые могут вам помочь:
https://habr.com/post/402315/ (реализация таймеров CODESYS на С - поможет понять их внутреннее устройство)
http://prolog-plc.ru/docs/TimeExperience.pdf (про таймеры - со стр. 20)
http://www.codesys.ru/docs/st_c.pdf (статья "Язык ST для С программиста")

STU
21.08.2018, 17:50
1. Спасибо, так действительно видно.
2. Буду копать.
3.4. Возможно я некорректно сформулировал вопрос. К таймерам из библиотеки стандарт у меня вообще никаких вопросов нет. Я разбираюсь с примером на ST для библиотеки CAA.Timers. В ней как раз на событие регистрируется callback функция. Вообще у меня к этому примеру есть ряд вопросов:
А. объявление переменной CB_Timer - выдает ошибку, при замене на CB.Timer ругаться перестает... Зачем в примере с подчеркиванием сделано объявление?
Б. объявление teError, так же выдает ошибку. Тип TMR.ERROR я найти не смог ни в одной библиотеке, хотя судя по тому же хелпу этот тип должен быть в библиотеке CAA Timer, но этой библиотеки у меня нет.

Дальше пока не копал.


38438

Евгений Кислов
21.08.2018, 17:58
А зачем вам CAA Timers? Какую задачу необходимо решить?

STU
21.08.2018, 18:25
Планировал сделать на нем измеритель частоты сигнала - вызов функции циклический, читаем текущее значение счетчика модуля цифрового ввода, вычитаем предыдущее делим на время таймера получаем частоту. Так то по большому счету можно и TON использовать.
Но ведь и библиотека CAA Timers должна работать, так что для чистоты эксперимента надо разобраться. Ну и судя по первым признакам вызов функции должен происходить строго по срабатыванию таймера, хотя возможно я и ошибаюсь но никакой литературы даже на английском я не нашел.

Евгений Кислов
21.08.2018, 19:18
Вам, по-моему, даже таймер не нужен. Достаточно системного тика:

tVar := TIME(); // значение системного тика в текущем цикле (tVar типа TIME)

По поводу CAA Timer сложно дать комментарии, но то, что в документации много ошибок - это факт.
Этот вопрос не связан с конкретно нашим контроллером. Вы можете запросить информацию у ПК Пролог (http://prolog-plc.ru/contacts) или напрямую у разработчиков CODESYS (https://store.codesys.com/, кнопка My Question справа).

STU
22.08.2018, 17:16
спасибо, буду разбираться

tegs
09.10.2018, 08:28
не буду создавать новую тему спрошу здесь.

если использовать на первом порту самописный DCON, используя CAA Serial, а на втором порту использовать Modbus через мастер Codesys'а , они нормально друг с другом уживаются?

Евгений Кислов
09.10.2018, 08:41
не буду создавать новую тему спрошу здесь.

если использовать на первом порту самописный DCON, используя CAA Serial, а на втором порту использовать Modbus через мастер Codesys'а , они нормально друг с другом уживаются?

Да, порты независимые и друг на друга никак не влияют.