30 / 1 / 0
Регистрация: 06.03.2015
Сообщений: 27
1

Библиотеки ocat320 под TwinCAT\CoDeSys

20.08.2017, 13:14. Показов 2942. Ответов 12
Метки нет (Все метки)

Всем привет.
Борюсь с контролерами Beckhoff. По сути среда разработки TwinCAT есть тот же самый CoDeSys без каких либо изменений за исключением набора библиотек и компиляторов.
Так случилось что как всегда в срочном порядке пришлось научится писать в ST и SFC. Ну и еще одолеть сами ПЛК.
В общем то с написанием всё нормально на обеих языках. С ПЛК тоже не плохо.
Возникла такая проблема.
Я скачал библиотеки OSCAT которые обозначены на родном сайте как такие которые подходят и для CoDeSys и для TwinCAT моей версии.
Написал небольшую программу в принципе несколько, генератор случайных чисел и различные фильтры. Писал сам умышленно не используя библиотечные, типа потренироваться. Но использовал из библитеки oscat320(пробовал и oscat311, тоже самое) различные тригеры, счетчики, генераторы импульсов. В обшем, в режиме симуляции и пописать попробовал и библиотеку потестировал. Чему впринципе есть причина порадоваться и огромное спасибо ФедосеевПавел.
Но вернувшись из командировки решил попробовать на реальном контроллере. И случилась печаль печальная.
Контролер сконфигурировал, залил пустой проект SFC всё работает, библиотеки необходимые для контроллера и SFC конечно же подключил. Всё работает.
Попробовал подключить oscat320, выдает ошибку при рекомпиляции.
Expression too complex! Use temporary results!
Библиотека очень нужна. Равно как и oscat_network_100 которую еще не тестировал.
Что с этим делать?

На форуме CoDeSys зарегистрироватся не могу почемуто, судя по всему он не работает. Пробовал 2 раза.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.08.2017, 13:14
Ответы с готовыми решениями:

Как вывести Beckhoff TwinCAT 2.9 из деморежима?
Хелп господа! Имеется данная софтина Beckhoff TwinCAT 2.9 установленная в пром ПК, суть вопроса в...

Компиляция библиотеки под ARM11
Компилирую статическую библиотеку c++ для последующего ее включения в с-проект для ARM11...

Компиляция библиотеки libxml под c++
Под libxml есть библиотека xmlwrapp позволяющая работать с libxml под с++. Проблема в ее...

Библиотеки под С++ для реализации SOAP 1.2
Кто может посоветовать библиотеки для SOAP 1.2? Есть есть возможность, то скиньте ссылки на...

12
Модератор
Эксперт по электронике
7697 / 3852 / 1493
Регистрация: 01.02.2015
Сообщений: 11,899
Записей в блоге: 2
20.08.2017, 20:39 2
Сообщение об ошибке появляется вместе с выделением проблемной строки кода.

Чем отличаются пробные проекты от этого? Что изменилось?
0
30 / 1 / 0
Регистрация: 06.03.2015
Сообщений: 27
20.08.2017, 22:51  [ТС] 3
Чем отличаются пробные проекты от этого?
Пробные проекты отличаются тем что делал их без реального контролера, в режиме симуляции.
Что изменилось?
Изменилось то что начал пробовать на реальном контроллере BECHOFF CX8080 укомплектованом портами DI DO по 8 бит каждый. Благо есть живой контроллер в свободном доступе и куча другого хлама к нему, есть еще CX90хх не помню какой но его пока не трогал.
До этого написал пару примитивных программ на ST для живой системы которые успешно интегрированы в один большой проект. Но данные библиотеки не использовал.
Павел огромное спасибо за ответ, но с проблемой уже разобрался.
Опишу суть, чтоб может кто то еще бодатся будет с подобным, а в русскоязычной части интнрнета гугл ничего вменяемого не находит. Нашел на заморских форумах.
В общем суть проблемы в следующем.
Библиотеки oscat311 и oscat320 с контролерами Beckhoff нормально работать не будут никак. С некоторыми типами может будут может нет. В общем это грабли. Как с другими контролерами не знаю. Может через месяцок протестирую на VAGO.
Через пару недель попробую замучить Siemens S-300 они уже лежат но пока мне BECKHOFF нужен.
Суть проблемы в том что с недавних пор BECKHOFF в компилятор всунули какой то контроль регистров. И описания регистров в библиотеках не совпадают с пожеланиями компилятора. Зачастую требуется регистров больше чем есть у контроллера.
Проблема решается тем что необходимо подключать библиотеку oscat_basic_333. Эта библиотека на сайте oscat не позиционируется как заточеная для BECHOFF но работает. Не Знаю как вся, но чуть чуть ее помучал.
Пока всё работает.
Основная проблема с библиотеками думаю в другом. BECKHOFF торгует своими библиотеками. А тут OSCAT на шару раздает.
Прошу прощения за нескромный вопрос А Вы случаем в языке SFC не разбираетесь? А то мучаюсь с тактированием программы и что то толи лыжи не едут толи ПЛК не такой.
1
Модератор
Эксперт по электронике
7697 / 3852 / 1493
Регистрация: 01.02.2015
Сообщений: 11,899
Записей в блоге: 2
21.08.2017, 13:33 4
Давно не пользовался CoDeSys.

