Страница 335 из 1052 ПерваяПервая ... 235285325333334335336337345385435835 ... ПоследняяПоследняя
Показано с 3,341 по 3,350 из 10512

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

  1. #3341

    По умолчанию

    Братцы.... СПАСИБО БОЛЬШОЕ!!!! Есть теперь с чем поработать!!!

  2. #3342

    По умолчанию

    Нужна помощь!
    Есть переменная типа REAL, которая изменяется со временем по определенному закону, по происшествии заданного интервала времени сбрасывается в 0 и вновь меняется.
    Требуется каждую минуту записывать значение этой переменной так, чтобы после сброса на ноль сохранилась последняя запись.
    Как это реализовать?

  3. #3343

    По умолчанию

    Это должна быть одна переменная или массив из переменных после каждого сброса на ноль?
    если одна переменная то можно так:
    t1(in:=TRUE, pt:=T#60s);

    IF t1.Q AND a1<>0 THEN
    b1:=a1;
    t1(in:=FALSE);
    ELSIF a1=0 AND fl THEN
    c1:=b1;
    fl:=FALSE;
    END_IF

    где a1 - заданная переменная типа real, b1 - переменная типа real, в которую записывается значения каждую минуту, t1 - таймер TON, с1 - переменная типа real, в которую записывается последнее значение перед сбросом на ноль переменной a1, fl - флаг, по которому происходит запись в переменную c1, используется если необходимо сохранить только первое значение перед сбросом на ноль, при объявлении fl:bool:=true;, если необходимо сохранить последнее значение, то не используйте этот флаг, удалите соответствующие строки.

    если нужно записать массив значений, то как-то так:
    t1(in:=TRUE, pt:=T#60s);

    IF t1.Q AND a1<>0 THEN
    b1:=a1;
    t1(in:=FALSE);
    ELSIF a1=0 THEN
    ar[i]:=b1;
    i:=i+1;
    ELSIF i=11 THEN
    i:=0;
    END_IF

    где a1 - заданная переменная типа real, b1 - переменная типа real, в которую записывается значения каждую минуту, t1 - таймер TON, ar - массив из переменных типа real, в которые записывается последнее значение перед сбросом на ноль переменной a1, i - указатель на элемент массива при записи.

  4. #3344
    Пользователь
    Регистрация
    19.12.2014
    Адрес
    нижний новгород
    Сообщений
    228

    По умолчанию

    при написании программы блоки переименовываются только в ручную хотя должен быть ассистент ввода подскажите как его установить?

  5. #3345
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

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

  6. #3346
    Пользователь
    Регистрация
    19.12.2014
    Адрес
    нижний новгород
    Сообщений
    228

    По умолчанию

    спасибо вот то что надо задача была установленный блок переименовать

  7. #3347

    По умолчанию

    Добрый день. Изучаю в свободное время плк110-60 и кодесис естественно.
    Купили модули аналогового ввода/вывода му110-8и и мв110-8а.
    Согласно РЭ и видео из интернетов подключил и настроил, но работает у меня только AI, на AO не моргает индикатор rs485? обмена нет.
    Идея простая, на 1 вход подцеплен пт100, его показания читаются и в программе видны, дальше хочу вывести с 1 выхода на ИТП1 сигнал.

    Программу приложил. Прошу помощи, что нет так.

    ps в конфигурации плк? где я добавил модбас мастер попеременно моргают оба нужных мне адреса (last adress) 15 и 16. last error 81

  8. #3348
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,731

    По умолчанию

    acs.ufk - Почему у вас на выходе REAL ?, у 8И по РЭ INT16 от 0 до 1000, единица измерения в % 0,1%, следователь 1000*0,1 = 100%
    И не обязательно вбивать регистры в виде 0000, достаточно 0.

  9. #3349

    По умолчанию

    Цитата Сообщение от Гарчев Евгений Посмотреть сообщение
    Это должна быть одна переменная или массив из переменных после каждого сброса на ноль?
    если одна переменная то можно так:
    t1(in:=TRUE, pt:=T#60s);

    IF t1.Q AND a1<>0 THEN
    b1:=a1;
    t1(in:=FALSE);
    ELSIF a1=0 AND fl THEN
    c1:=b1;
    fl:=FALSE;
    END_IF

    где a1 - заданная переменная типа real, b1 - переменная типа real, в которую записывается значения каждую минуту, t1 - таймер TON, с1 - переменная типа real, в которую записывается последнее значение перед сбросом на ноль переменной a1, fl - флаг, по которому происходит запись в переменную c1, используется если необходимо сохранить только первое значение перед сбросом на ноль, при объявлении fl:bool:=true;, если необходимо сохранить последнее значение, то не используйте этот флаг, удалите соответствующие строки.

    если нужно записать массив значений, то как-то так:
    t1(in:=TRUE, pt:=T#60s);

    IF t1.Q AND a1<>0 THEN
    b1:=a1;
    t1(in:=FALSE);
    ELSIF a1=0 THEN
    ar[i]:=b1;
    i:=i+1;
    ELSIF i=11 THEN
    i:=0;
    END_IF

    где a1 - заданная переменная типа real, b1 - переменная типа real, в которую записывается значения каждую минуту, t1 - таймер TON, ar - массив из переменных типа real, в которые записывается последнее значение перед сбросом на ноль переменной a1, i - указатель на элемент массива при записи.
    Это как раз то что нужно,спасибо большое!!!!!
    Правда я в CFC делаю эту задачку,но все равно очень помог!

  10. #3350

    По умолчанию

    Всем привет!
    После выполнения арифметических действий результат имеет дробное значение с пятью знаками после запятой. Каким образом убрать дробные значения??? Программирование ведётся на CFC. Спасибо!

Страница 335 из 1052 ПерваяПервая ... 235285325333334335336337345385435835 ... ПоследняяПоследняя

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

Ваши права

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