Segnetics

Вернуться   Segnetics > Форум Segnetics > SMLogix

SMLogix Вопросы о работе в среде SMLogix и о FBD-программировании

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 20.12.2006, 13:02   #1
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 016
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
Exclamation Обмениваемся своими макросами

Складывайте сюда макросы, которыми решили поделиться

Не забываем о существовании "заводской" библиотеки макросов!


PS. Уважаемые клиенты. Все представленные макросы никакого отношения к фирме Segnetics не имеют и никак не тестировались нашими специалистами.

Не нужно нам задавать вопросы по их работе. Задавайте эти вопросы авторам макросов.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.

Последний раз редактировалось Arsie, 17.07.2018 в 18:10
Arsie сейчас на форуме   Ответить с цитированием
Старый 25.07.2007, 12:55   #2
WhiteM
Новичок
 
Регистрация: Jun 2007
Адрес: Рязань
Сообщения: 29
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Question Ответ: Библиотека макросов

Макрос показывает строки с состояниями устройств. (меняет по кругу)
Есть возможность внеочередного показа строки устройства, состояние которого изменилось. Но работает криво. Уже всю голову сломал.
Может какие идеи появятся?
Вложения
Тип файла: psl temp-pokaz.psl (68.5 Кбайт, 961 просмотров)


__________________
fjohn@inbox.ru
WhiteM вне форума   Ответить с цитированием
Старый 31.10.2008, 11:27   #3
Sergeevich_1
Новичок
 
Регистрация: May 2008
Адрес: Санкт-Петербург
Сообщения: 2
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Lightbulb Генерация псевдо-случайных величин

Макрос генерирует последовательность псевдо-случчайных нормальнораспределенных величин.
Имеет три входа: u0 - числовой вход, нулевой член последовательности [0,65535], ^Next - по фронту сигнала осуществляется расчет значения очередного члена последовательности от предыдущего значения, ^Reset - по фронту сигнала генератор расчитывает значение очередного члена последовательности от значения u0.
Имеет один числовой выход Out со значением очередного члена последовательности.

Практически потребность в макросе может возникать при тестировании некоторых решений.
Вложения
Тип файла: msl LCG 16-bit v1.11.msl (9.8 Кбайт, 541 просмотров)
Sergeevich_1 вне форума   Ответить с цитированием
Старый 05.11.2008, 11:37   #4
Sergey Cherevko
Senior Member
 
Аватара для Sergey Cherevko
 
Регистрация: Jul 2007
Адрес: Калининград
Сообщения: 422
Благодарил(а): 0 раз(а)
Поблагодарили: 1 раз в 1 сообщении
По умолчанию Переключатель на N положений

Комментарии внутри макроса.
Переключатель энергонезависимый, НО ресурс EEPROM бережет.
Запоминает текущее положение переключателя после истечения тайм-аута, который индицируется на экране прогресс-баром.
Вложения
Тип файла: msl Переключатель на N положений.msl (19.0 Кбайт, 924 просмотров)
Sergey Cherevko вне форума   Ответить с цитированием
Старый 06.04.2009, 17:29   #5
max
Новичок
 
Регистрация: Jan 2008
Сообщения: 4
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Wink Макрос аварий и сообщений

Макрос для работы с журналом
Можно вводить 6 различных сообщений и 30 разных аварий + звонок

Сообщение или авария всегда запишутся в память, даже если появились одновлеменно.

Возможно расширение количества аварий


N_av - номер аварии (к макросу журнал)
Готов (от макроса журнал)
Вложения
Тип файла: msl 6 сообщение 30 аварий.msl (427.4 Кбайт, 1121 просмотров)
max вне форума   Ответить с цитированием
Старый 04.02.2014, 12:04   #6
ujin
Senior Member
 
Аватара для ujin
 
Регистрация: May 2010
Адрес: Novosibirsk
Сообщения: 762
Благодарил(а): 1 раз(а)
Поблагодарили: 10 раз(а) в 10 сообщениях
По умолчанию Ответ: Макрос аварий и сообщений

