Страница 628 из 1043 ПерваяПервая ... 128528578618626627628629630638678728 ... ПоследняяПоследняя
Показано с 6,271 по 6,280 из 10427

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

  1. #6271

    По умолчанию

    Вот и я о том - не понимая, как оно работает в самой своей основе - я не могу правильно им пользоваться.



    Ушёл читать.

  2. #6272
    Пользователь
    Регистрация
    22.02.2013
    Адрес
    г.Тихорецк, Краснодарский край
    Сообщений
    384

    По умолчанию

    Добрый день, уважаемые коллеги! Имеются порционные весы- один отвес:50кг+-200гр, совсем зациклился-не могу сообразить как организовать суммарный итог веса с нарастанием(суммировать вес порций) на ST, идеи, код, если возможно..

  3. #6273

    По умолчанию

    Цитата Сообщение от alex55 Посмотреть сообщение
    Добрый день, уважаемые коллеги! Имеются порционные весы- один отвес:50кг+-200гр, совсем зациклился-не могу сообразить как организовать суммарный итог веса с нарастанием(суммировать вес порций) на ST, идеи, код, если возможно..
    Программировать надо на трезвую голову.

    weight := weight + portion;

  4. #6274
    Пользователь
    Регистрация
    22.02.2013
    Адрес
    г.Тихорецк, Краснодарский край
    Сообщений
    384

    По умолчанию

    Это понятно, а как формировать этот weight(суммарный вес, что УЖЕ прошел через весы?), весы набрались-разгрузились, а мне надо это значение сохранить и суммировать затем с весом следующей порции итд до бесконечности) тут и с трезвой головой не разберешься!
    PS. Утром все получилось, благодаря трезвому совету малопьющего Вольда!

  5. #6275

    По умолчанию

    Необходимо засечь время между событиями А и Б (сигналы на дискретные входы).
    Если использовать ФБ CurTimeEx то получу два значения, но оба они записаны как структуры, как найти разность между ними или как, например, перевести TimeDate в формат DATE_AND_TIME ?

  6. #6276

    По умолчанию

    Нужно с урж2км перевести учёт расхода с помощью плк 100, по протолку модбасу,читал инструкцию не нашел ни в одной,пробовал пример у плк 100..
    Плк 100 должен запросить данные по расходу с урж2км,чтоб узнать учёт расхода не могу понять как сделать..

  7. #6277
    Пользователь
    Регистрация
    09.12.2013
    Адрес
    Ставрополь
    Сообщений
    1,128

    По умолчанию

    Цитата Сообщение от Дмитрий021 Посмотреть сообщение
    Необходимо засечь время между событиями А и Б (сигналы на дискретные входы).
    Если использовать ФБ CurTimeEx то получу два значения, но оба они записаны как структуры, как найти разность между ними или как, например, перевести TimeDate в формат DATE_AND_TIME ?
    используйте функцию time() - возвращает время в миллисекундах от начала работы системы в формате TIME

  8. #6278

    По умолчанию

    Сapzap, прочитал. Вот такое сделал:


    F_TRIGgreen1(CLK:=STARTSTOP , Q=> );

    IF F_TRIGgreen1.Q=TRUE THEN
    q:=1;
    z:=1; (*вспомогательная переменная*)
    TOF_Green1.IN:=TRUE;
    TOF_Green1.PT:=T#5s; (*можно изменить первоначальную длительность горения*)
    TOF_Green1; (*взвожу таймер*)
    TOF_Green1.IN:=FALSE;
    TOF_Green1; (*запускаю отсчёт таймера*)
    TON_Green1.IN:=FALSE;
    TON_Green1.PT:=T#0.5S;
    TON_Green1; (*обнуляю таймер*)

    END_IF
    (*теперь надо заставить лампу Green1 зажечься на 0,5с, погаснуть на 0,5с и так 10 раз*)

    IF F_TRIGgreen1.Q = TRUE OR z=1 THEN

    IF q<=10 THEN

    TOF_Green1; (*вызываю таймер чтобы он глянул, как там время; первый раз отсчитывает со строки 8, потом будет со строки 37*)
    green1:=TOF_Green1.Q;


    IF TOF_Green1.Q=FALSE THEN (* проверяю, окончен ли отсчёт*)

    TON_Green1(IN:= TRUE); (*запускаю отсчет негорения*)

    green1:=FALSE; (*можно и так - всё равно она не должна гореть в этом месте*)

    END_IF

    IF (*TOF_Green1.Q=FALSE AND*) TON_Green1.Q=TRUE THEN (* проверяю, кончилось ли время негорения *)
    TOF_Green1.IN:=TRUE;
    TOF_Green1.PT:=T#0.5s;
    TOF_Green1;
    TOF_Green1.IN:=FALSE;
    TOF_Green1; (*перезапуск таймера периода горения*)

    TON_Green1(IN:=FALSE); (*обнуляю таймер негорения*)

    q:=q+1; (*увеличиваю счётчик циклов*)

    END_IF

    END_IF

    END_IF (* конец действия ИФ по F_Triggreen1*)


    Это работает, но для такой простой задачи - достаточно корявый "код"

    Никак не могу понять, почему, если я вместо приращаемой каждый цикл переменной q и IF использую While или FOR для отсчета количества циклов - ПЛК перезагружается, а режим эмуляции пишет о WatchDog и зацикливании....

    цикл-то должен 5 раз пройти и кончится... причём здесь зацикленность.

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

    По умолчанию

    Цитата Сообщение от Garikrus Посмотреть сообщение
    Никак не могу понять, почему, если я вместо приращаемой каждый цикл переменной q и IF использую While или FOR для отсчета количества циклов - ПЛК перезагружается, а режим эмуляции пишет о WatchDog и зацикливании....

    цикл-то должен 5 раз пройти и кончится... причём здесь зацикленность.
    потому что программирование контроллеров отличается от программирования на ПК
    если программный цикл(for,while) задерживает исполнение очередного цикла плк на время большее чем заданное макс.время циклав настройках конфигуратора, произойдет перегрузка

    ЗЫ попробуйте как на картинке
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  10. #6280
    Пользователь
    Регистрация
    09.12.2013
    Адрес
    Ставрополь
    Сообщений
    1,128

    По умолчанию

    Цитата Сообщение от Garikrus Посмотреть сообщение
    ...достаточно корявый "код"
    А я вот так, в свое время сделал

Страница 628 из 1043 ПерваяПервая ... 128528578618626627628629630638678728 ... ПоследняяПоследняя

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

Ваши права

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