Страница 355 из 708 ПерваяПервая ... 255305345353354355356357365405455 ... ПоследняяПоследняя
Показано с 3,541 по 3,550 из 7072

Тема: CODESYS V3.5. Вопросы и ответы

  1. #3541
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,142

    По умолчанию

    Цитата Сообщение от Pronto72 Посмотреть сообщение
    Т.е. например на событие OnDialogClosed прописать вызов записи в файл? Извините за еще один дилетантский вопрос, а как определить пользователя отпустившего кнопку или закрывшего диалог? В "Управлении пользователями" каждый пользователь описан индивидуально, со своим логином и паролем.
    Лучше в обработчике OnDialogClosed передавать флаг "нужно записать в файл", а собственно запись реализовать уже в программе.
    В контексте клиента визуализации доступны системные переменные VisuElems.CurrentUserName и VisuElems.CurrentFullUserName (WSTRING) - их значения можно скопировать в промежуточные переменные в обработчике OnDialogClose и после этого использовать в коде программы.

    Либо можно посмотреть пример с IDialogCloseListener, но он может быть более сложным для восприятия:
    https://ftp.owen.ru/CoDeSys3/21_Exam...alogST.package

  2. #3542
    Пользователь
    Регистрация
    31.01.2019
    Адрес
    РФ/РБ
    Сообщений
    917

    По умолчанию

    Цитата Сообщение от bogger Посмотреть сообщение
    Для фиксации постоянно изменяющегося значения в данный момент времени,
    я использую функциональный блок "SH" из библиотеки Oscat Basic.
    Он позволяет по сигналу фиксировать значение постоянно изменяющейся переменной.


    Хорошо, сделаю. Спасибо!
    Ваша задача реализована алгоритмом "Дозатор". Почитайте, вариантов много. Могу свою реализацию в ST привести.

    Просто присваивание в ST - вы написали в сообщении ниже. Вы знали, судя по всему это изначально.

  3. #3543

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Правильно ли я понял, что вы говорите о конструкции типа:

    Код:
    IF условия THEN
    
    считать системное время
    если системное время считано и равно (или больше/меньше/не равно) заданному, то сбросить ФБ и выполнить нужные действия
    
    END_IF
    Если речь об этом - то вы пытаетесь заставить блок выполняться по уровню, но, как уже упоминалось, он запускается по фронту.
    Т.е. просто вызывайте его в стиле:

    Код:
    // выносим запуск ФБ за пределы IF ... END_IF
    dtugt(xExecute:=( условие1 AND условие 2 и т.д.) );
    
    IF dtugt.xDone
    // забираем dtDateAndTime
    END_IF
    Еще раз уточню, что забирать время с выхода блока можно только в тот цикл, когда xDone=TRUE (т.е. блок успешно завершил работу).
    Добрый день, сделал всё (насколько могу видеть) как указано в SPK_SystemTime_v.1.1.pdf, загружаю программу в контроллер но системное время не считывается. Всегда в значении переменной 0, а считываемая дата указана как 1970.1.1 00:00:00
    При этом внутреннее время в контроллере синхронизировано с ПК через конфигуратор. Батарейка в ПЛК новая. В самом таргете OwenRTC время соответствует действительному.
    Пробовал и через ST и через CFC, также пробовал взять время из таргета OwenRTC, результат всегда один - нули.

    Безымянный.png
    Безымянный2.png
    Вложения Вложения

  4. #3544
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,142

    По умолчанию

    Цитата Сообщение от Havingworld Посмотреть сообщение
    Добрый день, сделал всё (насколько могу видеть) как указано в SPK_SystemTime_v.1.1.pdf, загружаю программу в контроллер но системное время не считывается. Всегда в значении переменной 0, а считываемая дата указана как 1970.1.1 00:00:00
    При этом внутреннее время в контроллере синхронизировано с ПК через конфигуратор. Батарейка в ПЛК новая. В самом таргете OwenRTC время соответствует действительному.
    Пробовал и через ST и через CFC, также пробовал взять время из таргета OwenRTC, результат всегда один - нули.

    Безымянный.png
    Безымянный2.png
    Добрый день.
    В эмуляции считать системное время не получится.
    OwenRTC будет работать только на реальном контроллере.
    Библиотека CAA DTUtil также будет работать на виртуальном контроллере CODESYS Control Win V3:
    http://www.owen.ru/forum/showthread....l=1#post296706

    Вообще, лучше всегда использовать виртуальный контроллер вместо эмуляции (а если есть реальный ПЛК - то лучше его).

  5. #3545

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Добрый день.
    В эмуляции считать системное время не получится.
    OwenRTC будет работать только на реальном контроллере.
    Библиотека CAA DTUtil также будет работать на виртуальном контроллере CODESYS Control Win V3:
    http://www.owen.ru/forum/showthread....l=1#post296706

    Вообще, лучше всегда использовать виртуальный контроллер вместо эмуляции (а если есть реальный ПЛК - то лучше его).
    На реальном ПЛК ситуация точно такая-же, в данный момент времени нет доступа к ПЛК, сделаю скрины позже.

  6. #3546
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,142

    По умолчанию

    Цитата Сообщение от Havingworld Посмотреть сообщение
    На реальном ПЛК ситуация точно такая-же, в данный момент времени нет доступа к ПЛК, сделаю скрины позже.
    Лучше предоставьте удаленный доступ к ПК, с которого можно подключиться к ПЛК - так будет проще вам помочь.

  7. #3547
    Пользователь Аватар для Солнечный заяц
    Регистрация
    16.08.2009
    Адрес
    г. Рыбинск, Яр.обл.
    Сообщений
    209

    По умолчанию

    Здравствуйте, есть СПК107-М01. Формирую отчет за сутки о расходе воды с помощью архиватора.
    Триггер для записи изначально имел вид
    Код:
    R_TRIG_1(CLK:=(hour=0 AND Minute=0) , Q=>Write_Arch_2 );
    Появлялось огромное количество ложных срабатываний. Часы и минуты беру из таргета. Обработка триггера запускается в задаче OwenArchiver.
    Добавил дополнительную проверку еще и на секунды
    Код:
    R_TRIG_1(CLK:=(hour=0 AND Minute=0 AND second>0) , Q=>Write_Arch_2 );
    Ситуация стала лучше, но ложные срабатывания сохранились.
    3.PNG
    Как я понимаю, в переменных времени имеется какой-то дребезг. Хочется найти надежное решение.

  8. #3548

  9. #3549
    Пользователь Аватар для Солнечный заяц
    Регистрация
    16.08.2009
    Адрес
    г. Рыбинск, Яр.обл.
    Сообщений
    209

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Используйте этот ФБ
    https://owen.ru/forum/showthread.php...l=1#post352087
    Спасибо! Это все объясняет.

  10. #3550

    По умолчанию

    Здравствуйте.
    Пытаюсь сделать небольшую программу определения наличия папки на виртуальном контроллере (CODESYS Control Win V3), используя библиотеку CAA File и на основе примеров оттуда.
    Код:
    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
    Работает. Но если я удаляю или создаю директорию "на лету", в проводнике на компьютере, такое впечатление, что программа помнит только то состояние, что было при старте программы. Подскажите пожалуйста, что не так? Хотел сделать нечто вроде DirectoryExists() в Delphi.

Страница 355 из 708 ПерваяПервая ... 255305345353354355356357365405455 ... ПоследняяПоследняя

Похожие темы

  1. Панели оператора СП3xx. Вопросы и ответы
    от Мурат Ахриев в разделе Панели оператора (HMI)
    Ответов: 3193
    Последнее сообщение: 15.04.2024, 12:51
  2. Панели оператора ИП320. Вопросы и ответы
    от automat в разделе Панели оператора (HMI)
    Ответов: 822
    Последнее сообщение: 20.11.2023, 17:48
  3. ИПП120. Вопросы и ответы
    от Р.Александр в разделе Программируемые реле
    Ответов: 245
    Последнее сообщение: 02.10.2022, 11:34
  4. Индикатор ИП120 , вопросы- ответы
    от rovki в разделе Программируемые реле
    Ответов: 56
    Последнее сообщение: 03.11.2017, 15:58
  5. Панели оператора СП270. Вопросы и ответы
    от Давидюк в разделе Панели оператора (HMI)
    Ответов: 930
    Последнее сообщение: 15.05.2017, 17:12

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •