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

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

  1. #6571

    По умолчанию

    Цитата Сообщение от 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

    По умолчанию

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

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

  5. #6575

    По умолчанию

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

  6. #6576

    По умолчанию

    Цитата Сообщение от 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 из 893 ПерваяПервая ... 158558608648656657658659660668708758 ... ПоследняяПоследняя

Похожие темы

  1. Панели оператора СП3xx. Вопросы и ответы
    от Мурат Ахриев в разделе СП3хх, СП270
    Ответов: 4209
    Последнее сообщение: 26.08.2026, 16:07
  2. Ответов: 863
    Последнее сообщение: 02.03.2026, 17:13
  3. ИПП120. Вопросы и ответы
    от Р.Александр в разделе Программируемые реле
    Ответов: 273
    Последнее сообщение: 08.09.2025, 13:21
  4. Индикатор ИП120 , вопросы- ответы
    от rovki в разделе Программируемые реле
    Ответов: 56
    Последнее сообщение: 03.11.2017, 15:58
  5. Панели оператора СП270. Вопросы и ответы
    от Давидюк в разделе СП3хх, СП270
    Ответов: 930
    Последнее сообщение: 15.05.2017, 17:12

Ваши права

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