Страница 185 из 1049 ПерваяПервая ... 85135175183184185186187195235285685 ... ПоследняяПоследняя
Показано с 1,841 по 1,850 из 10482

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

  1. #1841
    Пользователь
    Регистрация
    19.11.2011
    Адрес
    г. Белгород
    Сообщений
    357

    По умолчанию

    Hafizov G, по второму вопросу мало информации. Нужно видеть проект.

  2. #1842

    По умолчанию

    запросто,Вложение 9051,суть такова почти в каждом теле программы есть счетчик СТУ, он и приводит в действие тело ШАГА, первый цикл программа проходит, тоесть init - step 6, то по идее в инните дожен произойти сброс всех счетчиков, как я думал, но это не прокатывает, пробовал ставить генератор изменения reseta перед тоже на 2 цикле не замечает.

  3. #1843

    По умолчанию

    или есть возможность предложите код счетчика как в CTU, илискажите можно ли обнулить значение CV? - прога говорит он недоступен для записи, можно ли его сделать доступным?

  4. #1844

    По умолчанию

    Что-то Вы мудрите. Зачем объединять? Почему нельзя просто сравнить значения с модуля? Приведите пример, чего хотите добиться в результате. А то не понятно, что дано, с чем сравнивать, и что в итоге должно получиться?
    Хорошо, а как сравнивать значения с модуля в моменты, когда поочерёдно включаются 1 и 2 входы контроллера. Т.е., мне нужно получить разницу значения модуля ввода при включённых 1 и 2 входах, в зависимости от которой будут включаться два других выхода контроллера. Что-то типа U1 - это необходимое значение модуля ввода при 1 включённом входе, U2 - это при 2 входе. И всё, что мне нужно, это получить разницу значений U1-U2.

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

    По умолчанию

    Цитата Сообщение от Hafizov G Посмотреть сообщение
    запросто,Вложение 9051,суть такова почти в каждом теле программы есть счетчик СТУ, он и приводит в действие тело ШАГА, первый цикл программа проходит, тоесть init - step 6, то по идее в инните дожен произойти сброс всех счетчиков, как я думал, но это не прокатывает, пробовал ставить генератор изменения reseta перед тоже на 2 цикле не замечает.
    "по идее в инните дожен произойти сброс всех счетчиков"
    Это по какой-такой идее, а где код, который сбрасывает счетчики?
    По крайней мере код действия шага Init должен быть вот так
    Код:
    A5:=1;
    i:=0;
    WHILE i<5 DO
    NA:=1;
    i:=i+1;
    END_WHILE
    NA:=0;
    i:=0;
    (*----------- Сброс счетчиков*)
    CTUInst(RESET:= TRUE);
    CTUInst1(RESET:=TRUE);
    T1(RESET:= TRUE);
    T3(RESET:= TRUE);
    (*------------*)
    И что это за код (встречается в во всех шагах)
    Код:
    i:=0;
    WHILE i<5 DO
    NA:=1;
    i:=i+1;
    END_WHILE
    NA:=0;
    i:=0;
    Это код паразит, он ни чего не делает, может это типа задержки(он просто считает число циклов ПЛК).
    А вот здесь


    Состояние элементов Т1, Т2, Т3, вообще не будут иметь значение.

    Что это за выражение

    Ведь переменная имеет тип BOOL, интересно когда она станет отрицательной.
    И еще. Почему нельзя просто прямо возле черточки само условие написать. Ведь простейшие условия

    Дальше программу не смотрел, наверняка есть и другие ляпсусы.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

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

    По умолчанию

    Цитата Сообщение от myles Посмотреть сообщение
    Хорошо, а как сравнивать значения с модуля в моменты, когда поочерёдно включаются 1 и 2 входы контроллера. Т.е., мне нужно получить разницу значения модуля ввода при включённых 1 и 2 входах, в зависимости от которой будут включаться два других выхода контроллера. Что-то типа U1 - это необходимое значение модуля ввода при 1 включённом входе, U2 - это при 2 входе. И всё, что мне нужно, это получить разницу значений U1-U2.
    Вообщем этому человеку нужно устройство выборки и хранения измеренного значения
    Код:
    IF in1 THEN (*Пока вход 1 включен*)
    U1:=izm; (*эта переменная повторяет измеренное значение*)
    END_IF
    (*после выключения входа 1 в переменной U1 запомнится значение в момент отключения входа in1*)
    
    
    IF in2 THEN (*Пока вход 2 включен*)
    U2:=izm; (*эта переменная повторяет измеренное значение*)
    END_IF
    (*после выключения входа 2 в переменной U2 запомнится значение в момент отключения входа in1*)
    Если нужно запоминать измеренные значения в момент включения входов, то нужно в условия IF добавить R_TRIG.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  7. #1847
    Пользователь
    Регистрация
    19.11.2011
    Адрес
    г. Белгород
    Сообщений
    357

    По умолчанию

    Цитата Сообщение от Hafizov G Посмотреть сообщение
    запросто,Вложение 9051,суть такова почти в каждом теле программы есть счетчик СТУ, он и приводит в действие тело ШАГА, первый цикл программа проходит, тоесть init - step 6, то по идее в инните дожен произойти сброс всех счетчиков, как я думал, но это не прокатывает, пробовал ставить генератор изменения reseta перед тоже на 2 цикле не замечает.
    У тебя в глобальных перменных CTUInst: CTU и эта же переменная в локальных PLC_PRG, так и должно быть?

    Вообще старайся как можно меньше использовать глобальные переменные. Это избавит тебя от ошибок, которые очень трудно найти. Для этого используй в функциональных блоках переменные var_input.

    Действие Init.

    Смотри, что у тебя тут происходит:

    A5:=1;
    i:=0;

    Далее зачем-то цикл
    WHILE i<5 DO
    NA:=1;
    i:=i+1;
    END_WHILE

    после цикла имеем: NA=1, i=5;

    далее эти же переменные меняются:
    NA:=0;
    i:=0;

    В результате работы действия Init у тебя всегда будут одни и те же значения: A5=1, NA=0, i=0. То есть цикл никак не повлиял на результат.

    Имей в виду, что цикл надо использовать осторожно, так как он увеличивает время работы программы в целом, и если цикл будет большим, то контроллер зависнет и перезагрузится. Контроллер сам работает в цикле. И этим надо пользоваться.

    По поводу счетчика. Почитай описание работы в документации CoDeSys_V23_RU.pdf стр.347. Обрати внимание, что счетчик будет считать тогда, когда будет меняться сигнал на входе CU, а обнуляться будет тогда, когда на вход RESET подается TRUE.

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

    По умолчанию

    Для для Hafizov G

    Если Вы хотели сбрасывать счетчики, которые используются в шагах, просто изменив в шаге Init переменную NA из 0 в 1 и затем опять в 0, то эти манипуляции ни как не отразятся на состоянии счетчиков, нужно именно вызывать сами экземпляры счетчиков с нужным значением входа RESET, потому как любая подпрограмма сохраняет свою внутренние переменные до следующего к ней обращения.
    Счетчик это тоже подпрограмма.
    Исходя из ранее не замеченной мной переменной NA предлагаю, такой код для шага Init
    Код:
    A5:=1;
    (*----------- Сброс счетчиков*)
    CTUInst(RESET:=1); CTUInst(RESET:=0);
    CTUInst1(RESET:=1);CTUInst1(RESET:=0);
    T1(RESET:=1);T1(RESET:=0);
    T3(RESET:=1);T3(RESET:=0);
    (*------------*)
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  9. #1849

    По умолчанию

    Блин, ребята спасибо! Все учту, буду учиться пользоваться, есть еще один вопрос- о LD. возможно ли на LD строить циклы? и есть ли литература с примерами (как по LD так и по остальным для новичков)? а то на мануале конечно здорово, но увидеть в одной книжке пару десятков примеров было бы круто, я инет чуть чуть порыл, только статьи, а книг хороших не заметил, наверное плохо искал.

  10. #1850
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,254

    По умолчанию

    Цитата Сообщение от Hafizov G Посмотреть сообщение
    Блин, ребята спасибо! Все учту, буду учиться пользоваться, есть еще один вопрос- о LD. возможно ли на LD строить циклы? и есть ли литература с примерами (как по LD так и по остальным для новичков)? а то на мануале конечно здорово, но увидеть в одной книжке пару десятков примеров было бы круто, я инет чуть чуть порыл, только статьи, а книг хороших не заметил, наверное плохо искал.
    есть хорошее средство, как конвертация. Найдите пример с циклом, откройте его в КДС, правой кнопкой по нужному ФБ и выбрать конвертацию, так сможете разобраться как в LD выглядят циклы, если конечно это принципиально. Не могу понять только зачем, когда есть другие языки

Страница 185 из 1049 ПерваяПервая ... 85135175183184185186187195235285685 ... ПоследняяПоследняя

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

Ваши права

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