Страница 3 из 4 ПерваяПервая 1234 ПоследняяПоследняя
Показано с 21 по 30 из 31

Тема: Упрощение функции...

  1. #21

    По умолчанию

    Цитата Сообщение от Василий Кашуба Посмотреть сообщение
    Через ФБ ">" 0, включаете нужный выход через ФБ TOF и когда условие выполнятся не будет, он выключится.
    а можно наглядный пример блока привести именно. не могу догнать... или глюкозы мозгу не хватает

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

    По умолчанию

    Вот так нехорошо делать:
    Код:
    IF plcoutbits.0 THEN
    out1:=1.0;
    ELSE
    out1:=0.0;
    END_IF
    Есть SEL: out1 := SEL(plcoutbits.0, 0.0, 1.0).
    нужно включить выход out5 при PWlo от 1 до 9 а при нуле выключить с задержкой через TOF
    Код:
    VAR
    	timer: TOF := (PT := T#1s);
    END_VAR
    
    timer(IN := PWlo > 0, Q => out5);

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

    По умолчанию

    Цитата Сообщение от feLoNy Посмотреть сообщение
    выдает ошибку - несоответсвие типов невозможно преобразовать BOOL в REAL. че-то я не догоняю как исправить...
    Цитата Сообщение от feLoNy Посмотреть сообщение
    Это уже существует. Велосипед построен и не вариант уже играть с другими мощностями на выход. Пока в таком виде работает, но кучу всего ещё надо додумывать...
    out1-out4 - 4 "шага" по 100 кВт... Суммарная мощность 500 кВт!
    out4-out8 - 4 вентилятора которые включаются в зависимости от включенных выходов
    petera, чуть позже возьму бубен и буду стараться вызвать духов с тобой вместе :-D
    В любом варианте хоть с бубном, хоть без для "out1-out4 - 4 "шага" по 100 кВт... Суммарная мощность 500 кВт!"
    нужно добавить такой фрагмент
    Код:
    out1:=(TRUNC(pw1)/100)>=1;
    out2:=(TRUNC(pw1)/100)>=2;
    out3:=(TRUNC(pw1)/100)>=3;
    out4:=(TRUNC(pw1)/100)>=4;
    ou1, out2, out3 и out4 должны быть объявлены как BOOL, ведь я полагался на "out1-out4 - 4 "шага" по 100 кВт... Суммарная мощность 500 кВт!", т.е. это дискретные выходы.
    А Вы судя по ошибке "невозможно преобразовать BOOL в REAL" пытаетесь ou1, out2, out3 и out4 объявить как REAL.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Мой канал на РУТУБЕ
    https://rutube.ru/channel/23641433/
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

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

    По умолчанию

    не всегда сокращение кода удачное решение, на первой картинке две функции выполняющие одну и ту же задачу разными способами, на второй картинке показано время затраченное на выполнение обеих функций
    Изображения Изображения
    • Тип файла: png owen1.png (29.1 Кб, Просмотров: 18)
    • Тип файла: png owen.png (15.2 Кб, Просмотров: 14)
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

  5. #25
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    3,072

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение
    out2:=(TRUNC(pw1)/100)>=2;
    out3:=(TRUNC(pw1)/100)>=3;
    out4:=(TRUNC(pw1)/100)>=4;
    Вариант не гуд по простой причине - при переходе с 99 на 100 зачем-то выключается вся мелочевка и включает 100. А ведь достаточно просто добавить 1кВт.

    PS
    Нагрузочник ?

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

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение
    В любом варианте хоть с бубном, хоть без для "out1-out4 - 4 "шага" по 100 кВт... Суммарная мощность 500 кВт!"
    нужно добавить такой фрагмент
    Код:
    out1:=(TRUNC(pw1)/100)>=1;
    out2:=(TRUNC(pw1)/100)>=2;
    out3:=(TRUNC(pw1)/100)>=3;
    out4:=(TRUNC(pw1)/100)>=4;
    ou1, out2, out3 и out4 должны быть объявлены как BOOL, ведь я полагался на "out1-out4 - 4 "шага" по 100 кВт... Суммарная мощность 500 кВт!", т.е. это дискретные выходы.
    А Вы судя по ошибке "невозможно преобразовать BOOL в REAL" пытаетесь ou1, out2, out3 и out4 объявить как REAL.
    ЗЫ. Не заметил, что исходные данные были
    Цитата Сообщение от feLoNy Посмотреть сообщение
    Собственно вопрос в следующем: как упростить это:
    Код:
    (*
    mrout1:=TRUE; #1 кВт
    mrout2:=TRUE; #2 кВт
    mrout3:=TRUE; #2 кВт
    mrout4:=TRUE; #5 кВт
    mrout5:=TRUE; #10 кВт
    mrout6:=TRUE; #10 кВт
    mrout7:=TRUE; #20 кВт
    mrout8:=TRUE; #50 кВт
    out1:=1.0; #100 кВт
    out2:=1.0; #100 кВт
    out3:=1.0; #100 кВт
    out4:=1.0; #100 кВт
    out5:=1.0; #
    out6:=1.0; #
    out7:=1.0; #
    out8:=1.0; #
    *)
    Т.е. ПЛК 73/63?
    Тогда так нужно обойти ошибку
    Захват-1.png
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Мой канал на РУТУБЕ
    https://rutube.ru/channel/23641433/
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  7. #27

    По умолчанию

    Цитата Сообщение от Yegor Посмотреть сообщение
    Вот так нехорошо делать:
    Код:
    IF plcoutbits.0 THEN
    out1:=1.0;
    ELSE
    out1:=0.0;
    END_IF
    Есть SEL: out1 := SEL(plcoutbits.0, 0.0, 1.0).
    Код:
    VAR
    	timer: TOF := (PT := T#1s);
    END_VAR
    
    timer(IN := PWlo > 0, Q => out5);
    Почему не хорошо???
    Цитата Сообщение от petera Посмотреть сообщение
    В любом варианте хоть с бубном, хоть без для "out1-out4 - 4 "шага" по 100 кВт... Суммарная мощность 500 кВт!"
    нужно добавить такой фрагмент
    Код:
    out1:=(TRUNC(pw1)/100)>=1;
    out2:=(TRUNC(pw1)/100)>=2;
    out3:=(TRUNC(pw1)/100)>=3;
    out4:=(TRUNC(pw1)/100)>=4;
    ou1, out2, out3 и out4 должны быть объявлены как BOOL, ведь я полагался на "out1-out4 - 4 "шага" по 100 кВт... Суммарная мощность 500 кВт!", т.е. это дискретные выходы.
    А Вы судя по ошибке "невозможно преобразовать BOOL в REAL" пытаетесь ou1, out2, out3 и out4 объявить как REAL.
    Извините, выдержка из РП:
    7.3.2 Outputs (модуль выходных устройств)
    Модуль выходных устройств (Outputs) отображает значения выходов ПЛК. Мо-
    дуль имеет шесть каналов типа Real. В каждый канал из пользовательской программы
    записывается состояние выхода, в диапазоне от 0,0 до 1,0.
    В зависимости от исполнения ПЛК может быть оснащен следующими выходны-
    ми устройствами: э/м реле (Р) или транзисторными ключами (К), симисторными ключа-
    ми (С), выходами для управления твердотельными реле (Т), ЦАП «параметр-
    напряжение 0..10В» (У), ЦАП «параметр-ток 4…20мА» (И).
    Цитата Сообщение от Валенок Посмотреть сообщение
    Вариант не гуд по простой причине - при переходе с 99 на 100 зачем-то выключается вся мелочевка и включает 100. А ведь достаточно просто добавить 1кВт.

    PS
    Нагрузочник ?
    Вы хотите сказать будет работать только 100 кВт... Или я вас не понял?
    Обогреватель
    Цитата Сообщение от petera Посмотреть сообщение
    ЗЫ. Не заметил, что исходные данные были

    Т.е. ПЛК 73/63?
    Тогда так нужно обойти ошибку
    Захват-1.png
    Уже что-то внятнее...
    З.Ы. Да ПЛК-73. там 8 выходов (4 реле, 4 транзистора), транзисторные подключены к реле, и тоже стали релейными))
    Последний раз редактировалось feLoNy; 23.04.2015 в 15:27. Причина: дополнение

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

    По умолчанию

    Цитата Сообщение от feLoNy Посмотреть сообщение
    Уже что-то внятнее...
    З.Ы. Да ПЛК-73. там 8 выходов (4 реле, 4 транзистора), транзисторные подключены к реле, и тоже стали релейными))
    Так и надо было сразу сказать, а то поди догадайся, что за ПЛК у Вас, ведь есть же в программе и дискретные выходные сигналы
    mrout1:=TRUE; #1 кВт
    mrout2:=TRUE; #2 кВт
    mrout3:=TRUE; #2 кВт
    mrout4:=TRUE; #5 кВт
    mrout5:=TRUE; #10 кВт
    mrout6:=TRUE; #10 кВт
    mrout7:=TRUE; #20 кВт
    mrout8:=TRUE; #50 кВт
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Мой канал на РУТУБЕ
    https://rutube.ru/channel/23641433/
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  9. #29
    Пользователь Аватар для Василий Кашуба
    Регистрация
    20.11.2011
    Адрес
    Ставрополь
    Сообщений
    2,552

    По умолчанию

    Цитата Сообщение от feLoNy Посмотреть сообщение
    а можно наглядный пример блока привести именно. не могу догнать... или глюкозы мозгу не хватает
    Пожалуйста, на верхний вход через ФБ "ИЛИ" подаёте контролируемые переменные, на нижний вход, константу "0", а выход TOF на Q5.
    Выход.JPG

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

    По умолчанию

    Почему не хорошо???
    Потому что это индусский код. Пять строк вместо одной. Ветвление там, где можно обойтись селектором.

Страница 3 из 4 ПерваяПервая 1234 ПоследняяПоследняя

Похожие темы

  1. Пользовательские функции modbus
    от dnsss в разделе ПЛК3xx (архив)
    Ответов: 0
    Последнее сообщение: 29.01.2015, 19:57
  2. Функции.
    от Jonikk в разделе Программируемые реле
    Ответов: 11
    Последнее сообщение: 13.09.2011, 17:57
  3. Функции
    от mettled в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 13.02.2008, 10:16

Ваши права

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