Сколько помню, SFC в CoDeSys использовал для структурирования процесса, а не для полноценного программирования. Т.е. "рисовал" процесс на SFC и на любом другом "заполнял" прямоугольники. На диаграмме ещё выставлял условия переходов.

Не очень хорошо помню, но параллельные блоки выполнялись всё равно не параллельно, а последовательно. Порядок уже не помню - или задавался по номеру блока или слева-направо.

Постоянно читал Петрова (книгу, статьи в интернете), справку к CoDeSys.
0
30 / 1 / 0
Регистрация: 06.03.2015
Сообщений: 27
21.08.2017, 18:36  [ТС] 5
Сколько помню, SFC в CoDeSys использовал для структурирования процесса, а не для полноценного программирования. Т.е. "рисовал" процесс на SFC и на любом другом "заполнял" прямоугольники. На диаграмме ещё выставлял условия переходов.
Конечно же я делаю так же само. Пишется куча маленьких программ. Причем разными людьми, я один из их. Дальше всё собирается. Писать блоками не понравилось.
Не очень хорошо помню, но параллельные блоки выполнялись всё равно не параллельно, а последовательно. Порядок уже не помню - или задавался по номеру блока или слева-направо.
Не паралельно. С лева на право. Еще как то приоритеты задаются, не знаю как.
Постоянно читал Петрова (книгу, статьи в интернете), справку к CoDeSys.
Не поверите. Она мне жену начинает заменять.

Суть проблемы в другом. Дела даже не в тактировании. Хотя и это очень важно.
Я либо чего то не понимаю в SFC, либо либо лыжи не едут.
Например: есть емкость которая стоит на тензометрах, в емкость сыплется известь с регулируемой скоростью, из емкости отбирается известь с различной скоростью. Различной в некотором диапазоне. Цель и задача поддержать в емкости примерно одинаковую массу извести.
Можно приладить ПИД или еще каких нибудь ухищирений наделать. Но это не всё.
Таким образом нужно взять сигнал от тензометров, отфильтровать, обсчитать текущую скорость подачи взяв данные от ПЧ конвейера и дать новое задание на ПЧ. Ерунда задача.
Только это не всё. Еще есть в добавок 7 ПЧ, 10ток двигателей включаемых пускателями, куча датчиков и прочьего металлолома электрического.
Если на каждый шаг тратить 10мс то в целом выходит неслабое время.
Как же быть с фильтрацией аналоговых сигналов, как быть с временем реакции на аварию и еще куча как?
Если за цикл выполняется только 1 кусок. Конечно можно сократить время шага? Не факт что на тяжелые шаги требующие длительного времени хватит времени выполнить. Конечно можно пытаться использовать SFC MЭК стандартта. Но там могут возникнуть такие же грабли.
Или например как синхронизировать скоростя вращения 2х двигателей исходя из данных энкодеров закрепленных на этих валах. А там скоростя ойёёй.

Дело даже не в CoDeSys или TwinCATE. Дело в SFC.
0
Почетный модератор
Эксперт по компьютерным сетямЭксперт Windows
28028 / 15756 / 977
Регистрация: 15.09.2009
Сообщений: 67,759
Записей в блоге: 78
21.08.2017, 20:37 6
может я чего то не дочитал, но, цикл PLC включает в себя и чтение входных состояний, и цикл самой ОС ПЛК, и выполнение пользовательской программы, и запись выходных состояний.
а не 10 мС на то, 10 мС на это.
0
30 / 1 / 0
Регистрация: 06.03.2015
Сообщений: 27
21.08.2017, 21:46  [ТС] 7
Не включает.
Точнее включает только не совсем. Или совсем не включает. Мы говорим об SFC. С ST вопросов подобного характера пока не возникает.
Ради эксперимента вчера запустил SFC состоящую из 2х десятков шагов и переходов установленых в TRUE и нормально так себе барабанила по 10мс на шаг. Ставил и 1с барабанила по 1 секунде шаг. Сколько Task установите столько и будет главно чтоб не меньше.
И никаких переменных По одному шагу за цикл. Паралельные шаги не знаю как отслеживать, запустил в визуализации тренд и в шаги добавил примитивные действия с переменными то совсем не одновременно она их обслуживает, а по очереди.
цикл самой ОС ПЛК
я не ковырял и не знаю что там происходит, покрайней мере пока.
и выполнение пользовательской программы
Если она есть. Не обязательно программа есть.
запись выходных состояний
Если они есть, эти состояния.
В любом случае один цикл один шаг. Написано в книгах проверено на практике. Время цикла определено временем TASKa.
TASKов можно создать нескольколько. Пока никак не въеду в этот процес.
0
Модератор
Эксперт по электронике
7697 / 3852 / 1493
Регистрация: 01.02.2015
Сообщений: 11,899
Записей в блоге: 2
21.08.2017, 23:47 8
Общее впечатление, что вы ставите перед собой задачу "реверса" среды исполнения PLC.

