Давайте! Спс.
Для начала пример с работы с созданием и применением класса. (структуру или запись не является классом).
Ссылка на таймер на форуме СТА:
http://forum.cta.ru/forum_posts.asp?TID=2327
Давайте! Спс.
Для начала пример с работы с созданием и применением класса. (структуру или запись не является классом).
Ссылка на таймер на форуме СТА:
http://forum.cta.ru/forum_posts.asp?TID=2327
А где, собственно, описание проблемы, с которой Вы столкнулись?
"Класс" в ООП = "Фунциональный Блок" в МЭК
Создайте необходимый Вам класс так: Контекстное меню Application -> Add object -> POU и выберите там "FB" и спецификаторы доступа.
Для использования объекта нужно создать экземпляр класса (в терминологии ООП).
В CODESYS это делается просто в секции объявления переменных напишите запись вида
где fb_myclassInst имя экземпляра класса (объекта),Код:fb_myclassInst : MYCLASS;
MYCLASS - имя класса.
Для вызова экземпляра класса без передачи параметров используйте запись вида
При необходимости передачи параметров можно использовать запись, принятую в других ЯПКод:fb_myclassInst();
либо запись, принятую в CODESYS:Код:fb_myclassInst.iInputVar1 := 100;
fb_myclassInst();
iOutValue1 := fb_myclassInst.iOutVar1;
при таких вызовах выполняется код, записанный в теле функционального блока.Код:fb_myclassInst (iInputVar1 := 100, iOutVar1 => iOutValue1);
Если выполнять код циклически (в каждом цикле ПЛК) нет необходимости, и объект должен реализовывать только событийную логику (или событийную логику в дополнение к циклическому выполнению), используйте методы.
Добавить метод просто: контекстное меню ФБ -> Add object -> Method
Для вызова методов ФБ используйте запись вида
где firstMethod - имя методаКод:iResult := fb_myclassInst.firstMethod (100);
"Конструктор" в ООП: метод "fb_Init" в CODESYS
"Деструктор" в ООП: метод "fb_Exit" в CODESYS
Более подробно об этих методах написано в справке CODESYS.
Надеюсь ответил на все вопросы. Если нет - сформулируйте как можно более подробно оставшиеся - я постараюсь помочь.
Раз уж тут про таймеры холиварят я тоже добавлю... У меня 31 объект. мне надо на каждом объекте 5 минут держать двигатель включенным 1 час выключенным, во время когда двигатель выключен поочередно должны включаться насосы 5 минут один потом 5 минут другой. так вот собственно мне городить 31 таймер на двигатель и 31 таймер на насосы. или можно какими-то функциями дропать текущее время плк и сравнивать разницу от уставки если больше чем уставка то выкл (т.е. каждый цикл дропаем время и если разница от начала запуска с текущим больше уставки то что то делаем). по времени реакции не принципиально если там буде погрешность в секунду две. Думаю выдержит ли плк 60+ таймеров или я что-то тоже не догнал в таймерах.
кода не прошу прошу совета.
Пытаюсь понять, т.к. компилятор подчеркивает трудно разобраться. Требуются подключить/заменить на новые библиотеки:
Вложение 25662
Сложно Вам будет. Думаю стоит все-таки последовательно подходить к разработке, раз нахрапом не получается.
Для начала ознакомьтесь с литературой Игоря Петрова: Руководство пользователя по программированию ПЛК в CoDeSys 2.3
В 3.5 по сути осталось то же самое, но расширился функционал и изменился интерфейс. Начните с этой книги, а потом добавляйте уже ООП и прочее.
То, что Вы наблюдаете - указание того, что есть более новые версии библиотек (компилятора и т.д.). В большинстве случаев не стоит их изменять.
Игоря Петрова: Руководство пользователя по программированию ПЛК в CoDeSys 2.3 эту книгу я конечно же читал и знаю.
Вот в проекте tcp304toPC.project (capzap) присутствует создание/ уничтожение объекта. Правда я до конца еще не разобрался в коде. Но считаю, что нужно стремиться к такой записи кода.
В Codesys Функциональный блок можно ли уничтожить и освободить память? Смотрю коды других они используют конструкцию if then,чтобы вывести из работы ФБ. А можно ли вместо этого уничтожить объект, а потом создать?
А лучше пример работы с классом/объектами и динамическом выделением памяти.
Само состояние ФБ сохраняется, поэтому говорить, что "совсем вывели из работы" неправильно.
Грубо говоря, блоку таймера не так важно вызывают ли его на каждом цикле, или через цикл, или вообще раз в секунду.
Рано или поздно он сработает.
А смысл?
В программах ПЛК же заранее известно каким процессом управляем.
Что именно предлагается динамически создавать и уничтожать?
Какой смысл тратить время ПЛК на "создание/удаление", если в конечном итоге насосы на объекте не плодятся почкованием?
А если требуется считать показания теплового и электрических счетчиков на ЦТП раз в месяц? Можно отработать режим тестирования и выгрузить его из памяти. А так все роu находятся в памяти.
Так не марсоход же, в котором нужно после приземления "выгружать из памяти программу полёта, и загружать программу езды по Марсу".
Какой смысл выгружать POU из памяти? Реально упираетесь в их количество? Их, конечно, ограниченное, количество, но выгружать просто ради выгрузки смысла нет.
Хорошо, сформулирую по-другому вопрос. Существует ли возможность в Codesys 2.3 и 3.5 выгрузки из памяти объекта или POU?
Очевидный вопрос - ЗАЧЕМ?
И из какой памяти?
Если взять ПЛК323 или СПК207, то в них Linux стоит. Чтобы использовать OpenVPN требуются ресурсы.Вот и возникает желание писать программу менее требовательной к ресурсам и при каждой возможности высвобождать память.
Объекта - да. Приспичило - изучаем syslibmem.
POU - тут специфично само желаемое действие. А так - с ходу нет. Через анус - можно.
Ну и продолжу - ЗАЧЕМ ? Просто распирает любопытство - кому на реальном плк потребовались его ресурсы в процессе ? Как осторожно предположил vladimirsitnikov - вырос вдруг насос ?
В стандарте IEC 61131-3 без расширений вообще не предусматривается динамическое выделение памяти для чего бы ни было. Полностью статическое всё, и неспроста. Надо раз в месяц опрашивать - ну так и вызывайте этот POU раз в месяц. Никому и ничему он в памяти не мешает.
Так, не за себя прошу, а токмо волею пославшего меня Foton'а
Yegor, Вы ж не будете отрицать удобство работы с динамической памятью в некоторых алгоритмах ?
А отсутствие среди 10-ти заповедей разрешения работы с динамической памятью не является запрещением работы с ней ))
Не буду отрицать, конечно. Кстати рекурсия тоже бывает очень удобна в некоторых алгоритмах (;
Прошу прощения, та как сейчас в системе нет возможности запустить Codesys. Библиотека syslibmem скорее всего закрытая и описания на русском нет?
я не понял к чему это? В обновленном ПЛК110 могут быть 1) схемные 2) программные ошибки. Если производитель бы брал на себя ответственность за ущерб, причиненный из-за сырого прибора, то вопросов нет. А сейчас сталкиваюсь 70-80% готовности прибора и он выходит в продажу. Вот у меня в договоре с заказчиком написано, что я обязан полностью компенсировать ущерб, нанесенный контроллером. Поэтому на моих плечах груз ответственности.
Свои условия я не могу диктовать заказчику - Моэк. Он прописал, если мне не подходит , то я в могу отказаться и остаться без работы.
ПЛК110 применяем (старый)- и считаю рабочей лошадкой.С ПЛК160 меньше опыта- молчу.
Я тут запутался. Один "но Вы не хотите сами разбираться", второй про какую-то рулетку.
Насчет стоимости, то один тепловой пункт около 400 тыс. руб => особо не разбежишься, еще покупать кланы и т.д.
Проблемы из-за "собственноручно написанного кода" возникают из-за не достаточно проработанной документации. Когда разжованы и показаны примеры (как в любом нормальном зарубежном стандарте, кроме наших гостов с двояким пониманием), тот проблемы сводятся к минимуму.
А ведь кто-то не поспевает выпускать актуальную документацию.
Видите ли, документация на ту же syslibmem существует и на русском, вопросы гипотетически могут возникнуть к точности перевода, поэтому легче все же читать англоязычную версию, а она что для зарубежных коллег, что для нас выходит что одинакова. И упоминание каких то гостов, это из разряда что мешает танцору. Если так нужно скачайте на сайте диск с ПО, там обязательно будет и русифицированная версия описания библиотек.
Описание на русском - см. хотя бы хэлп.Цитата:
Библиотека syslibmem скорее всего закрытая и описания на русском не
Закрытая - да. Ну приведите пример забубенных ПЛК где все-все открыто. Хотя зачем ? Смотрите прямо перед собой в 30..50см. Как же вы на энтом работаете-то ?
Ну Вы сами подписались.Цитата:
Вот у меня в договоре с заказчиком написано, что я обязан полностью компенсировать ущерб, нанесенный контроллером. Поэтому на моих плечах груз ответственности.
Оплачиваю полностью ущерб ? Ни вопрос - имею полностью все прибыль с процесса. А не договора.
Никогда не думали про то, зачем что страховщики сначала требования выкатывают ?
Собсно нужно изучать фунционалную схему - что к чему вообще привести может. Смотреть узкие места техпроцесса. Что-то и схемно защитить, а так - какие-то мутные слова.
ПЛК включил механизм кабель к которому не затянули, и два голых фазных провода весело болтались в бочке с керосином - оплачиваем ущерб ? ПЛК ж виноват.
ПЛК включил прямым пуском неслабый насос в закрытый кран и порвал трубу, патаму что Заказчик попросил не ставить реле давления - да на фик нужен, датчик же есть. А гидробак вычеркнули - да нафик, ЧП ж стоит.
ПЛК не подал питание на Н.О. клапан который заливал емкость с гуаном стоящей на венецианском паркете. Клапан предоставил Заказчик - он просто у него был. Перелив - чистили 2 года назад. Уровень контролировали 1 (одним) поплавком за 100р (vs венец.паркет) который придавило кирпичом.
...
Тама тоже хватает двоякости - раз юрист после банкира второй. Не надо ля-ляЦитата:
в любом нормальном зарубежном стандарте, кроме наших гостов с двояким пониманием),
Видимо как только создасца специально отдел жевателей и его содержание упадет на стоимость изделия .. Глубоко имхоЦитата:
Когда разжованы и показаны примеры
Рассмешили. Спички детям не игрушка. Не уверен - не обгоняй.Цитата:
Проблемы из-за "собственноручно написанного кода" возникают из-за не достаточно проработанной документации
Ребята, тут вам не первый канал :)
Я вот какой месяц жду описания регистров Modbus протокола для ТРМ138
1) Предоставьте описание статуса (код ошибки Modbus 0х0002, 0х0007 ...) табл.В.7 РЭ ТРМ138.
2) Есть ли четкое описание регистра "значения температуры" (Modbus 0х0001, 0х0006 ...).
http://www.owen.ru/forum/showthread.php?t=17601
Жду и жду и не пищу :)
SysLibMem_RU.pdf файл нашел на рабочем ПК. Вчера я писал с ноутбука домашнего старого на нем Codesys нет(«Прошу прощения, та как сейчас в системе нет возможности запустить Codesys»), соответственно и описание нашел утром на русском. И нечего было так ругаться.
Разбор полетов:
1) Ну приведите пример забубенных ПЛК где все-все открыто.
Не открыто, а документировано. Посмотрите последний вебинар Овена по ТРМ, станет ясно.
2) Ну Вы сами подписались.
А что я могу навязать свои требования? Я не могу диктовать свои условия в тот период, когда и так работы нет.
3) Насчет техпроцесса, то у нас свои головы есть и они обеспечивают решения.
4) В ПЛК нет якобы проблем, а что тогда за постоянные прошивки. А еще припомню про работу интерфейса RS-485, который на некоторое время останавливается опрос. Конечно они обходятся, ищутся другие пути решения.
5) Ля-ля не для «нормального зарубежного стандарта». Я читаю зарубежные и знаю кто и как пишет наши госты. Скажу, что нашим ребятам, которые сидят в институтах нужны деньги и время и все они приведут в порядок. Сейчас этого нет и пока не светит. И чего вы хотите от этих гостов?
6)Мне нужно страховать свою работу? Люди, которые страхуют свои работы у нас откликнитесь! Будем Вас считать!
7) «Жду и жду». Это Вам к Валенку. У него есть все ответы на ваши вопросы по документации.
когда пишите код ошибки модбас это одно, когда регистр со значением статуса ошибки конкретного устройства это совершенно другое
например здесь смотреть надо http://www.kipshop.ru/CoDeSys/steps/...figuration.pdf раздел В.1. Ошибки датчиков (аналоговых входов), должно соответствовать
в инет Вы выходите с любого компа, для Вас сложности загрузить мегабайтный архив? С этой страницы http://www.owen.ru/catalog/codesys_v2/67395347
На стр.47,48,49 коды ответов устройством по протоколу Modbus. А код 07 не описан, а Вы пишете «Ведомое устройство не может выполнить программную функцию, заданную в запросе» почему?
Вложение 25754
Так это то, что должно отвечать устройство или в реальности будут ответы? Вообще ТРМ138 может посылать ответы с кодами: 01,02,03,04,05,06,07,08? Или только часть из них? Ни в РЭ, ни на wiki ссылок на ТРМ138 нет. Я только могу догадываться и тестировать.
На сайте овена нет утвержденной версии стандарта Modbus, только ссылки без конкретной версии протокола и т.д.
На документе должна быть печать "В работу".
Речь идет, что в реальности может ответить прибор ТРМ138, а не то что должен «по проекту».
Capzap, вы в своих проектах для Мастера делаете полную реализацию протокола Modbus? Или отбираете самое важное?
Изменения и не выполнения протокола Модбас устройствами лучше застраховать:)
Вы ж спрашивали про "открытость"Цитата:
Не открыто, а документировано.
Заработок копейка, высокая вероятность потери миллиона. Это ваш выбор. Зачем такая работа ? Лучше уж без неёЦитата:
А что я могу навязать свои требования? Я не могу диктовать свои условия в тот период, когда и так работы нет.
А-а-а. Вот оно. Типа "чиста программист". Ну тогда так и будете му..охаца.Цитата:
Насчет техпроцесса, то у нас свои головы есть и они обеспечивают решения.
А за убытки из-за некорректных показаний датчиков отвечает специальный датчикмэн ?
Назовите хоть что-нить, где нет проблем (идею, самолет, человека, научную теорию, кладбище, молочную промышленность...)Цитата:
В ПЛК нет якобы проблем, а что тогда за постоянные прошивки.
Интерфейс никогда не останавливает опрос. Чисто программный косяк. Поэтому и обходится через либы.Цитата:
А еще припомню про работу интерфейса RS-485, который на некоторое время останавливается опрос. Конечно они обходятся, ищутся другие пути решения.
Ага, приведут. Тока к моменту приведения возникнут новые обстоятельства не отраженные в гостахЦитата:
Скажу, что нашим ребятам, которые сидят в институтах нужны деньги и время и все они приведут в порядок.
Ну если неуверены - может и нужно..Цитата:
Мне нужно страховать свою работу?
Часть того что знаю - скажу. Но если не знаю - то и говорить не буду.Цитата:
«Жду и жду». Это Вам к Валенку. У него есть все ответы на ваши вопросы по документации.
Кстати - как ООП поживает ?