Цитата
Сообщение от max Посмотреть сообщение
Макрос для работы с журналом
Макрос для работы с журналом.
Генерирует 96 номеров сообщений при появлении аварий с 1 по 96.
Генерирует 96 номеров сообщений при снятии аварий со 101 по 196 (+100 к номеру аварии)
При одновременном появлении аварий и одновременном пропадании других обрабатываются последовательно все события. Сначала появившиеся аварии, затем снятые аварии. Все паузы и порядок работы сохранены от заводского.
Любое событие (появление, снятие аварии) обрабатывается за один такт.
Количество тактов на все события, пришедшие одновременно = N*2 (с учетом обязательной паузы с выдачей 0 после события).
Занимает 55 блоков.
Можно расширить. Каждые 32 аварии + 15 блоков.
Не работает на PIXEL12 и SMH2010. При желании можно переделать
Протестирован не долгое время, поэтому при ошибках просьба сообщить.
Вложения
Тип файла: msl Scan.msl (131.2 Кбайт, 350 просмотров)


__________________
В жизни 2 правила успеха:
1 Не говори всего что знаешь
2 ...
ujin вне форума   Ответить с цитированием
Старый 03.11.2009, 11:59   #7
01zzz
Новичок
 
Регистрация: Sep 2009
Сообщения: 20
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: МАКРОС АВР НАСОСОВ

Макрос управления спаркой насосов. Смотрит за перепадом давления и минимальным давлением на входе.
Вложения
Тип файла: msl AVR_PUMP.msl (39.4 Кбайт, 1739 просмотров)
01zzz вне форума   Ответить с цитированием
Старый 03.11.2009, 12:04   #8
01zzz
Новичок
 
Регистрация: Sep 2009
Сообщения: 20
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Упраление одним насосом

Следит за давлением на входе и за перепадом давления. авария перепад давления запоминается.
http://shrelec.narod.ru/RMK/pump.msl
01zzz вне форума   Ответить с цитированием
Старый 03.11.2009, 12:07   #9
01zzz
Новичок
 
Регистрация: Sep 2009
Сообщения: 20
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Постраничный вывод значений

Постраничный вывод значения. У меня организован для вывода значений датчиков. Листание - клавиша вниз.
Вложения
Тип файла: msl prosmotr_AI.msl (21.3 Кбайт, 991 просмотров)
01zzz вне форума   Ответить с цитированием
Старый 11.11.2009, 17:29   #10
01zzz
Новичок
 
Регистрация: Sep 2009
Сообщения: 20
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Управление двумя котлами

Управление двумя котлами
при поступлении команды пуск, запускается один котел,
с него поступает сигнал работа, если он не снимается в течении времени Т,
то считаем, что мощности одного котла не хватает (у нас неттемпературы обратной воды для анализа,
и в работу включается второй котел. Аварии котлов не запоминаем.
Входы
pusk - команда запуска
pumpready1 - готовность котлового насоса 1 (если нет, то на входе поставьте 1)
pumpready2 - готовность котлового насоса 2 (если нет, то на входе поставьте 1)
av_pump1 - авария насоса 1 (например макрос pump, если не путаю, я через "или" еще подавал сигнал "сухой ход")
av_pump2 - авария насоса 2
gor1 - горелка 1 в работу
gor2 - горелка 2 в работу
av_gor1 - ав.горелки 1
av_gor2 - ав.горелки 2
klick - импульс смены рабочего котла
time - (тики) время поистечении которого елси котел не согрелся
(не пропал сигнал работа, учитывайте особенности своего котла, может работать не корректно, )
то врубаем оба котла
tdelay - задержка выключения котловых насосов
оба в работу - дёт сигнал на включение на обе горелки сразу (например полезно в режиме наладки
да и вообще, если катавасии с чередованием не нужно, а нужно тупо врубать в работу оба котла)

Выходы
gor1 - горелка 1 в работе
gor2 - горелка 2 в работе
av_gor1 - ав.горелки 1
av_gor2 - ав.горелки 2
pusk_pump1 - пуск насоса котла1
pusk_pump2 - пуск насоса котла2
Насосы выключаются с задержкой. Выход этого макроса я посылал на макрос pump (выложен ранее)
Вложения
Тип файла: msl dva kotla.msl (31.4 Кбайт, 1482 просмотров)
01zzz вне форума   Ответить с цитированием
Старый 11.11.2009, 17:55   #11
01zzz
Новичок
 
Регистрация: Sep 2009
Сообщения: 20
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию график температуры

График температуры (tграф=f(tнар)
Прямая Y=kx+a
Входы
T1 при -20 на улице
Т2 при +15 на улице
Тstreet - воздух на улице

Выход
Tgraf

И хочу сказать спасибо, всем выложившим свои макросыя. Я первый раз столкнулся с программированием, и если бы не ваши наработки, то возился бы я очень и очень долго. Они помогли понять и освоить некоторые приемы. Самое сложное оказалось не заставить систему работать, а организовать более менее нормальное общение контроллера с человеком ))
Вложения
Тип файла: msl t_grafik.msl (6.2 Кбайт, 1507 просмотров)