Не пойму, зачем устанавливать этот TASK, когда ставится задача максимального быстродействия, а все измерения интервалов внутри программы выполняются таймерами.

Итоговая программа состоит из нескольких "одновременных" процессов. Вместе с чтением, обработкой и записью это образует цикл. Про TASK ничего не помню, т.к. не пользовался. Итого, без TASK, время цикла обусловлено вводом+выводом, а также программой пользователя. Если в самой программе нет задержек в виде циклов for или ожидания событий от прерываний, то она выполняется довольно быстро.
Кроме того, из-за инерции выходных устройств (реле, электроприводов, транспортёров с частотниками) совершенно нет смысла пересчитывать управляющие воздействия на них чаще, чем они могут прореагировать. Значит и пересчёт ПИД регуляторов производится не в каждом программном цикле. Уж не знаю, как это реализовать в CoDeSys, не пробовал, но смысл именно такой.
Ещё - сами АЦП отнюдь не на каждом цикле обновляют показания, значит можно пропустить часть отсчётов для обработки (сглаживания). Тем более, что для регулирования они уже не востребованы.
За счёт этого - контроллер не загружается всеми задачами одновременно.

И это было бы нужно, если бы программа не успевала что-то выполнять.
1
30 / 1 / 0
Регистрация: 06.03.2015
Сообщений: 27
22.08.2017, 17:41  [ТС] 9
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
Общее впечатление, что вы ставите перед собой задачу "реверса" среды исполнения PLC.
Не правильное впечатление.
Только от верху до низу, только с лева на право.
Но если например шаг по событию по IF например ничего не делает то задерживатся в нем не должна программа а дальше и дальше с максимальной скоростью.
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
Не пойму, зачем устанавливать этот TASK
Потому что без TASKа не запускается. Должен быть хотяб один. Перепроверил час назад для очистки совести.
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
Итоговая программа состоит из нескольких "одновременных" процессов
Они одновременны виртуально.
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
Кроме того, из-за инерции выходных устройств (реле, электроприводов, транспортёров с частотниками)
Я не зря привел пример с энкодером и обработкой тензометров. Процесы бывают весьма скоротечны.
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
совершенно нет смысла пересчитывать управляющие воздействия на них чаще, чем они могут прореагировать
Конечно же так. Только не так.
Машина собирает и пакует 250 единиц продукции в минуту(картонных коробок), имеет 3 десятка различных датчиков весьма шустрых, десяток ПЧ и кучу другого электрического металлолома.
Как это всё синхронизировать? Я говорю применительно к SFC.
Вполне разумно бы было по сигналу входного датчика машины. Например по прерыванию выставлять флаг. Как обработать прерывание? Это пример из жизни, просто пример. Их можно приводить десятки где процесы скоротечны.
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
Ещё - сами АЦП отнюдь не на каждом цикле обновляют показания
АЦП живет своей жизнью, это отдельныый стандартный модуль пристегнутый к ПЛК который имеет свой процессор.
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
И это было бы нужно, если бы программа не успевала что-то выполнять.
Применительно к сейчас очень хорошо успевает. Но так как у меня цель и задача одолеть SFC то я решил что это нужно знать досконально. Вот и бодаюсь с быстрыми процессами. С медленными всё в порядке, ровно так как Вы и говорите.

Добавлено через 12 минут
К стати может еще кому будет польза.

В упрощенном SFC траззакцию(переход) в формате <имя шага>.t>T#time выполнить не возможно,<имя программы>.<имя шага>.t>T#time выполнить не возможно, любое сравнение с временем жизни шага не возможно равно как и любое обращение к времени жизни шага, в любой комбинации точек, запятых, скобок и регистров букв.
Как написано во всех книгах и у Петрова тоже, судя по всему авторы друг у друга просто передирают, это возможно.
Только в SFC МЭК. Проверено на практике в режиме симуляции и на живом контроллере.
0
Модератор
Эксперт по электронике
7697 / 3852 / 1493
Регистрация: 01.02.2015
Сообщений: 11,899
Записей в блоге: 2
22.08.2017, 19:22 10
Видимо, CoDeSys для ОВЕН отличается от TwinCAT.
Несколько лет назад собирал на SFC структуру без явного прописывания в "Task configuration". Тем более, что на стр 5 http://www.codesys.ru/docs/iecdeb09.pdf
По умолчанию CoDeSys создает новый проект с единственной программой PLC_PRG, которая неявно
включена в единственную циклическую задачу. Чтобы сделать многозадачный проект, необходимо
использовать конфигуратор задач (Task configuration), расположенный на вкладке ‘Ресурсы’ менеджера
проектов.
Как помню, в CDS для условных переходов между блоками можно было ставить
- логические константы
- логические переменные (глобальные) или выражения с ними
- условие перехода вычислять в программе перехода на одном из предоставляемых языков (стр 177) http://www.kipshop.ru/CoDeSys/... v23_ru.pdf

Кроме того, вспомнил, что требуется оставлять без изменения название POU - PLC_PRG. Иначе программа не будет запускаться. Просто никак не пойму, зачем определять задачи... Перебираю возможные причины.
Миниатюры
Библиотеки ocat320 под TwinCAT\CoDeSys  
0
Почетный модератор
Эксперт по компьютерным сетямЭксперт Windows
28028 / 15756 / 977
Регистрация: 15.09.2009
Сообщений: 67,759
Записей в блоге: 78
22.08.2017, 20:21 11
среду кодесис многие используют со своими дополнениями, например пакдрайв, нынче вроде купленный телемеханникой.
кстати а бекхофф у меня один таки есть.
0
30 / 1 / 0
Регистрация: 06.03.2015
Сообщений: 27
22.08.2017, 21:52  [ТС] 12
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
Видимо, CoDeSys для ОВЕН отличается от TwinCAT.
Внешне никак.
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
Несколько лет назад собирал на SFC структуру без явного прописывания в "Task configuration".
Возможно это обусловлено наличием ОС на борту ПЛК. В BECKHOFе стоит виндовс почиканый. Не знаю в чем причина.
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
Как помню, в CDS для условных переходов между блоками можно было ставить..........
Да всё это можно. Но во первых я написал об другом. Во вторых один шаг = один цикл контроллера, это философия SFC. Но блин как то же программа тактироватся должна.
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
Кроме того, вспомнил, что требуется оставлять без изменения название POU - PLC_PRG
В моем случае хоть VasIA_baTaRejKin. Завтра прикольнусь попробую. Принтскрин выложу без сопровождения текстом. Тяжко с виртуальной клавиатуры писать, на служебной мащине нет кирилицы на кнопках.

Цитата Сообщение от magirus Посмотреть сообщение
кстати а бекхофф у меня один таки есть
Нормальные машинки. К сожалению русскоязычной литературы по им мало в отличие от семёна сименсовича.
Цитата Сообщение от magirus Посмотреть сообщение
среду кодесис многие используют со своими дополнениями
То так есть повсеместно.
0
Почетный модератор
Эксперт по компьютерным сетямЭксперт Windows
28028 / 15756 / 977
Регистрация: 15.09.2009
Сообщений: 67,759
Записей в блоге: 78
23.08.2017, 19:54 13
Цитата Сообщение от Melvin77 Посмотреть сообщение
на служебной мащине нет кирилицы на кнопках.
можете писать на английском.
ну или так http://translit.net/ (не очень желательно, но правил не нарушает.)

Добавлено через 7 минут
Цитата Сообщение от Melvin77 Посмотреть сообщение
Нормальные машинки.
радует что среда там установлена.
так что подключив ЮСБ клаву и мышь можно вполне комфортно используя тачскрин в качестве монитора изменять программу.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.08.2017, 19:54

Библиотеки под LCD сотовых телефонов
Добрый день! Предлагаю выкладывать в этой теме Библиотеки и примеры использование дисплеев от...

Как найти библиотеки на С++ под DirectX?
Почему то в поиске забиваешь типа: Библиотеки под DirectX для программиста. Выпадают только Скачать...

Сборка динамической библиотеки под linux
Всем привет, форумчане! Снова пришел с вопросом, но уже другим. Решил собрать динамическую...

Компиляция библиотеки libwebp под ARM
Здравствуйте! Столкнуля с такой проблемой: Нужно скомпилировать библиотеку libwebp на Linux под...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.