Страница 356 из 369 ПерваяПервая ... 256306346354355356357358366 ... ПоследняяПоследняя
Показано с 3,551 по 3,560 из 3685

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

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

    По умолчанию

    Здравствуйте, есть СПК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
    Как я понимаю, в переменных времени имеется какой-то дребезг. Хочется найти надежное решение.

  2. #3552

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

    По умолчанию

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

  4. #3554

    По умолчанию

    Здравствуйте.
    Пытаюсь сделать небольшую программу определения наличия папки на виртуальном контроллере (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.

  5. #3555

    По умолчанию

    Не совсем понятно как работает автоматический выход в "Управлении пользователями".
    И можно ли пользователя "выкинуть" программно?

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

    По умолчанию

    Цитата Сообщение от Pronto72 Посмотреть сообщение
    Не совсем понятно как работает автоматический выход в "Управлении пользователями".
    Работает так: после заданного периода неактивности (отсутствию действий в визуализации) - пользователя автоматически разлогинивает.

    Цитата Сообщение от Pronto72 Посмотреть сообщение
    И можно ли пользователя "выкинуть" программно?
    Можно.
    https://owen.ru/forum/showthread.php...l=1#post295107

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

    По умолчанию

    Цитата Сообщение от Selya Посмотреть сообщение
    Здравствуйте.
    Пытаюсь сделать небольшую программу определения наличия папки на виртуальном контроллере (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.
    Судя по коду - вы вызываете ФБ только один раз - при старте ПЛК.
    Блок выполняется по переднему фронту на входе xExecute - т.е. для каждого нового вызова нужно сначала вызвать его с FALSE, а потом с TRUE - и сделать это нужно в разных циклах ПЛК.

  8. #3558

    По умолчанию

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

    Вложение 57396
    Вложение 57397
    Думаю решение будет полезно новичкам (вроде меня):
    Проблема заключалась в том, что программа считывания времени не запускалась.
    Я решил проблему просто перенеся код считывания времени в код главной программы.
    Но можно (и нужно) по другому, ответ лежит в CDSv3.5_Faq_v.2.2.pdf (см. скрин ниже)

    Безымянный.png

    P.S. Спасибо Евгению за разъяснение
    Последний раз редактировалось Havingworld; 14.10.2021 в 03:44.

  9. #3559

    По умолчанию

    Цитата Сообщение от Havingworld Посмотреть сообщение
    Думаю решение будет полезно новичкам (вроде меня):
    Проблема заключалась в том, что программа считывания времени не запускалась.
    Я решил проблему просто перенеся код считывания времени в код главной программы.
    Но можно (и нужно) по другому, ответ лежит в CDSv3.5_Faq_v.2.2.pdf (см. скрин ниже)
    P.S. Спасибо Евгению за разъяснение
    На сколько я понимаю, вовсе не обязательно вызывать программу конфигуратором задач, без необходимости (особенно новичкам), достаточно вызывать подпрограмму из основной PLC_PRG. Или вообще сделать чтение времени функц. блоком и так же вызывать его из программы. И это на мой взгляд, подход гораздо более правильный.
    Последний раз редактировалось kondor3000; 14.10.2021 в 13:24.

  10. #3560

    По умолчанию

    Подскажите пожалуйста, что может быть с ПЛК200-21.jpg

Страница 356 из 369 ПерваяПервая ... 256306346354355356357358366 ... ПоследняяПоследняя

Похожие темы

  1. Панели оператора ИП320. Вопросы и ответы
    от automat в разделе Панели оператора (HMI)
    Ответов: 708
    Последнее сообщение: Сегодня, 03:33
  2. Панели оператора СП3xx. Вопросы и ответы
    от Мурат Ахриев в разделе Панели оператора (HMI)
    Ответов: 2385
    Последнее сообщение: Вчера, 13:40
  3. ИПП120. Вопросы и ответы
    от Р.Александр в разделе Программируемые реле
    Ответов: 224
    Последнее сообщение: 16.01.2022, 18:37
  4. Индикатор ИП120 , вопросы- ответы
    от rovki в разделе Программируемые реле
    Ответов: 56
    Последнее сообщение: 03.11.2017, 15:58
  5. Панели оператора СП270. Вопросы и ответы
    от Давидюк в разделе Панели оператора (HMI)
    Ответов: 930
    Последнее сообщение: 15.05.2017, 17:12

Ваши права

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