Последний раз редактировалось 01zzz, 11.11.2009 в 18:10
01zzz вне форума   Ответить с цитированием
Старый 06.04.2011, 11:46   #12
Sergey Cherevko
Senior Member
 
Аватара для Sergey Cherevko
 
Регистрация: Jul 2007
Адрес: Калининград
Сообщения: 422
Благодарил(а): 0 раз(а)
Поблагодарили: 1 раз в 1 сообщении
По умолчанию Многофункциональная лампа

Что-то давно здесь никто ничем новеньким не делился
Предлагаю всеобщему вниманию макрос индикации аварии и двух типов тревог на единственной лампочке.
При аварии лампа горит постоянно.
При тревоге 1 периодически однократно вспыхивает.
При тревоге 2 - двухкратно,
При обеих тревогах - трехкратно.
Можно сделать, чтобы лампа моргала четыре-пять-шесть-... раз, но глаз это уже плохо воспринимает.
Вложения
Тип файла: msl Многофункциональная лампа.msl (9.0 Кбайт, 803 просмотров)


__________________
Автомат АК - самый распространенный преобразователь стека в очередь
Sergey Cherevko вне форума   Ответить с цитированием
Старый 29.06.2011, 03:47   #13
ViS
Senior Member
 
Регистрация: Aug 2010
Сообщения: 718
Благодарил(а): 1 раз(а)
Поблагодарили: 15 раз(а) в 12 сообщениях
По умолчанию Состояние входов/выходов

Макрос меню состояния входов/выходов Пикселя.
Вложения
Тип файла: msl Pixel-InOut.msl (51.2 Кбайт, 1051 просмотров)
ViS вне форума   Ответить с цитированием
Старый 12.08.2011, 09:42   #14
ViS
Senior Member
 
Регистрация: Aug 2010
Сообщения: 718
Благодарил(а): 1 раз(а)
Поблагодарили: 15 раз(а) в 12 сообщениях
По умолчанию Alternative F3

И еще раз входы/выходы Пикселя.
Альтернативная замена "конструкторскому" меню, вызываемому по F3 для Пикселя. (Живет в блоке "Основной экран" под именем "%")
Показывает состояние входов/выходов.

Не тестировал вообще, нет возможности пока. Переделан из родного конструкторского с минимальными изменениями, так что должен работать, надеюсь. Буду благодарен, если кто-то проверит и отпишется.
Вложения
Тип файла: msl Vis_F3.msl (79.3 Кбайт, 434 просмотров)
ViS вне форума   Ответить с цитированием
Старый 28.05.2013, 14:49   #15
Sergey Cherevko
Senior Member
 
Аватара для Sergey Cherevko
 
Регистрация: Jul 2007
Адрес: Калининград
Сообщения: 422
Благодарил(а): 0 раз(а)
Поблагодарили: 1 раз в 1 сообщении
По умолчанию Защита входных modbus-переменных

В дополнение темы "Управление пикселем через интернет".
Чтобы кто попало по известному IP-адресу не изменял уставки в контроллере, они блокируются кодом доступа. Код-запрос постоянно меняется, код-ответ вычисляется клиентским приложением как полином запроса. Для кулхацкеров защита более чем достаточная.
В прицепе:
- проект SMLogix для Пикселя;
- экспортированная из SMLogix карта modbus-переменных проекта;
- файл конфигурации для Lectus OPC/DDE сервера;
- демо-клиент на основе таблички Excel.
Для наглядности полином рассчитывается и в Лектусе в составной переменной Code_calc, и в Экселе на листе "Вычисления".
Пользуйтесь на здоровье...
Вложения
Тип файла: zip Security_MB.zip (20.1 Кбайт, 342 просмотров)


__________________
Автомат АК - самый распространенный преобразователь стека в очередь
Sergey Cherevko вне форума   Ответить с цитированием
Старый 19.11.2013, 15:48   #16
Сергей_М
Member
 
Аватара для Сергей_М
 
Регистрация: Mar 2013
Адрес: Оренбургская обл.
Сообщения: 34
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Обмениваемся макросами


Всё просто. Управление подсветкой дисплея 2G.
Вложения
Тип файла: msl Упр. подсветкой 2G.msl (4.7 Кбайт, 445 просмотров)
Сергей_М вне форума   Ответить с цитированием
Старый 19.11.2013, 16:34   #17
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 016
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Обмениваемся макросами

Цитата:
Сообщение от Сергей_М Посмотреть сообщение

Всё просто. Управление подсветкой дисплея 2G.
У вас так сделано, что после активирования внешнего запуска подсветка никогда не погаснет.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.

Последний раз редактировалось Arsie, 30.03.2015 в 10:57
Arsie сейчас на форуме   Ответить с цитированием
Старый 19.11.2013, 20:21   #18
coverart
Senior Member
 
Регистрация: Mar 2008
Адрес: Екатеринбург
Сообщения: 492
Благодарил(а): 50 раз(а)
Поблагодарили: 14 раз(а) в 13 сообщениях
По умолчанию Ответ: Обмениваемся макросами

Цитата:
Сообщение от Arsie Посмотреть сообщение
После активирования внешнего запуска подсветка никогда не погаснет.


PS. Нафига её вообще гасить-то? Ладно бы от батареек работали
Энергосбережение епт (а скоро и соцнорма)
Но по любому нужная фича
coverart вне форума   Ответить с цитированием
Старый 20.11.2013, 14:18   #19
1exan
Senior Member
 
Регистрация: Nov 2008
Адрес: Алтайский край
Сообщения: 135
Благодарил(а): 2 раз(а)
Поблагодарили: 7 раз(а) в 7 сообщениях
По умолчанию Кусочно-линейная функция

Еще один график, на четыре точки, можно урезать до линейного (выкинуть блок выбора диапазона).
Вложения
Тип файла: msl График 4 точки.msl (29.6 Кбайт, 754 просмотров)
1exan вне форума   Ответить с цитированием
Старый 05.02.2014, 23:54   #20
ujin
Senior Member
 
Аватара для ujin
 
Регистрация: May 2010
Адрес: Novosibirsk
Сообщения: 762
Благодарил(а): 1 раз(а)
Поблагодарили: 10 раз(а) в 10 сообщениях
По умолчанию Ответ: Кусочно-линейная функция

Кусочно-линейные функции на 10 и 20 участков.
Размер 21 блок.
Выполняется за 1 такт.
Все то же, только добавлен блок выбора диапазона
Поскольку использованы недокументированные возможности контроллеров (открытые в конструкторе ИТП), блоки запаролены.
Вложения
Тип файла: msl КУС10_v2.msl (26.0 Кбайт, 337 просмотров)
Тип файла: msl КУС20_v2.msl (37.1 Кбайт, 243 просмотров)


__________________
В жизни 2 правила успеха:
1 Не говори всего что знаешь
2 ...
ujin вне форума   Ответить с цитированием
Старый 06.12.2013, 13:49   #21
Max2114
Senior Member
 
Регистрация: Jun 2007
Адрес: Tyumen
Сообщения: 2 052
Благодарил(а): 20 раз(а)
Поблагодарили: 21 раз(а) в 21 сообщениях
По умолчанию Ответ: Обмениваемся макросами

Макрос - копия макроса "2->^1" который нахдится внутри макроса SCADA(IN). Позволяет организовать штатый режим запуска и останова в дистанционном режиме, если надо удалить макрос SCADA(IN) а возможность запуска по интерфейсу в "дистанционном" режиме оставить. Актуально для тех, кто оптимизирует программу для заталкивания её в 12-ый пиксель (к примеру мне пришлось это делать потому, что пиксель был мастером для панели, и программа не входила в контроллер).
Вложения
Тип файла: msl 2^1.msl (5.2 Кбайт, 236 просмотров)

Последний раз редактировалось AlexMan, 06.12.2013 в 14:09
Max2114 вне форума   Ответить с цитированием
Старый 04.02.2014, 16:41   #22
ujin
Senior Member
 
Аватара для ujin
 
Регистрация: May 2010
Адрес: Novosibirsk
Сообщения: 762
Благодарил(а): 1 раз(а)
Поблагодарили: 10 раз(а) в 10 сообщениях
По умолчанию Ответ: Обмениваемся макросами

Работа с unix_time
unix_time - запаковка текущего времени контроллера в юникс время. 11 блоков
unix_to_curr_time - распаковка юникс времени. 53 блока
Недостаток - при переходе с декабря на январь месяц и день недели пересчитываются 12 тактов. Тщательно не тестировал, но в работе давно. Ошибок пока не выявлено.
Вложения
Тип файла: msl unix_time.msl (5.5 Кбайт, 198 просмотров)
Тип файла: msl unix_to_curr_time.msl (29.0 Кбайт, 164 просмотров)


__________________
В жизни 2 правила успеха:
1 Не говори всего что знаешь
2 ...
ujin вне форума   Ответить с цитированием
Старый 10.04.2014, 00:13   #23
младшой
Senior Member
 
Регистрация: May 2010
Адрес: Москва
Сообщения: 857
Благодарил(а): 4 раз(а)
Поблагодарили: 85 раз(а) в 66 сообщениях
По умолчанию Ответ: Обмениваемся макросами

Цитата:
Сообщение от ujin Посмотреть сообщение
...
unix_to_curr_time - распаковка юникс времени. 53 блока
Недостаток - при переходе с декабря на январь месяц и день недели пересчитываются 12 тактов. Тщательно не тестировал, но в работе давно. Ошибок пока не выявлено.
С 31.03.2017 по 31.12.2017 имеется сдвиг на сутки вперед.
Может быть, на каких-то других интервалах тоже.

Выкладываю свой аналогичный макрос.
Ошибочных вычислений вроде нет, надо еще проверять.
Вычисление даты производится за 1 такт.
42 блока.
Выполняется раза в 1,5 быстрее.

ДатыВремя и таймштампы проверял вот по этому онлайн-конвертеру:
http://www.cy-pr.com/tools/time/
Вложения
Тип файла: msl Unix_to_DateTime.msl (41.1 Кбайт, 242 просмотров)
младшой вне форума   Ответить с цитированием
Старый 11.04.2014, 23:35   #24
ujin
Senior Member
 
Аватара для ujin
 
Регистрация: May 2010
Адрес: Novosibirsk
Сообщения: 762
Благодарил(а): 1 раз(а)
Поблагодарили: 10 раз(а) в 10 сообщениях
По умолчанию Ответ: Обмениваемся макросами

Цитата
Сообщение от младшой Посмотреть сообщение
С 31.03.2017 по 31.12.2017 имеется сдвиг на сутки вперед.
Может быть, на каких-то других интервалах тоже.

Выкладываю свой аналогичный макрос.
Ошибочных вычислений вроде нет, надо еще проверять.
Вычисление даты производится за 1 такт.
42 блока.
Выполняется раза в 1,5 быстрее.

ДатыВремя и таймштампы проверял вот по этому онлайн-конвертеру:
http://www.cy-pr.com/tools/time/
Спасибо. Работать будет. Немного попроверял.
Мне надо было искать по MJD или Julian day.
http://en.wikipedia.org/wiki/Julian_day


__________________
В жизни 2 правила успеха:
1 Не говори всего что знаешь
2 ...

Последний раз редактировалось ujin, 12.04.2014 в 00:01
ujin вне форума   Ответить с цитированием
Старый 08.02.2014, 12:42   #25
ujin
Senior Member
 
Аватара для ujin
 
Регистрация: May 2010
Адрес: Novosibirsk
Сообщения: 762
Благодарил(а): 1 раз(а)
Поблагодарили: 10 раз(а) в 10 сообщениях
По умолчанию Ответ: Обмениваемся макросами

Определяет текущий порядковый номер оборудования в зависимости от наработки, т.е. сортировка.
Оборудование с наибольшей наработкой получает наименьший текущий порядковый номер.
Из оборудования с одинаковой наработкой наименьший текущий порядковый номер получает оборудование с наименьшим станционным номером.
Сортировка пузырьковая. Реализация других методов сортировки на FBD при количестве менее 6 бессмысленна. Сортировка производится как правило не чаще 1 раза в сутки, поэтому время сортировки 10 или 40 циклов до выдачи результата не имеет значения. Напротив размер кода значение имеет.
Недостатки - при включении питания выдает неправильный результат и требуется первичная сортировка через время инициализации контроллера.
Вложения
Тип файла: msl Сортировка.msl (27.3 Кбайт, 399 просмотров)


__________________
В жизни 2 правила успеха:
1 Не говори всего что знаешь
2 ...
ujin вне форума   Ответить с цитированием
Благодарность от:
Старый 03.07.2017, 16:49   #26
LordN
Senior Member
 
Регистрация: Dec 2007
Адрес: Томск
Сообщения: 4 123
Благодарил(а): 239 раз(а)
Поблагодарили: 161 раз(а) в 153 сообщениях
По умолчанию Ответ: Обмениваемся макросами

Цитата:
Сообщение от ujin Посмотреть сообщение
Определяет текущий порядковый номер оборудования в зависимости от наработки, т.е. сортировка.
Оборудование с наибольшей наработкой получает наименьший текущий порядковый номер.
Из оборудования с одинаковой наработкой наименьший текущий порядковый номер получает оборудование с наименьшим станционным номером.
Сортировка пузырьковая. Реализация других методов сортировки на FBD при количестве менее 6 бессмысленна. Сортировка производится как правило не чаще 1 раза в сутки, поэтому время сортировки 10 или 40 циклов до выдачи результата не имеет значения. Напротив размер кода значение имеет.
Недостатки - при включении питания выдает неправильный результат и требуется первичная сортировка через время инициализации контроллера.
спасибо, добрый макрос!
сильно помог для создания процедуры блокировки работы ступени с наработкой на dN циклов больше, чем ступень с минимальной наработкой в группе из шести.
это для совместной работы с макросом типа Dev15...


__________________
C уважением, LordN
LordN сейчас на форуме   Ответить с цитированием
Старый 10.08.2017, 06:16   #27
ViS
Senior Member
 
Регистрация: Aug 2010
Сообщения: 718
Благодарил(а): 1 раз(а)
Поблагодарили: 15 раз(а) в 12 сообщениях
По умолчанию Маленький макрос на МИН-МАКС до 32-х чисел

