![]() |
![]() ![]() |
|
SMLogix Вопросы о работе в среде SMLogix и о FBD-программировании |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
![]() |
#1 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 17 368
Благодарил(а): 15 раз(а)
Поблагодарили:
609 раз(а) в 556 сообщениях
|
![]()
Складывайте сюда макросы, которыми решили поделиться
![]() Не забываем о существовании "заводской" библиотеки макросов! PS. Уважаемые клиенты. Все представленные макросы никакого отношения к фирме Segnetics не имеют и никак не тестировались нашими специалистами. Не нужно нам задавать вопросы по их работе. Задавайте эти вопросы авторам макросов. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. Последний раз редактировалось Arsie, 17.07.2018 в 18:10 |
![]() |
![]() |
![]() |
#2 |
Новичок
Регистрация: Jun 2007
Адрес: Рязань
Сообщения: 29
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
![]()
Макрос показывает строки с состояниями устройств. (меняет по кругу)
Есть возможность внеочередного показа строки устройства, состояние которого изменилось. Но работает криво. Уже всю голову сломал. Может какие идеи появятся? |
![]() |
![]() |
![]() |
#3 |
Новичок
Регистрация: May 2008
Адрес: Санкт-Петербург
Сообщения: 2
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
![]()
Макрос генерирует последовательность псевдо-случчайных нормальнораспределенных величин.
Имеет три входа: u0 - числовой вход, нулевой член последовательности [0,65535], ^Next - по фронту сигнала осуществляется расчет значения очередного члена последовательности от предыдущего значения, ^Reset - по фронту сигнала генератор расчитывает значение очередного члена последовательности от значения u0. Имеет один числовой выход Out со значением очередного члена последовательности. Практически потребность в макросе может возникать при тестировании некоторых решений. |
![]() |
![]() |
![]() |
#4 |
Senior Member
Регистрация: Jul 2007
Адрес: Калининград
Сообщения: 422
Благодарил(а): 0 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
![]()
Комментарии внутри макроса.
Переключатель энергонезависимый, НО ресурс EEPROM бережет. Запоминает текущее положение переключателя после истечения тайм-аута, который индицируется на экране прогресс-баром. |
![]() |
![]() |
![]() |
#5 |
Новичок
Регистрация: Jan 2008
Сообщения: 4
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
![]()
Макрос для работы с журналом
Можно вводить 6 различных сообщений и 30 разных аварий + звонок Сообщение или авария всегда запишутся в память, даже если появились одновлеменно. Возможно расширение количества аварий N_av - номер аварии (к макросу журнал) Готов (от макроса журнал) |
![]() |
![]() |
![]() |
#6 |
Новичок
Регистрация: Sep 2009
Сообщения: 20
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
![]()
Макрос управления спаркой насосов. Смотрит за перепадом давления и минимальным давлением на входе.
|
![]() |
![]() |
![]() |
#7 |
Новичок
Регистрация: Sep 2009
Сообщения: 20
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
![]()
Следит за давлением на входе и за перепадом давления. авария перепад давления запоминается.
http://shrelec.narod.ru/RMK/pump.msl |
![]() |
![]() |
![]() |
#8 |
Новичок
Регистрация: Sep 2009
Сообщения: 20
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
![]()
Постраничный вывод значения. У меня организован для вывода значений датчиков. Листание - клавиша вниз.
|
![]() |
![]() |
![]() |
#9 |
Новичок
Регистрация: 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 (выложен ранее) |
![]() |
![]() |
![]() |
#10 |
Новичок
Регистрация: Sep 2009
Сообщения: 20
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
![]()
График температуры (tграф=f(tнар)
Прямая Y=kx+a Входы T1 при -20 на улице Т2 при +15 на улице Тstreet - воздух на улице Выход Tgraf И хочу сказать спасибо, всем выложившим свои макросыя. Я первый раз столкнулся с программированием, и если бы не ваши наработки, то возился бы я очень и очень долго. Они помогли понять и освоить некоторые приемы. Самое сложное оказалось не заставить систему работать, а организовать более менее нормальное общение контроллера с человеком ![]() Последний раз редактировалось 01zzz, 11.11.2009 в 18:10 |
![]() |
![]() |
![]() |
#11 |
Senior Member
Регистрация: Jul 2007
Адрес: Калининград
Сообщения: 422
Благодарил(а): 0 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
![]()
Что-то давно здесь никто ничем новеньким не делился
![]() Предлагаю всеобщему вниманию макрос индикации аварии и двух типов тревог на единственной лампочке. При аварии лампа горит постоянно. При тревоге 1 периодически однократно вспыхивает. При тревоге 2 - двухкратно, При обеих тревогах - трехкратно. Можно сделать, чтобы лампа моргала четыре-пять-шесть-... раз, но глаз это уже плохо воспринимает. __________________ Автомат АК - самый распространенный преобразователь стека в очередь |
![]() |
![]() |
![]() |
#12 |
Senior Member
Регистрация: Aug 2010
Сообщения: 718
Благодарил(а): 1 раз(а)
Поблагодарили:
15 раз(а) в 12 сообщениях
|
![]()
Макрос меню состояния входов/выходов Пикселя.
|
![]() |
![]() |
![]() |
#13 |
Senior Member
Регистрация: Aug 2010
Сообщения: 718
Благодарил(а): 1 раз(а)
Поблагодарили:
15 раз(а) в 12 сообщениях
|
![]()
И еще раз входы/выходы Пикселя.
![]() Альтернативная замена "конструкторскому" меню, вызываемому по F3 для Пикселя. (Живет в блоке "Основной экран" под именем "%") Показывает состояние входов/выходов. Не тестировал вообще, нет возможности пока. Переделан из родного конструкторского с минимальными изменениями, так что должен работать, надеюсь. Буду благодарен, если кто-то проверит и отпишется. |
![]() |
![]() |
![]() |
#14 |
Senior Member
Регистрация: Jul 2007
Адрес: Калининград
Сообщения: 422
Благодарил(а): 0 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
![]()
В дополнение темы "Управление пикселем через интернет".
Чтобы кто попало по известному IP-адресу не изменял уставки в контроллере, они блокируются кодом доступа. Код-запрос постоянно меняется, код-ответ вычисляется клиентским приложением как полином запроса. Для кулхацкеров защита более чем достаточная. В прицепе: - проект SMLogix для Пикселя; - экспортированная из SMLogix карта modbus-переменных проекта; - файл конфигурации для Lectus OPC/DDE сервера; - демо-клиент на основе таблички Excel. Для наглядности полином рассчитывается и в Лектусе в составной переменной Code_calc, и в Экселе на листе "Вычисления". Пользуйтесь на здоровье... __________________ Автомат АК - самый распространенный преобразователь стека в очередь |
![]() |
![]() |
![]() |
#15 |
Member
Регистрация: Mar 2013
Адрес: Оренбургская обл.
Сообщения: 34
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
![]() ![]() Всё просто. Управление подсветкой дисплея 2G. |
![]() |
![]() |
![]() |
#16 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 17 368
Благодарил(а): 15 раз(а)
Поблагодарили:
609 раз(а) в 556 сообщениях
|
![]() __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. Последний раз редактировалось Arsie, 30.03.2015 в 10:57 |
![]() |
![]() |
![]() |
#17 |
Senior Member
Регистрация: Mar 2008
Адрес: Екатеринбург
Сообщения: 480
Благодарил(а): 46 раз(а)
Поблагодарили:
13 раз(а) в 12 сообщениях
|
![]() ![]() ![]() Но по любому нужная фича |
![]() |
![]() |
![]() |
#18 |
Senior Member
Регистрация: Nov 2008
Адрес: Алтайский край
Сообщения: 111
Благодарил(а): 2 раз(а)
Поблагодарили:
4 раз(а) в 4 сообщениях
|
![]()
Еще один график, на четыре точки, можно урезать до линейного (выкинуть блок выбора диапазона).
|
![]() |
![]() |
![]() |
#19 |
Senior Member
Регистрация: Jun 2007
Сообщения: 1 951
Благодарил(а): 15 раз(а)
Поблагодарили:
21 раз(а) в 21 сообщениях
|
![]()
Макрос - копия макроса "2->^1" который нахдится внутри макроса SCADA(IN). Позволяет организовать штатый режим запуска и останова в дистанционном режиме, если надо удалить макрос SCADA(IN) а возможность запуска по интерфейсу в "дистанционном" режиме оставить. Актуально для тех, кто оптимизирует программу для заталкивания её в 12-ый пиксель (к примеру мне пришлось это делать потому, что пиксель был мастером для панели, и программа не входила в контроллер).
Последний раз редактировалось AlexMan, 06.12.2013 в 14:09 |
![]() |
![]() |
![]() |
#20 |
Senior Member
Регистрация: May 2010
Адрес: Novosibirsk
Сообщения: 739
Благодарил(а): 0 раз(а)
Поблагодарили:
9 раз(а) в 9 сообщениях
|
![]() Генерирует 96 номеров сообщений при появлении аварий с 1 по 96. Генерирует 96 номеров сообщений при снятии аварий со 101 по 196 (+100 к номеру аварии) При одновременном появлении аварий и одновременном пропадании других обрабатываются последовательно все события. Сначала появившиеся аварии, затем снятые аварии. Все паузы и порядок работы сохранены от заводского. Любое событие (появление, снятие аварии) обрабатывается за один такт. Количество тактов на все события, пришедшие одновременно = N*2 (с учетом обязательной паузы с выдачей 0 после события). Занимает 55 блоков. Можно расширить. Каждые 32 аварии + 15 блоков. Не работает на PIXEL12 и SMH2010. При желании можно переделать Протестирован не долгое время, поэтому при ошибках просьба сообщить. __________________ В жизни 2 правила успеха: 1 Не говори всего что знаешь 2 ... |
![]() |
![]() |
![]() |
#21 |
Senior Member
Регистрация: May 2010
Адрес: Novosibirsk
Сообщения: 739
Благодарил(а): 0 раз(а)
Поблагодарили:
9 раз(а) в 9 сообщениях
|
![]()
Работа с unix_time
unix_time - запаковка текущего времени контроллера в юникс время. 11 блоков unix_to_curr_time - распаковка юникс времени. 53 блока Недостаток - при переходе с декабря на январь месяц и день недели пересчитываются 12 тактов. Тщательно не тестировал, но в работе давно. Ошибок пока не выявлено. __________________ В жизни 2 правила успеха: 1 Не говори всего что знаешь 2 ... |
![]() |
![]() |
![]() |
#22 |
Senior Member
Регистрация: May 2010
Адрес: Novosibirsk
Сообщения: 739
Благодарил(а): 0 раз(а)
Поблагодарили:
9 раз(а) в 9 сообщениях
|
![]()
Кусочно-линейные функции на 10 и 20 участков.
Размер 21 блок. Выполняется за 1 такт. Все то же, только добавлен блок выбора диапазона Поскольку использованы недокументированные возможности контроллеров (открытые в конструкторе ИТП), блоки запаролены. __________________ В жизни 2 правила успеха: 1 Не говори всего что знаешь 2 ... |
![]() |
![]() |
![]() |
#23 |
Senior Member
Регистрация: May 2010
Адрес: Novosibirsk
Сообщения: 739
Благодарил(а): 0 раз(а)
Поблагодарили:
9 раз(а) в 9 сообщениях
|
![]()
Определяет текущий порядковый номер оборудования в зависимости от наработки, т.е. сортировка.
Оборудование с наибольшей наработкой получает наименьший текущий порядковый номер. Из оборудования с одинаковой наработкой наименьший текущий порядковый номер получает оборудование с наименьшим станционным номером. Сортировка пузырьковая. Реализация других методов сортировки на FBD при количестве менее 6 бессмысленна. Сортировка производится как правило не чаще 1 раза в сутки, поэтому время сортировки 10 или 40 циклов до выдачи результата не имеет значения. Напротив размер кода значение имеет. Недостатки - при включении питания выдает неправильный результат и требуется первичная сортировка через время инициализации контроллера. __________________ В жизни 2 правила успеха: 1 Не говори всего что знаешь 2 ... |
![]() |
![]() |
Благодарность от: |
![]() |
#24 |
Senior Member
Регистрация: May 2010
Адрес: Novosibirsk
Сообщения: 739
Благодарил(а): 0 раз(а)
Поблагодарили:
9 раз(а) в 9 сообщениях
|
![]()
Работа с защитами.
Введение, выведение защит. Проверка защит на работающем, на остановленном оборудовании. Описание внутри. Все открыто, можно переделать под себя. __________________ В жизни 2 правила успеха: 1 Не говори всего что знаешь 2 ... |
![]() |
![]() |
![]() |
#25 |
Senior Member
Регистрация: May 2010
Адрес: Москва
Сообщения: 765
Благодарил(а): 3 раз(а)
Поблагодарили:
77 раз(а) в 60 сообщениях
|
![]() Может быть, на каких-то других интервалах тоже. Выкладываю свой аналогичный макрос. Ошибочных вычислений вроде нет, надо еще проверять. Вычисление даты производится за 1 такт. 42 блока. Выполняется раза в 1,5 быстрее. ДатыВремя и таймштампы проверял вот по этому онлайн-конвертеру: http://www.cy-pr.com/tools/time/ |
![]() |
![]() |
![]() |
#26 |
Senior Member
Регистрация: May 2010
Адрес: Novosibirsk
Сообщения: 739
Благодарил(а): 0 раз(а)
Поблагодарили:
9 раз(а) в 9 сообщениях
|
![]() Мне надо было искать по MJD или Julian day. http://en.wikipedia.org/wiki/Julian_day __________________ В жизни 2 правила успеха: 1 Не говори всего что знаешь 2 ... Последний раз редактировалось ujin, 12.04.2014 в 00:01 |
![]() |
![]() |
![]() |
#27 |
Senior Member
Регистрация: May 2010
Адрес: Novosibirsk
Сообщения: 739
Благодарил(а): 0 раз(а)
Поблагодарили:
9 раз(а) в 9 сообщениях
|
![]()
Подсчет количества бит в 16 (32) разрядном числе.
В макросе журнал есть один существенный недостаток - не видно активные аварии. Приходится постоянно сбрасывать журнал, что нежелательно. Подсчет количества активных сообщений поможет в данном вопросе. Источник http://www.rsdn.ru/forum/alg/269194.flat __________________ В жизни 2 правила успеха: 1 Не говори всего что знаешь 2 ... |
![]() |
![]() |
![]() |
#28 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 17 368
Благодарил(а): 15 раз(а)
Поблагодарили:
609 раз(а) в 556 сообщениях
|
![]() Что касается о нежелательности сброса при ПНР, то память контроллера гарантированно выдержит около 30 тысяч таких сбросов. Поэтому наличие проблемы несколько преувеличено. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
![]() |
![]() |
![]() |
#29 |
Senior Member
Регистрация: May 2010
Адрес: Novosibirsk
Сообщения: 739
Благодарил(а): 0 раз(а)
Поблагодарили:
9 раз(а) в 9 сообщениях
|
![]() Нежелательно это несколько преувеличено? Наоборот более чем корректно. Скоро подготовлю (вернее оптимизирую) решение по отображению активных аварий. Обещаю выложить. __________________ В жизни 2 правила успеха: 1 Не говори всего что знаешь 2 ... |
![]() |
![]() |
![]() |
#30 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 17 368
Благодарил(а): 15 раз(а)
Поблагодарили:
609 раз(а) в 556 сообщениях
|
![]() При ПНР история не актуальна. А при эксплуатации это единичные аварии. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Можно ли применять пустые макросы (нельзя) | 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 |