Просмотр полной версии : помогите пожалуйста с codesys 2.3
помогите решить эту простую задачку через ftrig и rtrig, а то я не понимаю, я поснимаю что такое эти триггеры, но прям переделываю постоянно не выходит... 75572
1. Есть специальный раздел по Кодесис https://owen.ru/forum/forumdisplay.php?f=13
2. Нормально диаграмму нарисуйте - не понятно когда включается Q1 (после второго спада Х1?) и когда выключается Q2
Сергей0308
06.05.2024, 08:50
помогите решить эту простую задачку через ftrig и rtrig, а то я не понимаю, я поснимаю что такое эти триггеры, но прям переделываю постоянно не выходит... 75572
Здесь без пояснений никак не обойтись, в смысле, таким состояниям могут соответствовать разные ФБ, в смысле, с разной логикой работы и одними детекторами переднего и заднего фронта здесь не обойтись, в смысле, боюсь и другие элементы понадобятся.
у меня там почему-то не получалось тему создать, чето у меня уже совсем не входит, вот на этом изо по корректней должок быть 75573
на ST, написать нужно, графически я и сам могу, но нужно текстом сделать
Александр Тетенькин
07.06.2024, 16:22
Добрый вечер осваиваю RS-485 и пытаюсь подружить плк110 с ТРМ148 есть хороший пример (*https://owen.ru/product/codesys_v2/example_program Опрос ТРМ148 по протоколу ОВЕН через конфигурацию ПЛК*) с float понятно а вот с переменными int не могу ничего понять, помогите пожалуйста с этим, есть r-S--> она int вызывает запуск или остановку(*0-stop/1-run/2-pause*), какой нужно добавить подэлемент в codesys 2.3 в RS-485 и как его настроить в параметрах модуля чтобы запускать и останавливать с плк.
In_Da_Cher_A
07.06.2024, 16:32
с float понятноотлично. по какому адресу и как вы читаете float?
приведите пример СВОЕЙ конфигурации, которую вы сделали для этого
Александр Тетенькин
07.06.2024, 16:40
Address 8-15 8-каналов при помощи float variable(write) записываю, а считываю float variable(listen) практически идентично примеру
In_Da_Cher_A
07.06.2024, 16:54
так скриншот с конфига сделайте
Александр Тетенькин
07.06.2024, 17:04
так скриншот с конфига сделайте
7636976370
есть только с самого начала
In_Da_Cher_A
07.06.2024, 17:07
у вас вариант с протоколом ОВЕН?
In_Da_Cher_A
07.06.2024, 21:32
ну кроме того, что вы открыли проект в КДС, что вы собственно знаете о КДС и ОВЕН? к ТРМ собственно здесь не имеет отношение - ничего, вам надо учиться работать в КДС и учиться работать в конфигурации, потом это всё равно пригодиться в любой программе, в любом контроллере, принципы примерно одинаковые везде
я не большой специалист по протоколу ОВЕН (кстати, зачем он вам? переходите сразу на Модбас, не тратьте время)
но из опыта работы в кдс, не понимаю, почему вы не сделали Правой кнопкой мыши и не посмотрели - а что вообще вам предлаегает КДС сделать, какие ест ь варианты. И что там мы увидим крмое всякого шлака и флоата? вот это
76374unsigned
более других вариантов КДС и ОВЕН не предлагает. Стринг, тайм, флоат вас я так понимаю пока не интересует
ну вот и добавляйте его, по дороге выясните, что такое unsigned int и с чего его едят, потому что в документации у вас Int.
В итоге, если я правильно понимаю, вы получите вот это
76375возможность выбрать, что вы собираетесь писать и в каком формате чисел
соответсвенно вам надо выбрать нужный формат данных, объвить эту переменную и в своей программе записать/присвоить этой переменной значение 0 - 1 или 2, как это пишут в доках на прибор
вот как то так надо рассуждать и делать
An unsigned integer is a 32-bit datum that encodes a nonnegative integer in the range [0 to 4294967295].
думайте
Александр Тетенькин
11.06.2024, 08:53
ну кроме того, что вы открыли проект в КДС, что вы собственно знаете о КДС и ОВЕН? к ТРМ собственно здесь не имеет отношение - ничего, вам надо учиться работать в КДС и учиться работать в конфигурации, потом это всё равно пригодиться в любой программе, в любом контроллере, принципы примерно одинаковые везде
я не большой специалист по протоколу ОВЕН (кстати, зачем он вам? переходите сразу на Модбас, не тратьте время)
но из опыта работы в кдс, не понимаю, почему вы не сделали Правой кнопкой мыши и не посмотрели - а что вообще вам предлаегает КДС сделать, какие ест ь варианты. И что там мы увидим крмое всякого шлака и флоата? вот это
76374unsigned
более других вариантов КДС и ОВЕН не предлагает. Стринг, тайм, флоат вас я так понимаю пока не интересует
ну вот и добавляйте его, по дороге выясните, что такое unsigned int и с чего его едят, потому что в документации у вас Int.
В итоге, если я правильно понимаю, вы получите вот это
76375возможность выбрать, что вы собираетесь писать и в каком формате чисел
соответсвенно вам надо выбрать нужный формат данных, объвить эту переменную и в своей программе записать/присвоить этой переменной значение 0 - 1 или 2, как это пишут в доках на прибор
вот как то так надо рассуждать и делать
An unsigned integer is a 32-bit datum that encodes a nonnegative integer in the range [0 to 4294967295].
думайте
спасибо, но есть одно но и я не понимаю как ее решить, в примере почему то можно вставить подэлемент в Unsigned variable(write) 2 byte. 8bit и тд.
но почему он не вставляется в новом проекте библиотеки те же 7646476465
In_Da_Cher_A
11.06.2024, 09:06
а что у вас стоит в качестве таргета? и в примере?
библиотеки здесь не при чём.
удалите флоаты, попробуйте сделать с нуля конфигурацию только с одним unsigned
и чисто совет - забейте на протокол овен, начинайте работать с модбасом
Александр Тетенькин
11.06.2024, 09:30
а что у вас стоит в качестве таргета? и в примере?
библиотеки здесь не при чём.
удалите флоаты, попробуйте сделать с нуля конфигурацию только с одним unsigned
и чисто совет - забейте на протокол овен, начинайте работать с модбасом
в таргете плк110_60 в примере плк 100, пробовал удалять и новый создавать почему то всегда одно и тоже, хорошо прислушаюсь вашему совету, пойду искать материал
kondor3000
11.06.2024, 09:45
в таргете плк110_60 в примере плк 100, пробовал удалять и новый создавать почему то всегда одно и тоже, хорошо прислушаюсь вашему совету, пойду искать материал
Если вы меняете таргет ПЛК, то после замены платформы, надо нажать Дополнения / Стандартная конфигурация, вы получите новый чистый таргет, в который надо по новой набить конфигурацию.
И тоже советую перейти на Модбас RTU.
https://owen.ru/forum/showthread.php?t=36330&highlight=%D2%D0%CC148
https://owen.ru/forum/showthread.php?t=35650&highlight=%D2%D0%CC148
Добрый день, помогите пожалуйста решить лабораторную, очень хочется разобраться. 76789
Как сделать в Codesys на CFC функциональный блок выбора последнего изменившиегося значения из двух переменных?
GoodLuck
16.04.2025, 13:07
Как сделать в Codesys на CFC функциональный блок выбора последнего изменившиегося значения из двух переменных?
Как-то так:
Спасибо, но у меня какой то другой MOVE?
83143
ОК, нашел)
kondor3000
16.04.2025, 13:24
Как сделать в Codesys на CFC функциональный блок выбора последнего изменившиегося значения из двух переменных?
Сам блок на ST, код ниже, а ФБ на CFC будет так 83144
FUNCTION_BLOCK SelChgF (* SelChgI SelChgB *)
VAR_INPUT
I1, I2 : REAL ; (* BOOL WORD DWORD *)
END_VAR
VAR_OUTPUT
Q : REAL ; (* BOOL WORD DWORD *)
END_VAR
VAR
I_1, I_2 : REAL ; (* BOOL WORD DWORD *)
END_VAR
__________________________________________
IF I_1 <> I1 THEN
Q:= I1;
ELSIF I_2 <> I2 THEN
Q := I2;
END_IF
I_1 := I1;
I_2 := I2;
CFC - это же квадратики, а не текст как в ST
kondor3000
16.04.2025, 13:39
CFC - это же квадратики, а не текст как в ST
Скрин смотрите, на CFC. На каком языке написан ФБ всё равно, просто копируете текст и вставляете.
Один и тот же блок работает с REAL, BOOL, WORD, DWORD (что напишите)
Спасибо, понял, все получилось.
Опять туплю в CodeSYS после OwenLogic:
83248
Это как, вообще, возможно в CodeSYS?! Почему на выходе И показывает TRUE?
kondor3000
18.04.2025, 09:15
Опять туплю в CodeSYS после OwenLogic:
83248
Это как, вообще, возможно в CodeSYS?!
Очень просто, надо задать Порядок выполнения, По потоку данных, правой кнопкой мыши на холсте. На CFC это важно.
У вас порядок выполнения обратный)))
А так же сделать Очистить всё, Компилировать всё.
Спасибо, в OL с таким не сталкивался, думал все также будет))
kondor3000
18.04.2025, 09:37
Спасибо, в OL с таким не сталкивался, думал все также будет))
Почаще делайте Очистить всё, Компилировать всё и следите за порядком данных. Особенно при изменениях в проекте, схеме.
In_Da_Cher_A
18.04.2025, 10:04
Опять туплю в CodeSYS после OwenLogic:
83248
Это как, вообще, возможно в CodeSYS?! Почему на выходе И показывает TRUE?цифры 67 и 68 означают порядок выполнения - у вас последние блоки выполняются раньше, чем AND, вот и каша получается. Во всех графичных редакторах порядок выполнения слева направо- сверху вниз и далее
In_Da_Cher_A
18.04.2025, 10:05
Опять туплю в CodeSYS после OwenLogic:
83248
Это как, вообще, возможно в CodeSYS?! Почему на выходе И показывает TRUE?цифры 67 и 68 означают порядок выполнения - у вас последние блоки выполняются раньше, чем AND, вот и каша получается. Во всех графичных редакторах порядок выполнения слева направо- сверху вниз и далее
цифры 67 и 68 означают порядок выполнения - у вас последние блоки выполняются раньше, чем AND, вот и каша получается. Во всех графичных редакторах порядок выполнения слева направо- сверху вниз и далее
Ну в кодесисе то как раз можно эту последовательность поменять...
Во всех графичных редакторах порядок выполнения слева направо- сверху вниз и далее
Я это знаю, конечно. Но после OL расслабился как кот после валерьянки. Вы сможете в OL изобразить элемент И который при наличии на входах FALSE на выходе выдает TRUE? Подкинули задачу обязательно для ПЛК (хотя там ПР смотрелось бы совсем изящно) и я наивно решил все сделать по подобию OL. А тут оказывается нечеловеколюбие сплошное :)
kondor3000
18.04.2025, 14:42
Я это знаю, конечно. Но после OL расслабился как кот после валерьянки. Вы сможете в OL изобразить элемент И который при наличии на входах FALSE на выходе выдает TRUE? Подкинули задачу обязательно для ПЛК (хотя там ПР смотрелось бы совсем изящно) и я наивно решил все сделать по подобию OL. А тут оказывается нечеловеколюбие сплошное :)
Это просто нюансы, по сравнению среда 2.3 на голову выше Лоджика. Tут такое можно делать, что ОЛ и не снилось)))
Изучайте ST.
In_Da_Cher_A
18.04.2025, 14:52
Ну в кодесисе то как раз можно эту последовательность поменять...
а зачем? ну нет таких задач для этого плк, чтобы заниматься настолько тонким тюнингом
Это просто нюансы, по сравнению среда 2.3 на голову выше Лоджика. Tут такое можно делать, что ОЛ и не снилось)))
Изучайте ST.
Да я в курсе всего этого. И на ST иногда пишу. Просто в насущных задачах ничего такого не приходится создавать, с чем бы OL не справился. А учитывая стоимость ПЛК, клиенты однозначно выбирают ПР.
Ollema
Вы сможете в OL изобразить элемент И который при наличии на входах FALSE на выходе выдает TRUE?
Их есть у меня.
83393
Ollema
Их есть у меня.
83393
Ну и где??? Смотрите НА ВХОДАХ И ВЫХОДЕ логического элемента И, про что и была речь. Так то можно логику нагородить из чего угодно - это не имеет отношения к моему вопросу.
МихаилГл
28.04.2025, 13:25
Будьте добры, подскажите, как сделать чтобы две переменные, поданные на вход, становились бы равными выходному значению?
Не понятен вопрос... Как могут быть входные переменные равняться выходному значению. Может наоборот?
kondor3000
28.04.2025, 13:27
Будьте добры, подскажите, как сделать чтобы две переменные, поданные на вход, становились бы равными выходному значению?
Обе переменные на входе, должны быть и на выходе.
Обе переменные на входе, должны быть и на выходе.
Не понимаю, так пробовал - не меняется. Наблюдаю сейчас такое:
83516
Одно значение пишу в регистр с панели, второе значение - переменная Retain в ПЛК.
FUNCTION_BLOCK SelCH (* SelChgI SelChgB *)
VAR_INPUT
I1, I2 : WORD ; (* BOOL WORD DWORD *)
END_VAR
VAR_OUTPUT
Q : WORD; (* BOOL WORD DWORD *)
END_VAR
VAR
I_1, I_2 : WORD ; (* BOOL WORD DWORD *)
END_VAR
__________________________________________________ ___
IF I_1 <> I1 THEN
Q:= I1;
ELSIF I_2 <> I2 THEN
Q := I2;
END_IF
I_1 := I1;
I_2 := I2;
Значение T_sh с панели изменить невозможно.
83518
kondor3000
28.04.2025, 13:34
Одно значение пишу в регистр с панели, второе значение - переменная Retain в ПЛК.
На выходе одна, как запишется вторая ? 83517 Читайте внимательно, что я пишу.
Я ж написал, что так тоже пробовал. Выше выложил - невозможно поменять значение.
kondor3000
28.04.2025, 13:41
Я ж написал, что так тоже пробовал. Выше выложил - невозможно поменять значение.
Сделайте пример, как у вас пишется с одним блоком ФБ и выложите.
Почему нет значений при подключении?
83519
kondor3000
28.04.2025, 13:44
Почему нет значений при подключении?
83519
Дважды щёлкните по ФБ, выберите нужный экземпляр и ОК.
\Экземпляров может быть много, и в каждом вы можете посмотреть.
Когда ПЛК в режиме стоп, я могу менять значение регистра:
83521
Как только включаю Старт, переменная принимает значение от Retain и с панели не меняется.
kondor3000
28.04.2025, 13:49
Когда ПЛК в режиме стоп, я могу менять значение регистра:
83521
Как только включаю Старт, переменная принимает значение от Retain и с панели не меняется.
Сказал же выложите пример. Вы скорее всего читаете и записываете в одну переменную в обмене, а читать надо с Input регистров, записывать в Output
Сказал же выложите пример. Вы скорее всего читаете и записываете в одну переменную в обмене, а читать надо с Input регистров, записывать в Output
Панель - мастер TCP. Пишет панель в регистр x4 (чтение и запись). В ПЛК как слейв имеет просто регистры без Input или Output. Я где то ошибаюсь?
kondor3000
28.04.2025, 13:59
Панель - мастер TCP. Пишет панель в регистр x4 (чтение и запись). В ПЛК как слейв имеет просто регистры без Input или Output. Я где то ошибаюсь?
Если ПЛК слейв, то все переменные в слейве Глобальные и Retain,
ФБ вам вообще не нужен, как и записывать в другие Retain переменные.
При первом включении можно сделать инициализацию, так как первый раз будет 0.
Спасибо! Действительно же, вот я перемудрил...
Опять непонятки с этим CodeSYS...
83576
Почему TON не работает? Время не считается при подаче лог.1 на вход.
МихаилГл
30.04.2025, 10:59
Опять непонятки с этим CodeSYS...
83576
Почему TON не работает? Время не считается при подаче лог.1 на вход.
83578
Да вроде работает... В эмуляции...
Переименовал TON1 в TON и все заработало. Чудесы...
МихаилГл
30.04.2025, 11:02
Да и с TON1 работает. Странно...
Опять непонятки с этим CodeSYS...
83576
Почему TON не работает? Время не считается при подаче лог.1 на вход.
Вызывается ли на исполнение программный блок, из которого сделан скрин?
Не вызывается ли ФБ TON1 где-либо ещё?
TON1, 2, 3 это не просто имена, они так должны быть объявлены в переменных, чтобы знать, кому выделять память.
Поставьте два ton с одним именем, и они начнут друг другу мешать.
Наверное, все имена TON должны отличаться в проекте? TON1, TON2, например?
TON1, 2, 3 это не просто имена, они так должны быть объявлены в переменных, чтобы знать, кому выделять память.
Поставьте два ton с одним именем, и они начнут друг другу мешать.
Во, тут я и ступил, оказывается.
МихаилГл
30.04.2025, 11:12
Хотели одним таймером весь проект перекрыть... Бывает. Переходите на ST, я замучился ловить концы блоков мышкой чтоб их соединить...
Хотели одним таймером весь проект перекрыть... Бывает. Переходите на ST, я замучился ловить концы блоков мышкой чтоб их соединить...
Поздно, проект уже практически готов. Хотел по подобию OL быстренько накидать по-привычному ))
Ловля концов - это да, весело. Можно, конечно, масштаб увеличить, только хочется по максимуму поле видеть.
Вот хорошо, что всякие AND, OR не нужно пронумеровывать. Или я ошибаюсь и всё веселье впереди? )))
А триггеры? Триггеры тоже должны разные имена иметь? Блин, где это все написано то? В руководстве ничего подобного не видел.
Ollema, and, or, это функции, под них память выделяется при работе, потом очищается.
А Ton это функциональный блок, под него выделяется постоянная память, так как они хранят промежуточные значения при выполнении программы от цикла к циклу.
В ОЛ, когда вы ставите блок, он автоматом нумеруется, здесь вы объявляете руками, и можете кроме номеров давать осознанные имена. Но если скопировать и не переименовать, можно в программе сделать пару одинаковых и потом ловить глюки, так как они начнут использовать один экземпляр выделенной памяти.
з.ы. свои особенности в общем, привыкайте. Точнее изучайте среду разработки, в которой работаете.
Везде есть нюансы.
Ollema Если ты готов потратить ЧУТОК времени - то вот тебе статья про таймеры и всякие блоки: https://cs-cs.net/funkciya-fun-i-funkcionalniy-blok-fb-codesys-owenlogic
Я как раз писал, чтобы путаницы "Нарисовал квадратик таймера - и он как-то там сам заработал" не было.
В статье есть заголовки, поэтому там можно быстро прокрутить до нужного момента.
Я бы потратил чуток время, пролистал-прочитал - и дальше бы прогал, чтобы избежать базовых ошибок.
Ловля концов - это да, весело.
упрощайте, это довольно просто.
kondor3000
30.04.2025, 14:04
Поздно, проект уже практически готов. Хотел по подобию OL быстренько накидать по-привычному ))
Ловля концов - это да, весело. Можно, конечно, масштаб увеличить, только хочется по максимуму поле видеть.
Вот хорошо, что всякие AND, OR не нужно пронумеровывать. Или я ошибаюсь и всё веселье впереди? )))
А триггеры? Триггеры тоже должны разные имена иметь? Блин, где это все написано то? В руководстве ничего подобного не видел.
Вы проект в ОЛ то откройте, там тоже все TON-ы пронумерованы 1,2,3 и триггеры тоже, просто ОЛ сам их нумерует, при добавлении.
Вы проект в ОЛ то откройте, там тоже все TON-ы пронумерованы 1,2,3 и триггеры тоже, просто ОЛ сам их нумерует, при добавлении.
В OL все нумеруется, по-вашему я все так же и в CodeSYS должен нумеровать, только врукопашную?
Если у меня логические блоки, триггеры одинакового имени, я попал? Вроде работает как нужно.
Ollema Если ты готов потратить ЧУТОК времени - то вот тебе статья про таймеры и всякие блоки: https://cs-cs.net/funkciya-fun-i-funkcionalniy-blok-fb-codesys-owenlogic
Я как раз писал, чтобы путаницы "Нарисовал квадратик таймера - и он как-то там сам заработал" не было.
В статье есть заголовки, поэтому там можно быстро прокрутить до нужного момента.
Я бы потратил чуток время, пролистал-прочитал - и дальше бы прогал, чтобы избежать базовых ошибок.
Спасибо, почитаю.
kondor3000
30.04.2025, 14:46
В OL все нумеруется, по-вашему я все так же и в CodeSYS должен нумеровать, только врукопашную?
Если у меня логические блоки, триггеры одинакового имени, я попал? Вроде работает как нужно.
Чтобы работало правильно, надо нумеровать, иначе попадёте рано или поздно )
Ollema, если на поле два и более fbd а объявлен один, то попали :)
Но в CodeSys есть и ряд других плюшек, недоступных в ОЛ, возможность писать в одну переменную несколько раз в программе, только не забывайте, тут кто последний встал, того и тапки :)
Здравствуйте уважаемые коллеги. Прошу вашей помощи. В Codesys 2.3 никак не получается считать "нормальные" значения со входов модуля МВ110-24.8АС через ПЛК110-24.60.P.L. ПЛК выступает в роли Мастера. МВ110 - слэйв с адресом 32.
К модулю подключены 7 датчиков (что-то по 4-20мА, что-то по 0-10В). Через Овен-конфигуратор М110 вижу все значения на входах (см. фото).
При подключении через конфигурацию Codesys нет ошибки 81. На модуле МВ мигает светодиод RS-485. Добавил и целочисленные значения и с плавающей точкой (из мануала соответствующие адреса регистров взял), но результата нет. Целочисленные что-то показывают, но не меняются. А вещественные - только нули. Значение из регистров с величиной циклического времени измерения тоже 0. Скриншот значений, файл конфигурации МВ и проект Codesys прилагаю.
86265
86266
86267
https://cloud.mail.ru/public/eVcz/6mktA12Ns
Здравствуйте уважаемые коллеги. Прошу вашей помощи. В Codesys 2.3 никак не получается считать "нормальные" значения со входов модуля МВ110-24.8АС через ПЛК110-24.60.P.L. ПЛК выступает в роли Мастера. МВ110 - слэйв с адресом 32.
К модулю подключены 7 датчиков (что-то по 4-20мА, что-то по 0-10В). Через Овен-конфигуратор М110 вижу все значения на входах (см. фото).
При подключении через конфигурацию Codesys нет ошибки 81. На модуле МВ мигает светодиод RS-485. Добавил и целочисленные значения и с плавающей точкой (из мануала соответствующие адреса регистров взял), но результата нет. Целочисленные что-то показывают, но не меняются. А вещественные - только нули. Значение из регистров с величиной циклического времени измерения тоже 0. Скриншот значений, файл конфигурации МВ и проект Codesys прилагаю.
86267
https://cloud.mail.ru/public/eVcz/6mktA12Ns
Вы ничего не напутали? Таблица регистров похожа на модуль 8А, но никак не на модуль 8АС
kondor3000
18.10.2025, 16:49
Здравствуйте уважаемые коллеги. Прошу вашей помощи. В Codesys 2.3 никак не получается считать "нормальные" значения со входов модуля МВ110-24.8АС через ПЛК110-24.60.P.L. ПЛК выступает в роли Мастера. МВ110 - слэйв с адресом 32.
К модулю подключены 7 датчиков (что-то по 4-20мА, что-то по 0-10В). Через Овен-конфигуратор М110 вижу все значения на входах (см. фото).
При подключении через конфигурацию Codesys нет ошибки 81. На модуле МВ мигает светодиод RS-485. Добавил и целочисленные значения и с плавающей точкой (из мануала соответствующие адреса регистров взял), но результата нет. Целочисленные что-то показывают, но не меняются. А вещественные - только нули. Значение из регистров с величиной циклического времени измерения тоже 0. Скриншот значений, файл конфигурации МВ и проект Codesys прилагаю.
У вас модуль МВ110-24.8АС, а читаете регистры модуля МВ110-24.8А
У модуля 8АС, целые начинаются с 256 регистра, а Float с 288
........................
Всем спасибо, действительно пользовался не тем мануалом.
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot