Добрый день.
В выделенном поле нет.
Можно в событиях выше (например, OnMouseClick) выбрать действие Выполнить ST-код и реализовать это в нём.
Вид для печати
Еще вопрос. После старта ПЛК, в календаре стоит текущая дата (см скриншот). А переменная, привязанная к календарю, хранит в себе запись "01.01.1970". Как сделать так, чтобы после включения ПЛК, переменная принимала текущую дату ?
Потому что присваивание надо выполнять в области кода, а не в области объявления.
См. здесь:
https://www.owen.ru/forum/showthread...l=1#post304642
Я еще раз обдумал вашу задачу - и, предполагаю, проще будет сделать вот так (в коде программы):
Вложение 68430
Добрый день.
Возвращаясь к вопросу работы блока "APID_POS_VALV" с ручной настройкой ПИД параметров. При испытании на объекте, ФБ стоит в закрытом положении и регулирования не происходит.
Запись в ФБ происходит с панели по нажатию.
Вложение 68432
Вложение 68433
Возможно, что для записи в ФБ необходимо все-таки активировать автонастройку?
Нет, такое требование не подразумевалось.Цитата:
Возможно, что для записи в ФБ необходимо все-таки активировать автонастройку?
Если запустить пример с нашего сайта - то в нем регулирование происходит?
К сожалению, на объекте попробовать ваш пример будет несколько проблематично и не в ближайшее время.
Возможно пойти по обратному пути и прислать программу вам?
Да, отправьте ее на support@owen.ru. В письме приложите ссылку на изначальный пост с описанием вашей проблемы.
ФБ DIG_Fltr как он работает что будет если на вход PB ничего не подавать
Как полосовой фильтр.Цитата:
как он работает
https://en.wikipedia.org/wiki/Band-pass_filter
Из документации:Цитата:
что будет если на вход PB ничего не подавать
Т. е. если оставить PB = 0, то при фильтрации будет учитываться каждое измеренное значение (в т. ч. "выбросы").Код:PB - полоса фильтра, задается в единицах регулируемой величины. Эта полоса защищает измерительный тракт от импульсных помех –
если текущее показание сильно отличается от предыдущего измеренного (более чем на значение полосы), то оно игнорируется и учитывается только следующее измерение.
Подскажите, как очистить историю тревог из кода программы. (CodeSys 3.5)
Пример который есть в справке не работает. Компилятор ругается на AlarmConfigurationCount,GetAlarmConfiguration и ClearHistory
================================================== ===================
// очистка истории тревог из кода программы
VAR
itfAlarmConfiguration : AlarmManager.IAlarmConfiguration;
itfAlarmConfiguration7 : AlarmManager.IAlarmConfiguration7;
END_VAR
FOR i := 0 TO AlarmGlobals.g_AlarmHandler.AlarmConfigurationCoun t - 1 DO
itfAlarmConfiguration := AlarmGlobals.g_AlarmHandler.GetAlarmConfiguration( i);
IF __QUERYINTERFACE(itfAlarmConfiguration, itfAlarmConfiguration7) THEN
// сохраняем в журнале текущие тревоги
itfAlarmConfiguration7.ClearHistory(xKeepActiveAla rms := TRUE);
END_IF
END_FOR
================================================== ===================
Startup profile: .................................................. ............. CODESYS V3.5 SP16 Patch 3
OS version: .................................................. .................. Microsoft Windows NT 10.0.19044.0
.NET version: .................................................. ................ 4.0.30319.42000
Будет, если перепрошить его.
Внимательно ознакомьтесь с информацией по обеим ссылкам:
https://owen.ru/forum/showthread.php...l=1#post389836
https://owen.ru/forum/showthread.php?t=36852
Раньше видел но сейчас не могу найти. Как скачать тревоги с СПК Codesys 3.5 SP17 и чем их можно просмотреть на компьютере.
Штатный способ (требующий подключение к контроллеру из CODESY) описан здесь:
https://youtu.be/LlLMSElG59I?t=352
Если такой вариант не подходит - то, например, можно использовать компонент OwenArchiver (который будет работать параллельно конфигурации тревог):
https://youtu.be/rpwvyahHevw
Здравствуйте. Столкнулся с проблемой. На нажатие кнопки привязано изменение состояния переменной plc_prg.xSendCommand:=TRUE; на отправку запроса
в коде plc_prg прописано:
fb_Rtrig(CLK:=xSendCommand);
fb_SE3(xExecute:=xSendCommand, sCommand:=zapros);
IF fb_SE3.xDone THEN
xSendCommand:=FALSE;
xStatSave:=TRUE; // откл анимацию
В переменной string "zapros" прописывается команда на запуск bash скрипта (скрипт рабочий, команда на запуск работает при отправке из Putty и создается файл с данными из базы sql). При отправке команды с помощью функционального блока на плк - на флешке не создается файл с выгрузкой из базы sql.
код команды из "zapros"
zapros:='bash dir.sh';
zapros:=CONCAT((zapros),' ');
zapros:=CONCAT((zapros),TO_STRING("'"));
zapros:=CONCAT((zapros),StartDateStr);
zapros:=CONCAT((zapros),TO_STRING("'"));
zapros:=CONCAT((zapros),' ');
zapros:=CONCAT((zapros),TO_STRING("'"));
zapros:=CONCAT((zapros),EndDateStr);
zapros:=CONCAT((zapros),TO_STRING("'"));
zapros:=CONCAT((zapros),TO_STRING(' '));
zapros:=CONCAT((zapros),TO_STRING("'"));
zapros:=CONCAT((zapros),TO_STRING(StartTime));
zapros:=CONCAT((zapros),TO_STRING("'"));
zapros:=CONCAT((zapros),' ');
zapros:=CONCAT((zapros),TO_STRING("'"));
zapros:=CONCAT((zapros),TO_STRING(EndTime));
zapros:=CONCAT((zapros),TO_STRING("'"));
zapros:=CONCAT((zapros),TO_STRING(' '));
zapros:=CONCAT((zapros),TO_STRING(60));
конечный вид при отладке: 'bash dir.sh '28.06.2023' '29.06.2023' '08:45:50' '10:45:50' 60'
одинарные кавычки в середине запроса не нужно менять на двойные ?
скрипт dir.sh лежит в папке root. Создавал файл через WinSCP
Codesys 3.5 SP 17 панель СПК 110(М01). На рабочем объекте словил неприятный глюк. Скопировал тревогу из одной группы в другую сделал логин с онлайн изменением никаких ошибок не было, но вот когда программа загрузилась адреналин у меня скакнул контроллер ушел в стоп с исключением, ладно копия была быстро загрузил и никто не заметил.
Помогло bash /root/dir.sh
Подскажите, в примере по работе с файлами две кнопки "выбрать" и "скачать". А как сделать всё на одну кнопку ? По нажатию одной кнопки чтобы создавался файл (создается сейчас нормально) и сразу выходило окно, для указания места для скачивания его ?
Подскажите пожалуйста как перенести проект на другой компьютер чтобы можно было подключится онлайн без загрузки проекта на СПК
Надо перенести ВСЕ файлы, которые создаёт CodeSys для этого проекта в его папке. Там будут файлы с расширениями вида .compileinfo, .coreinfo и другие. Вот их и надо переносить.
По идее можно выдумать такой алгоритм:
1. На CodeSys создать Архив проекта со всеми-всеми галочками
2. На втором компьютере открыть его с CodeSys и распаковать. Таким образом перенесутся все используемые настройки, библиотеки и таргеты.
3. Затем скопировать ВСЮ папку с проектом и его файлами на второй компьютер.
Вот эти файлы надо все переносить:
Вложение 68551
Добрый день.
Подскажите FDBшку счетчика времени хода клапана, чтобы при открытии счетчик накапливался по времени, а при закрытии уменьшался, при максимальном значении (например 600 секунд) он выдавал выходной сигнал.
Нашел такой только для импульсов, называется CTUD, но мне нужен счетчик именно времени.
Берете системное время ПЛК, по RTrig на флаг движения запоминается время. В конце движения по FTrig ещё раз читаете время и вычитание из него первое. Разницу складываете в переменную с накопленным временем со знаком соответствующим направлению движения. Как-то так.
Здравствуйте, это я сделал, но загвоздка в выборе последнего созданного (после нажатия на кнопку) файла - т.е перед скачиванием нужно же сделать выбор файла. У меня в имени файла пишется текущая дата, время, и период отчета.
Получается на кнопку "создать и скачать" у меня вот такой код:
Программа ST:
Выполнить передачу:Код:plc_prg.xSendCommand:=TRUE;
PLC_PRG.saveTime:=(OSU.DT_TO_STRING_FORMAT(TargetVars.stRtc.dtDateAndTime,PLC_PRG.tFormat));
PLC_PRG.saveDir:='/mnt/ufs/media/mmcblk0p1/Reports/';
PLC_PRG.saveDir:=concat((PLC_PRG.saveDir),TO_STRING(PLC_PRG.saveTime));
PLC_PRG.saveDir:=concat((PLC_PRG.saveDir),TO_STRING('_'));
PLC_PRG.saveDir:=concat((PLC_PRG.saveDir),(PLC_PRG.disf)); // период отчета
PLC_PRG.fbFileListProvider.Initialize
(
stDirectory := '/mnt/ufs/media/mmcblk0p1/Reports/',
stFilter := 'csv(*.csv)|*.csv',
stFileIn := PLC_PRG.saveDir,
wstTitle :="Выбор отчета",
wsButtonOKTitle := "ОК",
bBrowseDirectory:=FALSE,
bTouch:=FALSE
);
Переменная с путем и именем файла PLC_PRG.saveDir (на момент нажатия кнопки т.к в имени дата и время с секундами). Имя файла в "stFileIn" совпадает с фактическим именем созданного файла
Файл генерируется, но окно сохранения на компьютер не появляется