нижнее подчеркивание добавте и не запутаетесь и проблема исчезнет
Вид для печати
Коллеги столкнулся с непонятным для меня поведением. Почему на LD вторая цепь сбрасывает выход Q?. Проверил на ST - поведение правильное
Вложение 79502
Вложение 79503
А что не понятно? На LD переменную перезаписывает последняя строка, условия никакого нет. Таймер просто выключен, а на выходе FALSE.
Надо не входом управлять, а поставить MOVE с EN/ ENO и то не факт, что правильно отработает.
На ST не перезаписывает, так как не выполняется 2 условие, то есть схемы не равнозначные.
как нет условия? флаг xAlwaysOFF равен 0. Цепь не проходная
перед таймером стоит условие. и оно не тру. так что никакой логики нет.
не убедили. так же условием является флаг равный 0. где можно прочитать информацию на которую вы опираетесь?
Во вторых первой строчке ld будет соответствовать код на st: q0:=alwaON, а не то что вы написали.
Вот так должен выглядеть ваш код на st... Пишу с телефона, поэтому буду по памяти:
Q0:= allON
TP(in:= allOFF, et:=t#1000)
Q0:=TP.Q
А иф...зен это уже триггеры... Коих в лд у вас не наблюдается.
пока я не проникся. СТ я для проверки был. как будет правильно в ЛД?
а xAlwaysOFF разве не условие для активации таймера?
Вложение 79504
Если у вас правильно получается в СТ, то пишите на нем. Это будет удобнее и компактнее. На ЛД стоит переходить в крайних случаях. В нем тяжело организовывать циклы и прочее, но удобно релейную схему перенести.
Не смогу с телефона показать правильный код, но если вы хотите то, что написали на СТ сами в вопросе, то это как минимум ещё РС триггеры надо рисовать и прочие элементы.
да, присваиваю. но ведь контакт xAlwaysOFF закрыт. и значит присвоение не должно произойти
Нет, вы не правы, присвоение от этого не зависит. Это аналог релейной схемы, т.е. это катушка реле, и питание на неё или едет, или не идёт. Нет сигнала, реле не запитано. Вот на нем и 0. Не сравнивайте эти языки таким способом, это немного не так работает.
PS на языке LD очень нежелательно рисовать несколько выходов типа вашего Q0, он в схеме должен быть один. Вот поэтому вы и запутались. Используя несколько выходов для на самом деле одного выхода вы не найдете концов и ошибок программы. Допустимо ещё несколько set и reset для выхода втыкать, но просто выход должен быть один. И он всегда примет самое последнее значение в коде на LD если их там несколько.
Это аналог релейной схемы, т.е. это катушка реле, и питание на неё или едет, или не идёт. Нет сигнала, реле не запитано. Вот на нем и 0. Не сравнивайте эти языки таким способом, это немного не так работает.
вот теперь понятно. спасибо
Ерунды наговорили, вот скрин с MOVE и всё работает правильно, вообще без подачи питания в обоих шагах Вложение 79510
И сбросится Q0, только после отработки таймера.
Обмотка Q0 это такая же переменная, как и другие.
не рабочий вариант. так как если ОФФ взвести, то Q0 не взведеться
как то так
Вложение 79511
Здравствуйте.
У меня в кодесис 3.5 при двойном нажатии лкм на девайс появляется окно device такого вида
Вложение 79514
вместо такого окна
Вложение 79515
Соответственно мне не доступна вкладка Устройство, а мне надо изменить политику соединения.
Что я делаю не так?
У ТС таймер также взводит Q0 а вы false послали, надо true.
Почему ерунды? Ваш алгоритм как раз более приближен к тому ST, что требовалось. Как я и говорил, нужны были триггеры, что вы и ввели. А также бит выхода set. Но только сброс ТС не описал на ST. Ну а вы на off сброс самовольно без тз прописали.
Там надо вместо false true прописать. Ну и нужен сброс будет.
AND можете убрать и первую линию к нему подходящую, зачем лишний элемент для "и" с линией, на которой всегда есть сигнал.
Но это код на ST будет примерно такой:
TP(in:x1, pt:t#1000ms)
Q0:=x0 or TP.Q
Да, действительно "AND" лишний. Кодесис "AND" автоматом вставил когда выходы соединял.
Добрый день.
Сделайте так: Инструменты - Опции - Редакор устройств - Страница соединения - Упрощенный режим
Вложение 79525
Привет.
1. Создал экземпляр функционального блока IPv4Address из библиотеки Net Base Services Library (NBS):
2. Использую метод SetInitialValue этого функционального блока:Код:myIPAddress : NBS.IPv4Address; // ФБ формирования IP-адреса
Вложение 79536
3. На вход метода подаю строковую константу sServerAdress:
4. Вход этого метода - это реально вход :)Код:VAR CONSTANT
sServerAdress : STRING(15) := 'аа.103.183.98';
END_VAR
Вложение 79537
5. Но получаю предупреждение:
C0389: Для параметра VAR_IN_OUT 'ipAddress' из 'SetInitialValue' в качестве входа требуется переменная с доступом записи. В последующих версиях это будет ошибкой компиляции!
ЧЯДНТ ?
Написано же REFERENCE TO STRING
https://www.youtube.com/watch?v=TWj0o5JgI-A
коллеги ,здравствуйте. у меня вопрос мне нужно на выходе с номероми1331-1334 соотнести real сигнал. в модбас слайве там тип ворд. я сделал объединение (я могу в объединение загнать все 4 переменные? я сделал 2для примера) объявил название объединения на 3ем скрине добавил точку в программу.на странице конф. задал начальный адрес 1331 83 регистр правильно сделал? а что дальше? сомнения в соотношении каналовВложение 79551Вложение 79552Вложение 79553Вложение 79554Вложение 79555
Вам что 68 пустых регистров не хватило? Зачем 100 сделали?
Посчитали не правильно 83*16=1328 бит - начальный
Функция 2WORD_TO_REAL используется сама по себе, без объединения UNION. Если делаете объединение, то функция не нужна.
Соотнесение тоже не правильно.
REAL можно передать вообще без ничего, так же как вы передаёте 70 WORD, вот скрин Вложение 79558
Часть массива WORD, использует массив REAL и передаёт несколько штук, с указанного адреса в середине.
Как обратится к байту переменной WORD? По аналогии с записью у Сименса.Вложение 79556
Добрый день.
Подобный синтаксис появился только в V3.5 SP19.
В более ранних версиях (в частности, в используемой для наших ПЛК V3.5 SP17 Patch 3) можно использовать функции библиотеки CAA Memory: HighByte, LowByte и т. д.
Добрый день. В очередной раз зависает установка Codesys На этапе "install all packages added to the setup". Ранее устанавливал и была такая же проблема, но сносил и чистил реестр и в итоге был успех на раз 4-5. Сейчас никакой способ не помогает) Папку темп чистил, антивирус отключал. Как это победить?) Виндоус 11, Codesys 3.5.17.30.
Здравствуйте. У меня вопрос, -как на CFC сделать суммирование отвесов. Встречался с сумматором на регистре, но не знаю есть что то подобное в CodeSYS.
доброе утро,коллеги.такой вопрос у меня адресное поле начинается с %IW59. получается что для модбаса у меня 0регистр на IW59.если нужен 1331 адрес. я должен с какого считать с нулевой адрес ? можно не указывать на странице конфиг. модбас начальные адреса , а просто сделать подсчет.с 0 адреса умножая на 16 и уже его объявлять или все таки с IW59Вложение 79569у меня начальная нумерация 1331-1334для real переменных показания приборов LT TT PT и продолжение 3197- 3239 для bool переменных показания состояния (есть нет).