![]() |
![]() ![]() |
|
SMLogix Вопросы о работе в среде SMLogix и о FBD-программировании |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
![]() |
#31 |
Senior Member
Регистрация: May 2010
Адрес: Novosibirsk
Сообщения: 739
Благодарил(а): 0 раз(а)
Поблагодарили:
9 раз(а) в 9 сообщениях
|
![]() Последнее время не всегда пусконаладка имеет исходные программы. А эксплуатация не всегда стремится все подробно рассказать, что случилось. __________________ В жизни 2 правила успеха: 1 Не говори всего что знаешь 2 ... |
![]() |
![]() |
![]() |
#32 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 17 343
Благодарил(а): 15 раз(а)
Поблагодарили:
606 раз(а) в 554 сообщениях
|
![]() Хотя и не буду спорить, что полноценный журнал всегда круче ![]() __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
![]() |
![]() |
![]() |
#33 |
Senior Member
Регистрация: May 2010
Адрес: Москва
Сообщения: 763
Благодарил(а): 3 раз(а)
Поблагодарили:
77 раз(а) в 60 сообщениях
|
![]()
Макрос для удобного (если надо изменить на несколько единиц или десятые доли) изменения числовых уставок.
Выкладываю сразу в программе-примере. Редактор.psl Нажимаем на кнопку Enter (OK) уставка переводится в режим редактирования, что отображается миганием.В примере только одна уставка, но макрос создавался с расчетом на возможность мультиплексирования. Видео демонстрации: http://youtu.be/Q3s1LxdL1GE |
![]() |
![]() |
![]() |
#34 |
Senior Member
Регистрация: May 2010
Адрес: Novosibirsk
Сообщения: 739
Благодарил(а): 0 раз(а)
Поблагодарили:
9 раз(а) в 9 сообщениях
|
![]()
Наброски по текущим авариям.
32 Аварии. Состояния 1 Tripped Alarm (ON), 2 Reset Alarm (OFF), 3 Acknowledged Alarm. Подтверждение кнопкой Enter. Есть наработки по отображению времени появления, сброса. Так же есть подходы по увеличению количества. Пока времени на это нет. __________________ В жизни 2 правила успеха: 1 Не говори всего что знаешь 2 ... |
![]() |
![]() |
![]() |
#35 |
Senior Member
Регистрация: Oct 2010
Адрес: Москва
Сообщения: 404
Благодарил(а): 29 раз(а)
Поблагодарили:
2 раз(а) в 2 сообщениях
|
![]()
Очередная версия "таймштампа".
Не имеет ничего общего с Unix-Time: макрос просто сохраняет полученные от GetData и GetRealTime данный в одну переменную (long) - соответственно, для вычислений формат непригоден, но блок CMP(long) работает с ним абсолютно корректно. скопировать не смогу: домашний комп сдох, с рабочего низ-зя - поэтому пока ссылкой: http://forum.segnetics.com/showpost....9&postcount=19 Макрос быстрый, но жадный до памяти - на Pixel-12 применять с осторожностью... |
![]() |
![]() |
![]() |
#36 |
Senior Member
Регистрация: Dec 2011
Сообщения: 690
Благодарил(а): 0 раз(а)
Поблагодарили:
9 раз(а) в 9 сообщениях
|
![]()
ШИМ-модулятор.
Традиционные ШИМ-модуляторы имеют ряд врожденных особенностей: 1. Разрешающая способность ШИМ пропорциональна периоду ШИМ. При характерном времени цикла контроллера 0,1 с и разрешающей способности ШИМ 0,1% период ШИМ будет 100 с. 2. Реально в процессе модуляции участвует только одно значение переменной за весь период ШИМ. При разрешающей способности ШИМ 0,1% в процессе модуляции участвует 1 значение переменной из 1000. Все это накладывает некоторые ограничения на область применения ШИМ: переменная не должна значительно меняться в течении периода ШИМ. Если ограничить изменение переменной в течении периода ШИМ 1%, то при разрешающей способности ШИМ 0,1% и характерном времени цикла контроллера 0,1 с характерное время процесса составит 10000 с или 2 ч 46 мин. Попытка применить ШИМ для более быстротекущих процессов требует уменьшить разрешающую способность ШИМ или работать по среднему значению переменной за предыдущий период ШИМ. Первый вариант снижает точность регулирования, второй вносит задержку на период ШИМ. Но кардинально ни тот ни другой вариант ни чего не меняет. Существует специальный вид ШИМ модуляторов, быстродействие которых ограничено только циклом работы контроллера. Это так называемый ШИМ Бразенхейма. В процессе модуляции участвуют все значения переменной. Минимальное характерное время процесса более 10-15 тиков контроллера. Пример такого модулятора во вложении. Входной сигнал 0-1000, разрешение - 8 бит или около 0,4%. __________________ Нет абсолютно бездарных людей. Каждый бездарен в своей области. |
![]() |
![]() |
![]() |
#37 |
Senior Member
Регистрация: Dec 2007
Адрес: Томск
Сообщения: 3 847
Благодарил(а): 224 раз(а)
Поблагодарили:
141 раз(а) в 133 сообщениях
|
![]() Код:
#ifdef BrezenhemEnable //**************** BEGIN тест Брезенхема *************** #define CARRY_BIT 0b01000000 // выбор разрядности метода bitPeriod = !bitPeriod; if(bitPeriod) { static unsigned char accum; //, tmp; accum += speedFan; // вход той же разрядности if(accum & CARRY_BIT) bitTriacEnable = 1; else bitTriacEnable = 0; accum &= ~CARRY_BIT; ccpVal = MaxCCP_Val; } //**************** END тест Брезенхема *************** #endif // эта конструкция работает!!!!!!!! |
![]() |
![]() |
![]() |
#38 |
Senior Member
Регистрация: Aug 2013
Адрес: Москва
Сообщения: 600
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
![]()
Генератор импульсов. n импульсов за dt секунд.
Импульсы равномерно распределены по времени. Если запросить много импульсов за мало времени, то из-за округления деления dt/n может накапливаться ошибка, и тогда в конце цикла работы макроса будет период молчания (например - тик 100, n=40, dt=10 - 21 такт в конце молчание). Наилучший вариант - когда dt/n без остатка. |
![]() |
![]() |
![]() |
#39 |
Senior Member
Регистрация: Aug 2010
Сообщения: 718
Благодарил(а): 1 раз(а)
Поблагодарили:
15 раз(а) в 12 сообщениях
|
![]()
Легко масштабируемый по количеству контуров "График отопления" для замены такового из "Конструктора ИТП".
Собственно конструкторский и переделан. Функционал полностью соответствует конструкторскому. Поправленный Последний раз редактировалось Arsie, 28.09.2015 в 20:37 |
![]() |
![]() |
![]() |
#40 |
Новичок
Регистрация: Mar 2015
Сообщения: 2
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
![]()
Может кому пригодится - макрос реализует альф-бета фильтр.
Макрос делался по этой статье : https://en.wikipedia.org/wiki/Alpha_beta_filter. У фильтра есть некоторые недостатки - так называемый "звон", задержка сигнала на выходе. Но фильтр рабочий - проверялся на датчиках давления в условиях очень сильных помех. |
![]() |
![]() |
![]() |
#41 |
Senior Member
Регистрация: Dec 2011
Сообщения: 690
Благодарил(а): 0 раз(а)
Поблагодарили:
9 раз(а) в 9 сообщениях
|
![]() 2. Реализация фильтра кривая. Почитал статью, посмотрел макрос, выложенный ATS в версии 3.25. Автор макроса не только не понял самой идеи альфа-бета фильтра, но очень свободно отнесся к синтаксису языка Си. 3. Идея альфа-бета фильтра заключается в том, что фильтруемому параметру соответствуют 2 переменные: значение параметра и скорость изменения параметра. На основании этих 2 переменных, вычисленных в предыдущем такте, делается прогноз состояния параметра в текущем такте: xk = xk_1 + ( vk_1 * dt ), где xk - прогнозируемое значение параметра в текущем такте xk_1 - значение параметра в предыдущем такте vk_1 - скорость изменения параметра в предыдущем такте dt - длительность такта Скорость изменения в текущем такте приравнивается к скорости изменения в предыдущем такте: vk = vk_1, где vk_1 - скорость изменения параметра в предыдущем такте vk - скорость изменения параметра в текущем такте Далее находится невязка между текущим значением параметра и прогнозируемым значением параметра, вычисленным по значению и скорости параметра из предыдущего такта: rk = xm - xk;где xk - прогнозируемое значение параметра в текущем такте xm - значение параметра в текущем такте rk - невязка Далее прогнозируемые значения параметра и скорости параметра корректируются в соответствии со значениями a и b: xk += a*rk что эквивалентно записи xk1= xk + a*rk vk += (b*rk )/dt что эквивалентно записи vk1=vk + (b*rk )/dt, где xk1 - уже значение на выходе фильтра vk1 - значение скорости изменения Далее вычисленные значения запоминаются, для использования в следующем такте: xk_1 = xk1 и vk_1 = vk1 4. Если мы положим параметр b =0, то получим обычный RC-фильтр. 5. В принципе, альфа-бета фильтр может дать лучшие результаты, чем RC-фильтр. Но тут все зависит от правильности выбора альфа-бета от установленного тика контроллера, параметров самого сигнала и параметров наложенного на него шума. Вычисления оптимальных альфа-бета это отдельная тема и здесь не рассматривается. 6. При неоптимальных альфа-бета от фильтра больше вреда чем пользы: пульсации на переходной характеристике, дребезг в установившемся режиме, зависимость результатов от времени тика при неизменных альфа-бета. Так что в нашем случае обычный RC-фильтр предпочтительней. Если не хватает степени фильтрации - ставьте последовательно 2-3 RC-фильтра. 7. Что бы не быть голословным, сделал тестовый проект, где можно посмотреть поведение фильтров: альфа-бета-фильтр (ATS) альфа-бета-фильтр (TVF) RC-фильтр Смотрите, сравнивайте. __________________ Нет абсолютно бездарных людей. Каждый бездарен в своей области. |
![]() |
![]() |
![]() |
#42 |
Senior Member
Регистрация: Jan 2012
Адрес: Саратов
Сообщения: 179
Благодарил(а): 1 раз(а)
Поблагодарили:
3 раз(а) в 3 сообщениях
|
![]()
Ещё два фильтра:
Последний раз редактировалось Arsie, 04.12.2015 в 09:52 |
![]() |
![]() |
![]() |
#43 |
Member
Регистрация: Feb 2015
Адрес: Ufa
Сообщения: 75
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
![]()
Простой макрос вывода времени и даты для ленивых.
Описание есть в теле макроса. Выводит дату и время в разные начальные координаты. Можно выводить только время или дату. Можно убрать секунды. Выводит лидирующий ноль в позиции секунд, минут, часов, даты и месяца. ![]() Последний раз редактировалось Arsie, 04.12.2015 в 09:44 |
![]() |
![]() |
![]() |
#44 |
Senior Member
Регистрация: Aug 2013
Адрес: Москва
Сообщения: 600
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
![]()
Макросы пересчета сопротивления в температуру согласно ГОСТ 6651-2009, и не только
![]() В ГОСТ кстати, есть ошибки. __________________ Всё, что нельзя выразить в цифрах — это не наука, это — мнение. |
![]() |
![]() |
![]() |
#45 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 17 343
Благодарил(а): 15 раз(а)
Поблагодарили:
606 раз(а) в 554 сообщениях
|
![]() __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
![]() |
![]() |
![]() |
#46 |
Senior Member
Регистрация: Aug 2013
Адрес: Москва
Сообщения: 600
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
![]() ![]() И тут же ниже - "Б.3 Медные термопреобразователи сопротивления W100 = 1,426" для для 100 М а= 0,00426 °C–1 ![]() "Смешались в кучу кони, люди,"... __________________ Всё, что нельзя выразить в цифрах — это не наука, это — мнение. |
![]() |
![]() |
![]() |
#47 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 17 343
Благодарил(а): 15 раз(а)
Поблагодарили:
606 раз(а) в 554 сообщениях
|
![]() ![]() __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
![]() |
![]() |
![]() |
#48 |
Senior Member
Регистрация: Aug 2013
Адрес: Москва
Сообщения: 600
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
![]()
ГОСТ 6651-2009 исправленный.
__________________ Всё, что нельзя выразить в цифрах — это не наука, это — мнение. |
![]() |
![]() |
![]() |
#49 |
Senior Member
Регистрация: Dec 2007
Адрес: Томск
Сообщения: 3 847
Благодарил(а): 224 раз(а)
Поблагодарили:
141 раз(а) в 133 сообщениях
|
![]()
в конструкторском расписании на базе Таймер v2.31 заменил
старт/стоп на стоп/мин/норм/макс на выход идет 0/1/2/3 0 = стоп, 1/2/3 = пуск в расписании появилась не только уставка по Т, но и по расходу. отладка была только "на столе", поэтому внимательней плз, вдруг чего накосячил |
![]() |
![]() |
![]() |
#50 |
Senior Member
Регистрация: Aug 2013
Адрес: Москва
Сообщения: 600
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
![]()
Вычисление влажности на основании температуры сухого и влажного термометра.
На основании этого документа. Скорость потока воздуха = 0, иначе (при 2м/с) - ,795 заменить на 0,662. __________________ Всё, что нельзя выразить в цифрах — это не наука, это — мнение. |
![]() |
![]() |
![]() |
#51 |
Senior Member
Регистрация: Aug 2013
Адрес: Москва
Сообщения: 600
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
![]() ![]() ![]() Удалите пожалуйста предыдущее ![]() Тип датчика: REGIN серий TG-xxxx (не Pt) 00 - TG-xxxx -30...30°C 01 - TG-xxxx 0...30°C 02 - TG-xxxx 0...60°C 03 - TG-xxxx 20...50°C 04 - TG-xxxx 40...70°C 05 - TG-xxxx 60...90°C 06 - TG-xxxx 60...120°C Для контроллеров и модулей с диапазоном от 10 кОм до 15 кОм. Данные отсюда. __________________ Всё, что нельзя выразить в цифрах — это не наука, это — мнение. |
![]() |
![]() |
![]() |
#52 |
Senior Member
Регистрация: Jun 2015
Сообщения: 515
Благодарил(а): 22 раз(а)
Поблагодарили:
9 раз(а) в 9 сообщениях
|
![]()
Покритикуйте счетчик моточасов.
как я понял, у стандартных есть большие погрешности, если контролируемые периоды включения меньше рекомендуемых (450 сек) в моем отсчет минут ведется с блока реального времени, запись в EEPROM - по отключению механизма, либо раз в час. |
![]() |
![]() |
![]() |
#53 |
Уволен из Сегнетикс
Регистрация: Nov 2015
Адрес: CПб/ВЛГ
Сообщения: 0
Благодарил(а): 0 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
![]()
Не запускал, но судя по всему, экспоненциально будет расти насчитанное количество минут...
__________________ В сегнетиксе не работаю с самого начала 2019 года. |
![]() |
![]() |
![]() |
#54 |
Senior Member
Регистрация: Jun 2015
Сообщения: 515
Благодарил(а): 22 раз(а)
Поблагодарили:
9 раз(а) в 9 сообщениях
|
![]()
вчера вечером в дополнение к обычным счетчикам прикрутил пару этих,
програмно с имитировал включение\отключение 2 механизмов, с периодом около 6 минут результаты: Т1 - (стандартный) = 7.388ч Т1 ( мой макрос) = 7.366ч Т2 - (стандартный) = 12ч Т2 ( мой макрос) = 12,3ч Последний раз редактировалось andre, 27.10.2016 в 09:29 |
![]() |
![]() |
![]() |
#55 |
Member
Регистрация: Feb 2015
Адрес: Ufa
Сообщения: 75
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
![]()
Простой макрос вывода на весь экран 3-х цифр, точки и одного символа.
Используется для индикации управляющего напряжения для ПЧ. Для производства вольты, для эксплуатации - проценты. Выводятся вольты x.xxV и проценты xx.x%. На вход приходит 3-х значное число в формате Int. Оно раскладывается на 3 цифры - сотни, десятки, единицы. В зависимости от варианта точка ставится либо после первой, либо после второй цифры и меняется знак вольты на проценты. Последний символ "короткий" пробел шириной в 2 пиксела, для затирания остатка в хвосте экрана. Прилагаю файлы с цифрами, точкой и 2 символа - V или % сделанные из TTF шрифта Consolas в формате BMP. Размер цифр подогнан под высоту экрана Pixel. Может есть и более красивое решение, но надо было быстро и без SMART. |
![]() |
![]() |
![]() |
#56 |
Senior Member
Регистрация: Dec 2007
Адрес: Томск
Сообщения: 3 847
Благодарил(а): 224 раз(а)
Поблагодарили:
141 раз(а) в 133 сообщениях
|
![]()
Объект с запаздыванием для эмуляции, например, калорифера.
самый простой пример применения: на вход макроса подается выход сигнала, например, ВоКал. с выхода макроса получаем температуру за калорифером. более сложный пример: используем два макроса последовательно(см.картинки) на вход первого подаем выход ВоКал, с его выхода снимаем значение Тобратки и подаем её на вход второго макроса объекта. с выхода второго получаем сигнал температуры воздуха в канале. можно еще усложнить: берем предыдущий пример, с выхода второго макроса получаем значение температуры воздуха за калорифером и по формуле центр масс получаем смесь с наружной температурой в некоторой пропорции, которую формирует ВоОхл. и уже результат этой "смеси" используем как Тканала. см.тут и картинки в прицепе в этом примере Тобр.мин = 35, Т.прогрев = 40, а также предполагается, что максимальная смесь = половина на половину. Последний раз редактировалось LordN, 19.05.2017 в 20:05 |
![]() |
![]() |
![]() |
#57 |
Senior Member
Регистрация: Dec 2007
Адрес: Томск
Сообщения: 3 847
Благодарил(а): 224 раз(а)
Поблагодарили:
141 раз(а) в 133 сообщениях
|
![]() сильно помог для создания процедуры блокировки работы ступени с наработкой на dN циклов больше, чем ступень с минимальной наработкой в группе из шести. это для совместной работы с макросом типа Dev15... |
![]() |
![]() |
![]() |
#58 |
Senior Member
Регистрация: Aug 2010
Сообщения: 718
Благодарил(а): 1 раз(а)
Поблагодарили:
15 раз(а) в 12 сообщениях
|
![]()
Макрос определяет минимальное и максимальное число из заданных на входах.
Сравнивает от 2 до 32 чисел. Весит всего 25 блоков. Независимо от количества опрашиваемых входов, макрос выполняется в один тик основной программы, то есть данные на выходе обновляются в том же цикле основной программы, в котором изменяются входы. При отключении полностью исключается из обработки программы, не расходуя вхолостую ресурс процессора. |
![]() |
![]() |
![]() |
#59 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 17 343
Благодарил(а): 15 раз(а)
Поблагодарили:
606 раз(а) в 554 сообщениях
|
![]() __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
![]() |
![]() |
![]() |
#60 |
Senior Member
Регистрация: Dec 2007
Адрес: Томск
Сообщения: 3 847
Благодарил(а): 224 раз(а)
Поблагодарили:
141 раз(а) в 133 сообщениях
|
![]() |
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Можно ли применять пустые макросы (нельзя) | 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 |