RV9WFJ , спасибо за ответ, но в конфигураторе для плк-73 не удается вставить модуль modbus-slave , подменю неактивно(, а если плк100-150, то там все получается
Вложение 48387 Вложение 48385
Вид для печати
RV9WFJ , спасибо за ответ, но в конфигураторе для плк-73 не удается вставить модуль modbus-slave , подменю неактивно(, а если плк100-150, то там все получается
Вложение 48387 Вложение 48385
Вложение 48392
Вложение 48393
10 символов
Спасибо все пошло как надо!
Всем добрый день!
В общем только начал изучать Cоdesys3.5 Столкнулся с таким недоразумением. Не могу создать связь между блоками FBD. Мануалы пишут, что соединение доступно через ctrl>, но нефига не работает. Или тут так не работает и можно соединить только через метки?
Вложение 48561
Должна же быть похожесть, ;) использование старых идей, которые удобны, не? Или каждый раз новые костыли нужно изобретать?
ок! А что по поводу вопроса? В старой версии Codesys 2 вроде можно было это сделать, что изменилось?
Вложение 48565
Да основной пример, на который ориентируюсь на CFC. Думал на FBD так же должно работать.:(
после Сименса приходиться "жестко":) перестраиваться. Это верно. Но в целом логика она везде похожа, за исключением некоторых нюансов, из за которых порой приходиться перелопачивать кучу мануалов и форумов.
В общем плюнул и переделал все под CFC -он более гибче.
Добрый день!
Столкнулся с не удобностью, на Windows 10 установлен CoDeSys 2.3, в ST при обращении ко входам/выходам функционального блока через точку(<Имя>.<Вход/выход>) и нажатии Enter окно CoDeSys 2.3 становиться неактивным, необходимо заново выделять окно программы.
Подскажите пожалуйста, как можно исправить этот недостаток
ChernovEA
Приведите пример кода, и последовательность действий, приводящим к данной ситуации.
У меня Вин 10 и КДС 2.3, хочу проверить.
Вложение 48608Вложение 48609Вложение 48610Вложение 48611
На Windows 7 с таким не сталкивался
Подтверждаю, глюк имеет место быть. Кроме того, после данных операций у меня и сам КДС сворачивается в трей.
Однако через ассистента ввода такого глюка нет.
Без ввода имени переменной жмем F2 (курсор на поляне программы), выбираем в данном случае "Локальные переменные", далее выбираем нужную точку ввода-вывода, жмем ок.
Вероятно я ранее не замечал, т. к. постоянно пользуюсь ассистентом.
Лично мне CTRL+ПРОБЕЛ показалось неудобным, все свалено в одну кучу, искать нужное тяжело. Я уж буду как-то по старинке - через F2.
Подскажите пожалуйста, как реализовать нечто вроде кнопки SHIFT. Т.е. чтобы активировать выход, необходимо было бы зажать кнопку1 и не отпуская ее, нажать Кнопку2. И чтобы в обратном порядке нажатий ничего не происходило.
Besolov
Вложение 48627
В архиве ФБ, который нужно экспортировать в проект.
Спасибо, работает. Я на ST пытался изображать, но моих знаний пока не хватает.
Besolov
ФБ можно и в основную программу на ST вставлять.
Я тоже из категории "мышепрограммист". Для себя выяснил, что логику проще рисовать в LD, а математику в ST. Пытаться сделать все-в-одном - ну это либо для очень простых проектов, либо для софтомазохистов.Цитата:
на ST пытался изображать, но моих знаний пока не хватает.
В основном в моих проектах PLC_PRG (ST) содержит вызовы других программных блоков, где и происходит собственно обработка задач.
Подскажите пжлста что не так делаю? Пытаюсь на примерах разобраться как читать модуль через бибки Вложение 48630
Угу! Подтверждаю и советую. Иногда написать IF или CASE проще, чем кучу блоков пихать.
Я начинал с блок-схем, а от ST меня тормозило то, что я не умел разные FB вызывать в нём и не понимал, как это работает. Постепенно разобрался - и теперь всякие импульсные реле, таймеры и прочие штучки пишу на ST, а основную программу делаю на CFC, потому что там наглядно видно то, какие аппаратные IO куда привязываются.
Поясните пожалуйста, чтобы из WORD (время в секундах) задать значение для таймера, нужно тупо к миллисекундам привести или как-то красивее можно?
Ага. Я делаю примерно так (если время dwTime в секундах):
tmTime := DWORD_TO_TIME(dwTime * 1000);
А нет ли в КДС чего-нибудь типа #define ?
забахать типа:
#define SEC *1000
#define MIN *1000*60
И забыл спросить, принудительно сбрасываем таймер, записывая ноль в ххх.PT ?
#define нету, но есть VAR CONSTANT
https://help.codesys.com/webapp/_cds...rsion=3.5.15.0
Ага, так. Я себе сделал свои ФБшки таймеров с входом Reset для этого и ещё и с выходом оставшегося времени работы.
Через Constant всё удобно очень. Вплоть до того, что там же ж можно создавать несколько списков переменных.
Вот, чтобы проект был наглядный, можно забахать список переменных типа "VConfig", и в нём красиво понаписать всякие константы и прочие штуки. К примеру, я туда пихаю константы для времён мигалок, определения длинного или двойного нажатия на кнопки: если кого-то не устраивает вшитое время длинного нажатия, то можно одну константу поменять - и вуаля.
знак * в Constant запихнуть не получится.
Знает ли кто как на LD считывать состояния кнопок (ПЛК73)? Поделитесь опытом,пожалуйста
Валенок Это чтобы без магических чисел прогать? Логично, буду юзать.
Дефайны можно пихнуть на весь проект глобально? И куда?
если нужно глобально, то обратите внимание на пользование всеми функцией EXP или подобными, подаете некое значение возвращается так скажем результат вычисления. Плюсы что можно использовать глобально во всем проекте и с наглядностью полный ОК если правильно назвать функцию
Как при объявлении таймера прописать там время?
На эту конструкцию ругается непонятно..
TONair(PT := T#5s) : TON ;
Спс, еще вопрос.
TONair: TON := (IN := in_10, PT := T#5s);
in_10 - дискр. вход ПЛК, объявлен в конфигураторе. Вроде как должен быть BOOL. Компилятор сообщает, что "неверное входное значение".