Они не связаны. Это скрин не обрезан. Связан только журнал событий.
Вид для печати
Они не связаны. Это скрин не обрезан. Связан только журнал событий.
С СП270 простых вариантов нет.
Можете попробовать посмотреть этот пример в плане настроек панели:
https://owen.ru/forum/showthread.php...l=1#post358104
добрый день. Создал структуру в которую пишу данные которые беру по модбас с частотника и данные которые требуется для его управления это Старт стоп, задание на регулятор и коэффициента регулятора. И в поле объявления я не могу сразу в структуру записать коэф регулятора и задание, Но если я сделаю их в поле выполнения то их не возможно уже будет поменять из OPC Так как они постоянно буду перезаписываться. Подскажите как сделать что бы были предварительно сконфигурированные параметры с возможность управления по OPC Вложение 57292 Вложение 57293
Добрый день.
Синтаксис инициализации экземпляров структур описан в справке:
https://help.codesys.com/webapp/_cds...ture-variables
Кроме того, если использовать автообъявление (ввести в редакторе кода имя несующествующей переменной и нажать на появившуюся лампочку) - то можно сделать всё тоже самое в графическом конструкторе.
Вложение 57294
Спасибо большое!!
Добрый день, уважаемые,
Прошу совета, как реализовать подсчет значений? Т.е. приходит одно значение, его нужно запомнить, потом к нему прибавить изменившееся значение, пытаюсь посчитать суточный расход. Есть значение порций вот их и надо суммировать. Уже неделю ломаю голову, над простой казалось бы с виду задачей, чувствую, что просто, но по разному перепробовал, не втором или третьем цикле сбивается счётчик. Спасибо.
Вы в ST пишете?
Доброе утро,
Спасибо, всем кто откликнулся!
Пишу в ST. Но теоретически могу использовать FBD.
К сожалению сейчас объем знаний у меня слишком мал, чтобы использовать сложные схемы, только начинаю изучать Codesys.
ST мне показался проще в реализации и понятнее.
Задача в следующем, есть расходомер с которого надо получить объем партии.
В момент начала налива фиксирую значение с сумматора расходомера ( переменная "Х"),
в момент окончания налива снова фиксирую значение (переменная "Y").
Вычитаю разницу и получаю объем партии "Y -X := Total"; (переменная "Total").
Теперь мне нужно подсчитать сумму всех объемов за день.
Т.е. "Total1 + Total2 + ... + Total_N := Itogo;".
Написал вот так: "Itogo := Itogo + Total;"
По моей логике, значение "Itogo" должно с каждым изменением "Total" должно быть больше на величину "Total".
Т.е. на первом шаге "Itogo = 0;" на втором оно уже равно к примеру 2 и т.д.
На бумажке у меня все так и получается, на практике же после второго или третьего цикла, начинает считать неправильно.
Гуглил усердно, но такие задачи практически не встречаются, судя по всему она такая элементарная, что не представляет сложности, но я бьюсь о нее уже вторую неделю и не могу решить. Решение должно быть достаточно простым, мне возможно просто не хватает знаний.
Что вы подразумеваете под словом "фиксирую"? Как именно это происходит в коде?Цитата:
фиксирую значение
Я рекомендую вам создать проект, в котором ввод значений X и Y (и их "фиксацию") можно выполнять вручную и выложить его здесь - тогда можно будет в режиме эмуляции посмотреть, в чем именно у вас проблема.
в момент окончания приема порции и суммируйте итоговую сумму а не только расчитывайте разницу
Как активировать колонку Сообщения 2 как в примере alarm_filter_lat
Вложение 57332ch_example?
ПКМ на любую область таблицы - Добавить столбец сообщения
Вложение 57333
Спасибо, прямо Америку сейчас открыли. В проектах где несколько контроллеров прям сильно его не хватало
Коллеги, после установки CodeSys 3.5 SP16 на рабочий компьютер. CodeSys не дает войти в режим эмуляции. Требует имя пользователя и пароль. Тот же проект на другом ПК в режим эмуляции заходит без проблем. Куда копать? Спасибо
Можно попробовать отключить управление пользователями:
https://youtu.be/9tfm0y_Bwis
По умолчанию логин/пароль - Administrator/Administrator
Вопрос возможно обсуждался, тогда прошу извинить и ткнуть носом. Многопользовательский веб интерфейс. Нужно архивировать действия пользователей, т.е. нажатия кнопок, ввод новых уставок и т.п. Чтобы можно было просмотреть кто именно и когда нажимал на "пимпочку". Как это правильнее реализовать?
Т.е. например на событие OnDialogClosed прописать вызов записи в файл? Извините за еще один дилетантский вопрос, а как определить пользователя отпустившего кнопку или закрывшего диалог? В "Управлении пользователями" каждый пользователь описан индивидуально, со своим логином и паролем.
Лучше в обработчике OnDialogClosed передавать флаг "нужно записать в файл", а собственно запись реализовать уже в программе.
В контексте клиента визуализации доступны системные переменные VisuElems.CurrentUserName и VisuElems.CurrentFullUserName (WSTRING) - их значения можно скопировать в промежуточные переменные в обработчике OnDialogClose и после этого использовать в коде программы.
Либо можно посмотреть пример с IDialogCloseListener, но он может быть более сложным для восприятия:
https://ftp.owen.ru/CoDeSys3/21_Exam...alogST.package
Добрый день, сделал всё (насколько могу видеть) как указано в SPK_SystemTime_v.1.1.pdf, загружаю программу в контроллер но системное время не считывается. Всегда в значении переменной 0, а считываемая дата указана как 1970.1.1 00:00:00
При этом внутреннее время в контроллере синхронизировано с ПК через конфигуратор. Батарейка в ПЛК новая. В самом таргете OwenRTC время соответствует действительному.
Пробовал и через ST и через CFC, также пробовал взять время из таргета OwenRTC, результат всегда один - нули.
Вложение 57396
Вложение 57397
Добрый день.
В эмуляции считать системное время не получится.
OwenRTC будет работать только на реальном контроллере.
Библиотека CAA DTUtil также будет работать на виртуальном контроллере CODESYS Control Win V3:
http://www.owen.ru/forum/showthread....l=1#post296706
Вообще, лучше всегда использовать виртуальный контроллер вместо эмуляции (а если есть реальный ПЛК - то лучше его).
Здравствуйте, есть СПК107-М01. Формирую отчет за сутки о расходе воды с помощью архиватора.
Триггер для записи изначально имел видПоявлялось огромное количество ложных срабатываний. Часы и минуты беру из таргета. Обработка триггера запускается в задаче OwenArchiver.Код:R_TRIG_1(CLK:=(hour=0 AND Minute=0) , Q=>Write_Arch_2 );
Добавил дополнительную проверку еще и на секундыСитуация стала лучше, но ложные срабатывания сохранились.Код:R_TRIG_1(CLK:=(hour=0 AND Minute=0 AND second>0) , Q=>Write_Arch_2 );
Вложение 57401
Как я понимаю, в переменных времени имеется какой-то дребезг. Хочется найти надежное решение.
Добрый день.
Используйте этот ФБЦитата:
Хочется найти надежное решение.
https://owen.ru/forum/showthread.php...l=1#post352087
Здравствуйте.
Пытаюсь сделать небольшую программу определения наличия папки на виртуальном контроллере (CODESYS Control Win V3), используя библиотеку CAA File и на основе примеров оттуда.
Работает. Но если я удаляю или создаю директорию "на лету", в проводнике на компьютере, такое впечатление, что программа помнит только то состояние, что было при старте программы. Подскажите пожалуйста, что не так? Хотел сделать нечто вроде DirectoryExists() в Delphi.Код:PROGRAM PLC_PRG
VAR
sDirNewName: CAA.FILENAME:='c:/TestDirectory';
DirectoryOpen: FILE.DirOpen;
uiDirectoryExists: BOOL;
END_VAR
DirectoryOpen.sDirName:=sDirNewName;
DirectoryOpen( xExecute:=TRUE);
IF DirectoryOpen.xDone THEN
uiDirectoryExists := TRUE;
END_IF
IF DirectoryOpen.xError THEN
(* error handling*)
uiDirectoryExists := FALSE;
END_IF
Не совсем понятно как работает автоматический выход в "Управлении пользователями".
И можно ли пользователя "выкинуть" программно?
Работает так: после заданного периода неактивности (отсутствия действий в визуализации) - пользователя автоматически разлогинивает.
Можно.
https://owen.ru/forum/showthread.php...l=1#post295107
Думаю решение будет полезно новичкам (вроде меня):
Проблема заключалась в том, что программа считывания времени не запускалась.
Я решил проблему просто перенеся код считывания времени в код главной программы.
Но можно (и нужно) по другому, ответ лежит в CDSv3.5_Faq_v.2.2.pdf (см. скрин ниже)
Вложение 57439
P.S. Спасибо Евгению за разъяснение
На сколько я понимаю, вовсе не обязательно вызывать программу конфигуратором задач, без необходимости (особенно новичкам), достаточно вызывать подпрограмму из основной PLC_PRG. Или вообще сделать чтение времени функц. блоком и так же вызывать его из программы. И это на мой взгляд, подход гораздо более правильный.
Подскажите пожалуйста, что может быть с ПЛК200-2Вложение 57486
ПЛК зависает в конце загрузки
Вложение 57487
Версия 1.3.0309.1303, таргет 3.5.14.30