Страница 658 из 859 ПерваяПервая ... 158558608648656657658659660668708758 ... ПоследняяПоследняя
Показано с 6,571 по 6,580 из 8582

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

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

    По умолчанию

    Цитата Сообщение от sssssaaaaabbbbb Посмотреть сообщение
    Здравствуйте коллеги, вопрос такой: на ПЛК210 на дискретных входах висят сигналы(у меня аварийные), мне их нужно протестировать, как они в программе работают. Сигналы на TRUE, если я их фиксирую на FALSE, то через случайное время от 2 до 20 секунд они переходят на TRUE и потом опять на FALSE. Подскажите это нормально? Наверное через какое то количество циклов происходит самопроизвольный переход?Вложение 72141
    Добрый день. Это не нормально.
    Выложите простейший проект, в котором у меня получится это воспроизвести - тогда можно будет дать какие-то комментарии.

  2. #6572

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Добрый день. Это не нормально.
    Выложите простейший проект, в котором у меня получится это воспроизвести - тогда можно будет дать какие-то комментарии.
    Попозже, пока на объекте работы веду

  3. #6573

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Откуда вы берёте вообще входы? С какого модуля ? Сколько модулей?

    Чтобы потом поместить их в структуру
    ANALOG_SENSOR_VALUE
    rValue REAL Измеренное значение
    uiCycleTime UINT Циклическое время
    eStatus ANALOG_SENSOR_ERRORS Код статуса входа
    Входы с AI модулей MB210-101. Их в сети этого плк 5 штук. то есть до 40 сигналов. по факту скорее всего 27. Просто вентмашины на разных этажах поэтому отдельные модули.


    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    1) Нет, так не получится. В состав TEMP_POINT входят только поля ANALOG_SENSOR_VALUE, а не ее экземпляр.
    2) Как вам удобнее. Вы лучше знаете особенности своей задачи - если в целом проект не особо большой, то можно оставить одну структуру и объявлять ее экземпляры как PERSISTENT. Задать начальные значения полям структуры в этом случае можно.
    Евгений, благодарю.
    То есть при наличии всего 40 сигналов структуры можно целиком можно объявлять в Persistent, включая оперативные сигналы - заначения датчиков и ошибок?

    но объявлять их можно только так

    stPoolWaterTempSp: TEMP_POINT_SETTINGS; (*Уставка температуры воды в бассейне*)
    stPoolWaterTempSp.rSetPoint: REAL :=28;
    stPoolWaterTempSp.rHysteresys: REAL :=0.5;
    stPoolWaterTempSp.rAlarmLimitHi: REAL :=30;
    stPoolWaterTempSp.rAlarmLimitLo: REAL :=26;

    "короткое" объявление работать не будет?

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

    По умолчанию

    То есть при наличии всего 40 сигналов структуры можно целиком можно объявлять в Persistent, включая оперативные сигналы - заначения датчиков и ошибок?
    В PERSISTANT можно объявлять всё, что угодно, пока там хватает места (всего под RETAIN и PERSISTANT суммарно выделено чуть меньше 64 Кб).

    "короткое" объявление работать не будет?
    Что вы называете "коротким" объявлением?

  5. #6575

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Добрый день. Это не нормально.
    Выложите простейший проект, в котором у меня получится это воспроизвести - тогда можно будет дать какие-то комментарии.
    Да, действительно, сделал простой проект с этими же переменными и сбоев нет. Но не может же моя программа сама по себе фиксацию отменять на один цикл программы. Фиксация в приоритете наверное. Можете что то посоветовать?

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

    По умолчанию

    Цитата Сообщение от sssssaaaaabbbbb Посмотреть сообщение
    Но не может же моя программа...
    Может.

    Цитата Сообщение от sssssaaaaabbbbb Посмотреть сообщение
    Можете что то посоветовать?
    Пошагово добавлять в "пустой проект без сбоев" фрагменты вашего исходного проекта. После добавления каждого фрагмента - запускать проект и проверять, не проявится ли проблема. После проявления проблемы - проанализировать последний из добавленных фрагментов на наличие ошибок.

  7. #6577

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    В PERSISTANT можно объявлять всё, что угодно, пока там хватает места (всего под RETAIN и PERSISTANT суммарно выделено чуть меньше 64 Кб).



    Что вы называете "коротким" объявлением?
    Спасибо.

    Видимо перепутал с объявлениями массивов, когда поэлементно можно передавать начальные значения в строку, без необходимости писать каждый раз полное название структуры и элемента в ней.


    Но не смог разобраться как передавать начальные значения

    Сделал так:

    Создал структуру:

    Код:
    TYPE CYCLE_TIMER :
    STRUCT
    		xEnable:			BOOL;		(*Разрешение на работу*)
    		todStartTime:		TOD;			(*Время начала цикла*)
    		usiDuration:		USINT;		(*Длительность цикла*)	
    		byDaysEnabled:		BYTE;		(*Дни включения цикла*)
    		usiDurationMin:		USINT;		(*Минимальная длительность цикла*)
    		usiDurationMax:		USINT;		(*Максимальная длительность цикла*)
    		tStopTime:		TIME;		(*Время окончания работы блока*)
    END_STRUCT
    END_TYPE
    Объявил её в PersistentVars и передал ей начальные значения:
    Код:
    		stWaterSypplyTimer:					CYCLE_TIMER;				(**)
    		stWaterSypplyTimer.todStartTime:		TOD		:=TOD#1:00:00;	(*Время начала цикла водоподготовки*)
    		stWaterSypplyTimer.usiDuration:			USINT	:=10;			(*Длительность цикла водоподготовки в часах*)
    		stWaterSypplyTimer.xEnable:			BOOL	:=TRUE;			(*Разрешение на работу цикла водоподготовки*)
    		stWaterSypplyTimer.byDaysEnabled:		BYTE	:=2#0111_1111;		(*Дни включения цикла водоподготовки младший бит понедельник старший воскресенье*)
    		stWaterSypplyTimer.usiDurationMin:		USINT	:=1;
    		stWaterSypplyTimer.usiDurationMax:		USINT	:=22;
    В итоге кодсис ругается:

    Код:
                    ------ Компиляция : Приложение: Device.Application -------
                    типизировать код...
    [WARNING]       PLC200: Менеджер библиотек [Device: Plc Logic: Application]: C0100:  Библиотека CmpTargetVisu не добавлена в Менеджер библиотек, либо не найдено корректной лицензии
    [WARNING]       PLC200: PersistentVars [Device: Plc Logic: Application](Строка 34): C0373:  Неиспользуемый путь экземпляра stPoolWaterTempSp.rSetPoint: переменная используется как плейсхолдер
    [WARNING]       PLC200: PersistentVars [Device: Plc Logic: Application](Строка 35): C0373:  Неиспользуемый путь экземпляра stPoolWaterTempSp.rHysteresys: переменная используется как плейсхолдер
    [WARNING]       PLC200: PersistentVars [Device: Plc Logic: Application](Строка 36): C0373:  Неиспользуемый путь экземпляра stPoolWaterTempSp.rAlarmLimitHi: переменная используется как плейсхолдер
    [WARNING]       PLC200: PersistentVars [Device: Plc Logic: Application](Строка 37): C0373:  Неиспользуемый путь экземпляра stPoolWaterTempSp.rAlarmLimitLo: переменная используется как плейсхолдер
    [WARNING]       PLC200: PersistentVars [Device: Plc Logic: Application](Строка 6): C0373:  Неиспользуемый путь экземпляра stWaterSypplyTimer.todStartTime: переменная используется как плейсхолдер
    [WARNING]       PLC200: PersistentVars [Device: Plc Logic: Application](Строка 7): C0373:  Неиспользуемый путь экземпляра stWaterSypplyTimer.usiDuration: переменная используется как плейсхолдер
    [WARNING]       PLC200: PersistentVars [Device: Plc Logic: Application](Строка 8): C0373:  Неиспользуемый путь экземпляра stWaterSypplyTimer.xEnable: переменная используется как плейсхолдер
    [WARNING]       PLC200: PersistentVars [Device: Plc Logic: Application](Строка 9): C0373:  Неиспользуемый путь экземпляра stWaterSypplyTimer.byDaysEnabled: переменная используется как плейсхолдер
    [WARNING]       PLC200: PersistentVars [Device: Plc Logic: Application](Строка 10): C0373:  Неиспользуемый путь экземпляра stWaterSypplyTimer.usiDurationMin: переменная используется как плейсхолдер
    [WARNING]       PLC200: PersistentVars [Device: Plc Logic: Application](Строка 11): C0373:  Неиспользуемый путь экземпляра stWaterSypplyTimer.usiDurationMax: переменная используется как плейсхолдер
    [WARNING]       PLC200: PersistentVars [Device: Plc Logic: Application](Строка 21): C0373:  Неиспользуемый путь экземпляра stPoolFilterBackwashTimer.xEnable: переменная используется как плейсхолдер
    [WARNING]       PLC200: PersistentVars [Device: Plc Logic: Application](Строка 22): C0373:  Неиспользуемый путь экземпляра stPoolFilterBackwashTimer.todStartTime: переменная используется как плейсхолдер
    [WARNING]       PLC200: PersistentVars [Device: Plc Logic: Application](Строка 23): C0373:  Неиспользуемый путь экземпляра stPoolFilterBackwashTimer.usiDuration: переменная используется как плейсхолдер
    [WARNING]       PLC200: PersistentVars [Device: Plc Logic: Application](Строка 24): C0373:  Неиспользуемый путь экземпляра stPoolFilterBackwashTimer.byDaysEnabled: переменная используется как плейсхолдер
    [WARNING]       PLC200: PersistentVars [Device: Plc Logic: Application](Строка 25): C0373:  Неиспользуемый путь экземпляра stPoolFilterBackwashTimer.usiDurationMin: переменная используется как плейсхолдер
    [WARNING]       PLC200: PersistentVars [Device: Plc Logic: Application](Строка 26): C0373:  Неиспользуемый путь экземпляра stPoolFilterBackwashTimer.usiDurationMax: переменная используется как плейсхолдер
    Не понимаю, как тогда правильно передавать начальные значения для элементов структуры?

    Заранее спасибо.

  8. #6578

    По умолчанию

    Можешь это сделать в коде программы...
    If xxx=false then
    ...
    xxx:=true
    Endif

  9. #6579

    По умолчанию

    Цитата Сообщение от МихаилГл Посмотреть сообщение
    Можешь это сделать в коде программы...
    If xxx=false then
    ...
    xxx:=true
    Endif
    xInit?

    Просто не хотелось это в код пихать - POU несколько, хотелось держать всё в одном месте. Или элементам скруктуры можно передавать значения только из кода?

  10. #6580

    По умолчанию

    Цитата Сообщение от beatitas Посмотреть сообщение
    xInit?

    Просто не хотелось это в код пихать - POU несколько, хотелось держать всё в одном месте. Или элементам скруктуры можно передавать значения только из кода?
    Вроде можно в самой структуре... Правда я не уверен.

    Но если это возможно, то тогда не сможешь другой переменной с данной структурой присвоить другие значения по умолчанию.

    А во вторых сто мешает создать pou, которая запускается один раз. Код тот же, только там свою pou втыкаешь, а в самой pou всё переменные по умолчанию пишешь. Но если надо именно persistent, то придётся и её воткнуть туда...
    Последний раз редактировалось МихаилГл; 06.12.2023 в 17:16.

Страница 658 из 859 ПерваяПервая ... 158558608648656657658659660668708758 ... ПоследняяПоследняя

Похожие темы

  1. Панели оператора СП3xx. Вопросы и ответы
    от Мурат Ахриев в разделе Панели оператора (HMI)
    Ответов: 4059
    Последнее сообщение: Сегодня, 14:17
  2. Панели оператора ИП320. Вопросы и ответы
    от automat в разделе Панели оператора (HMI)
    Ответов: 861
    Последнее сообщение: 31.12.2025, 23:19
  3. ИПП120. Вопросы и ответы
    от Р.Александр в разделе Программируемые реле
    Ответов: 273
    Последнее сообщение: 08.09.2025, 13:21
  4. Индикатор ИП120 , вопросы- ответы
    от rovki в разделе Программируемые реле
    Ответов: 56
    Последнее сообщение: 03.11.2017, 15:58
  5. Панели оператора СП270. Вопросы и ответы
    от Давидюк в разделе Панели оператора (HMI)
    Ответов: 930
    Последнее сообщение: 15.05.2017, 17:12

Ваши права

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