Макрос определяет минимальное и максимальное число из заданных на входах.
Сравнивает от 2 до 32 чисел. Весит всего 25 блоков.
Независимо от количества опрашиваемых входов, макрос выполняется в один тик основной программы, то есть данные на выходе обновляются в том же цикле основной программы, в котором изменяются входы.
При отключении полностью исключается из обработки программы, не расходуя вхолостую ресурс процессора.
Вложения
Тип файла: msl Мин-Макс х32 (Int).msl (68.8 Кбайт, 172 просмотров)
ViS вне форума   Ответить с цитированием
Старый 10.08.2017, 10:45   #28
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 016
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Маленький макрос на МИН-МАКС до 32-х чисел

Цитата
Сообщение от ViS Посмотреть сообщение
Макрос определяет минимальное и максимальное число из заданных на входах.
Сравнивает от 2 до 32 чисел. Весит всего 25 блоков.
Независимо от количества опрашиваемых входов, макрос выполняется в один тик основной программы, то есть данные на выходе обновляются в том же цикле основной программы, в котором изменяются входы.
При отключении полностью исключается из обработки программы, не расходуя вхолостую ресурс процессора.
При сравнении 32 чисел затраты времени соответствуют выполнению 500 блоков. Нельзя такой макрос наобум использовать в контроллерах первого поколения.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 10.08.2017, 12:26   #29
LordN
Senior Member
 
Регистрация: Dec 2007
Адрес: Томск
Сообщения: 4 123
Благодарил(а): 239 раз(а)
Поблагодарили: 161 раз(а) в 153 сообщениях
По умолчанию Ответ: Маленький макрос на МИН-МАКС до 32-х чисел

Цитата:
Сообщение от Arsie Посмотреть сообщение
При сравнении 32 чисел затраты времени соответствуют выполнению 500 блоков. Нельзя такой макрос наобум использовать в контроллерах первого поколения.
да, я тоже не решаюсь циклы использовать не имеючи пошаговой эмуляции или отладки..


__________________
C уважением, LordN
LordN сейчас на форуме   Ответить с цитированием
Старый 10.08.2017, 13:31   #30
ViS
Senior Member
 
Регистрация: Aug 2010
Сообщения: 718
Благодарил(а): 1 раз(а)
Поблагодарили: 15 раз(а) в 12 сообщениях
По умолчанию Ответ: Обмениваемся своими макросами

Натурные испытания показали следующее.

Исходная позиция - стандартный проект приточки с водяным нагревом, голый 25-й пиксель без датчиков.

1. Вставлен макрос без циклов. Опрос 32 входа.
Тик без макроса 77-80мс, с макросом 88-90.
Время реакции выходов макроса на изменение входов около 6 секунд.

2. Вставлен макрос с циклами, те же 32 входа
Тик 115-117мс. Время реакции около 2 секунд.

Время засекал "на глазок", считая про себя примерно по секунде Тем не менее, разница слишком заметна.

В итоге получается, что с циклами вся программа отрабатывает в 3 раза быстрее. Причем получаем актуальные данные на выходе в том же цикле работы всей программы, в котором меняются входы, что может оказаться востребованным в некоторых ситуациях.

Буду весьма признателен, если кто-то предложит более быструю и не сильно более многоблочную реализацию.
ViS вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

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

BB code is Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Можно ли применять пустые макросы (нельзя) Gel Вопросы о программировании 35 08.04.2020 10:42
Размышления на тему групповых триггеров boxmen77 Вопросы о программировании 19 15.01.2020 17:39
Фильтрация аналогового сигнала СВМ Вопросы о программировании 15 02.12.2015 20:28
Модуль Z-4RTD2 от SENECA serg-el Примеры работы по Modbus 3 04.06.2015 18:11
Ремонт Aout своими силами (решено) alexprophet Вопросы о Pixel 10 31.10.2013 13:23


Часовой пояс GMT +4, время: 14:11.


Версия vBulletin: 3.8.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Segnetics 2005 - 2023