Страница 736 из 747 ПерваяПервая ... 236636686726734735736737738746 ... ПоследняяПоследняя
Показано с 7,351 по 7,360 из 7469

Тема: ВОПРОС-ОТВЕТ (отвечаем на простые вопросы от новичков)

  1. #7351
    Пользователь
    Регистрация
    31.07.2013
    Адрес
    Аркаим
    Сообщений
    687

    По умолчанию

    sasav
    Как делаю я в случае ненулевых значений первоначальных уставок. Панель мастер, ПЛК слейв. В ПЛК пишу проверку требуемых регистров на ноль. В случае если таки ноль, то присваиваю безопасное значение из допустимого диапазона. Проверка (и присванивание если надо) делается только при старте(включении) ПЛК и на работу остальной программы далее не влияет. Очень удобно при отладке. И выручало на ПЛК110 старой серии, где ретайны сваливались, если в ПЛК помирал аккумулятор.

  2. #7352
    Пользователь
    Регистрация
    18.11.2019
    Адрес
    Пермь
    Сообщений
    7

    По умолчанию

    Здравствуйте!
    Совсем недавно начал изучать синтаксис ST и столкнулся с задачей, с которой не могу разобраться.

    Нужно посчитать время, когда входная переменная INPUT имеет значение FALSE за сутки и сколько раз она принимала значение FALSE.
    То есть: вход INPUT может принимать значение FALSE много раз за сутки, поэтому нужна сумма временных интервалов, когда INPUT имел значение FALSE и количество значений FALSE, которые будут обнуляться в заданное время (например, в 9:00 ежедневно).

  3. #7353
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,263

    По умолчанию

    Цитата Сообщение от Minarion Посмотреть сообщение
    Здравствуйте!
    Совсем недавно начал изучать синтаксис ST и столкнулся с задачей, с которой не могу разобраться.

    Нужно посчитать время, когда входная переменная INPUT имеет значение FALSE за сутки и сколько раз она принимала значение FALSE.
    То есть: вход INPUT может принимать значение FALSE много раз за сутки, поэтому нужна сумма временных интервалов, когда INPUT имел значение FALSE и количество значений FALSE, которые будут обнуляться в заданное время (например, в 9:00 ежедневно).
    Код:
    VAR
    	INPUT: BOOL;
    	Count: UDINT; (*сколько раз она принимала значение FALSE*)
    	SumTimeF: TIME; (*время, когда входная переменная INPUT имеет значение FALSE за сутки*)
    	CountOld: UDINT; (*За предыдущие сутки*)
    	SumTimeOld: TIME; (*За предыдущие сутки*)
    	F_TR: F_TRIG;
    	delta: TIME;	(*Время цикла ПЛК*)
    	t1: TIME;
    	prevScanTime: TIME;
    	ttt: TIME;
    	init: BOOL;
    	TON_24h: TON;
    END_VAR
    
    (*Время цикла ПЛК*)
    t1:=TIME();
    IF NOT init THEN (*Первый цикл*)
    	prevScanTime:=t1;
    	init:=TRUE;
    	Count:= Count + BOOL_TO_INT(NOT INPUT);
    END_IF
    delta := t1 - prevScanTime;
    prevScanTime := t1;
    (*-------------------*)
    
    F_TR(CLK:= INPUT);
    (*Текущие сутки*)
    Count:= Count + BOOL_TO_INT(F_TR.Q);
    IF NOT INPUT THEN
        SumTimeF:= SumTimeF + delta;
    END_IF
    
    TON_24h(IN:= NOT TON_24h.Q , PT:=t#24h);
    (*За предыдущие сутки*)
    IF TON_24h.Q THEN
    	CountOld:= Count;
    	SumTimeOld:= SumTimeF;
    	Count:= 0;
    	SumTimeF:= t#0ms;
    END_IF
    Последний раз редактировалось petera; 19.11.2019 в 19:38.
    26 лет деятельности в области промышленной безопасности

  4. #7354

    По умолчанию

    Здравствуйте! Подскажите пожалуйста правильно ли я адресую (с учетом всех необходимых выравниваний) регистры в модбас. ПЛК160 (слейв), OP320 (мастер), из ПЛК считываю переменные модуля Statistic. Заранее спасибо!
    Вложения Вложения

  5. #7355
    Пользователь
    Регистрация
    31.07.2013
    Адрес
    Аркаим
    Сообщений
    687

    По умолчанию

    Слегка изменил вашу программу. Обратите внимание на переменную temp_m.
    Вложения Вложения

  6. #7356

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение
    TON_24h(IN:= NOT TON_24h.Q , PT:=t#30s);
    PT:=t#30s?

  7. #7357

    По умолчанию

    Цитата Сообщение от Sulfur Посмотреть сообщение
    Слегка изменил вашу программу. Обратите внимание на переменную temp_m.
    Спасибо! А почему надо преобразовать в тип ВОРД? Есть же в режиме слэйв у ПЛК переменная типа ФЛОАТ (Real)? В модуле Statistic переменная температуры тоже REAL?
    Показания к сожалению на ОР320 не выводятся, проверить не могу. Пишет на панели "потеря связи". (как после загрузки конфигурации, так и при соединении по RS485 с ПЛК) Микросхему RS485 и цифровой драйвер к ней пропаял, но не помогло. Что может быть еще?
    P.S.Панель рабочая, работает как мастер так и слейв с ПР200 (хотя после загрузки конфигурации тоже пишет "потеря связи").
    Последний раз редактировалось rts; 19.11.2019 в 18:11.

  8. #7358
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,263

    По умолчанию

    Цитата Сообщение от Andrew_Stranger Посмотреть сообщение
    PT:=t#30s?
    Естественно д.б
    TON_24h(IN:= NOT TON_24h.Q , PT:=t#24h);
    Проверял работу программы и "ускориитель" забыл удалить
    26 лет деятельности в области промышленной безопасности

  9. #7359
    Пользователь
    Регистрация
    31.07.2013
    Адрес
    Аркаим
    Сообщений
    687

    По умолчанию

    rts
    В модуле Statistic переменная температуры тоже REAL
    Да. А перед вывешиванием её в порт для передачи на ОП, она умножается на 10 и преобразуется в ворд.
    А почему надо преобразовать в тип ВОРД?
    Исходя из задачи. В ОП данный регистр отображает один знак после запятой, смысла гнать туда флоат нет. Поэтому я сделал умножение исходных данных на 10, преобразование в ворд (при нем отбрасывается дробная часть), а в ОП отображение инт с дробной частью в один разряд. Т. е. по факту обратное деление на 10 делается в самой панели.
    ---
    На счет потери связи ОП-ПЛК: согласующие резисторы на шине стоят? С обоих концов? Можно еще покрутить Framing time в настройках порта ПЛК. Где нибудь до 20-50 мс вместо дефолтного нуля.
    Последний раз редактировалось Sulfur; 20.11.2019 в 07:50.

  10. #7360

    По умолчанию

    Цитата Сообщение от Sulfur Посмотреть сообщение

    Да. А перед вывешиванием её в порт для передачи на ОП, она умножается на 10 и преобразуется в ворд.

    Исходя из задачи. В ОП данный регистр отображает один знак после запятой, смысла гнать туда флоат нет. Поэтому я сделал умножение исходных данных на 10, преобразование в ворд (при нем отбрасывается дробная часть), а в ОП отображение инт с дробной частью в один разряд. Т. е. по факту обратное деление на 10 делается в самой панели.
    Хорошо. Полезная информация буду иметь ввиду.
    На счет потери связи ОП-ПЛК: согласующие резисторы на шине стоят? С обоих концов? Можно еще покрутить Framing time в настройках порта ПЛК. Где нибудь до 20-50 мс вместо дефолтного нуля.
    Согласующих резисторов нет, но до этого и без них потери связи не было. Просто в один момент стала (панель) писать про потерю связи. Но попробую повесить резисторы и проверить. Framing time посмотрю только как доберусь до ПЛК.
    Спасибо за помощь, Sulfur. Отпишусь по результатам.

Страница 736 из 747 ПерваяПервая ... 236636686726734735736737738746 ... ПоследняяПоследняя

Метки этой темы

Ваши права

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