<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Электронный научно-практический журнал «Современные научные исследования и инновации» &#187; пользовательская библиотека</title>
	<atom:link href="http://web.snauka.ru/issues/tag/polzovatelskaya-biblioteka/feed" rel="self" type="application/rss+xml" />
	<link>https://web.snauka.ru</link>
	<description></description>
	<lastBuildDate>Sat, 18 Apr 2026 09:41:14 +0000</lastBuildDate>
	<language>ru</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Алгоритм цифровой задержки пользовательской библиотеки</title>
		<link>https://web.snauka.ru/issues/2014/06/35601</link>
		<comments>https://web.snauka.ru/issues/2014/06/35601#comments</comments>
		<pubDate>Tue, 10 Jun 2014 10:50:57 +0000</pubDate>
		<dc:creator>IngvarrNorsk</dc:creator>
				<category><![CDATA[05.00.00 ТЕХНИЧЕСКИЕ НАУКИ]]></category>
		<category><![CDATA[a user library]]></category>
		<category><![CDATA[algorithm digital delay]]></category>
		<category><![CDATA[delay]]></category>
		<category><![CDATA[digital delay]]></category>
		<category><![CDATA[implementation of the algorithm]]></category>
		<category><![CDATA[алгоритм цифровой задержки]]></category>
		<category><![CDATA[задержка]]></category>
		<category><![CDATA[пользовательская библиотека]]></category>
		<category><![CDATA[реализация алгоритма]]></category>
		<category><![CDATA[цифровая задержка]]></category>

		<guid isPermaLink="false">https://web.snauka.ru/?p=35601</guid>
		<description><![CDATA[Возникают ситуации, когда сигнал поступает в ПЛК с задержкой. Для необходимо задержать поступление сигнала на вычисление. Такая коррекция так же может быть применена для моделирования динамических свойств объекта [1]. Если обратиться к программному обеспечению, то можно отметить что в кросс-средстве Редитор для контроллера Ремиконт Р-130 имеется подобный алгоритм. Это алгоритм ЗАП (рисунок 1) [1]. Рисунок [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Возникают ситуации, когда сигнал поступает в ПЛК с задержкой. Для необходимо задержать поступление сигнала на вычисление. Такая коррекция так же может быть применена для моделирования динамических свойств объекта [1].</p>
<p style="text-align: justify;">Если обратиться к программному обеспечению, то можно отметить что в кросс-средстве Редитор для контроллера Ремиконт Р-130 имеется подобный алгоритм. Это алгоритм ЗАП (рисунок 1) [1].</p>
<p style="text-align: center;" align="center"><a href="https://web.snauka.ru/issues/2014/06/35601/1-184" rel="attachment wp-att-35602"><img class="size-full wp-image-35602 aligncenter" src="https://web.snauka.ru/wp-content/uploads/2014/06/1.png" alt="Функциональная схема алгоритма «Запаздывание ЗАП»." width="441" height="230" /></a></p>
<p align="center">Рисунок 1 – Функциональная схема алгоритма «Запаздывание ЗАП».</p>
<p style="text-align: justify;">При этом стандартом программирования промышленных контроллеров МЭК 61131-3 также предусматривается реализация алгоритма цифровой задержки (рисунок 2) [2]. В таблице 1 представлен перечень входов и выходов функционального блока «DELAY» из стандарта МЭК 61131-3.</p>
<p>&nbsp;</p>
<p style="text-align: center;" align="center"><a href="https://web.snauka.ru/issues/2014/06/35601/2-124" rel="attachment wp-att-35603"><img class="size-full wp-image-35603 aligncenter" src="https://web.snauka.ru/wp-content/uploads/2014/06/23.jpg" alt="Функциональный блок цифровой задержки в стандарте МЭК 61131-3" width="388" height="302" /></a></p>
<p align="center">Рисунок 2 – Функциональный блок цифровой задержки в стандарте МЭК 61131-3.</p>
<p>Таблица 1 – Входы и выходы алгоритма «DELAY» стандарта МЭК 61131-3.</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="68"></td>
<td width="326">
<p align="left">Назначение</p>
</td>
<td width="135">
<p align="center">Входы/выходы</p>
</td>
<td width="110">
<p align="center">Тип переменной</p>
</td>
</tr>
<tr>
<td rowspan="3" width="68">Входы</td>
<td width="326">
<p align="left">Запуск алгоритма</p>
</td>
<td width="135">
<p align="center">RUN</p>
</td>
<td width="110">
<p align="center">BOOL</p>
</td>
</tr>
<tr>
<td width="326">
<p align="left">Основной вход</p>
</td>
<td width="135">
<p align="center">XIN</p>
</td>
<td width="110">
<p align="center">REAL</p>
</td>
</tr>
<tr>
<td width="326">
<p align="left">Значение задержки</p>
</td>
<td width="135">
<p align="center">IN</p>
</td>
<td width="110">
<p align="center">DWORD</p>
</td>
</tr>
<tr>
<td width="68">Выход</td>
<td width="326">Основной выход</td>
<td width="135">
<p align="center">XOUT</p>
</td>
<td width="110">
<p align="center">REAL</p>
</td>
</tr>
</tbody>
</table>
<p><span style="text-align: justify;">Если обратиться к современным средам автоматизации, таким как Codesys [3], Step 7 [4, 5], PC Worx [6], TwinCat [7], то данный алгоритм отсутствует в стандартных библиотеках перечисленных средств программирования.</span></p>
<p style="text-align: justify;">В данной статье предлагается рассмотреть возможность применения алгоритма цифровой задержки из пользовательской библиотеки упомянутой в статьях [8, 9, 10]. В качестве среды разработки для него было выбрана программная среда Codesys, поскольку среди перечисленных имеет широкий круг программируемых ПЛК. На рисунке 3 представлен внешний вид функционального блока «DELAY» на графических языках FBD / CFC. В таблице 2 представлены значения входных и выходных переменных функционального блока «DELAY».</p>
<p style="text-align: center;" align="center"><a href="https://web.snauka.ru/issues/2014/06/35601/3-87" rel="attachment wp-att-35604"><img class="aligncenter size-full wp-image-35604" src="https://web.snauka.ru/wp-content/uploads/2014/06/33.jpg" alt="Внешний вид функционального блока «DELAY» для пользовательской библиотеки" width="389" height="289" /></a></p>
<p align="center">Рисунок 3 – Внешний вид функционального блока «DELAY»для пользовательской библиотеки.</p>
<p align="left">Таблица 2 – Входы и выходы алгоритма «DELAY».</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="68"></td>
<td width="326">Назначение</td>
<td width="135">Входы/выходы</td>
<td width="110">Тип переменной</td>
</tr>
<tr>
<td rowspan="3" width="68">Входы</td>
<td width="326">Основной вход</td>
<td width="135">IN</td>
<td width="110">REAL</td>
</tr>
<tr>
<td width="326">Значение задержки</td>
<td width="135">N</td>
<td width="110">INT</td>
</tr>
<tr>
<td width="326">Сброс работы алгоритма</td>
<td width="135">RESET</td>
<td width="110">BOOL</td>
</tr>
<tr>
<td rowspan="2" width="68">Выход</td>
<td width="326">Основной выход</td>
<td width="135">OUT</td>
<td width="110">REAL</td>
</tr>
<tr>
<td width="326">Сигнал о работе алгоритма</td>
<td width="135">Q</td>
<td width="110">BOOL</td>
</tr>
</tbody>
</table>
<p>На рисунке 4 представлена реализация алгоритма цифровой задержки на языке ST.<span style="text-align: center;"> </span></p>
<p style="text-align: center;" align="center"><a href="https://web.snauka.ru/issues/2014/06/35601/4-72" rel="attachment wp-att-35605"><img class="aligncenter size-full wp-image-35605" src="https://web.snauka.ru/wp-content/uploads/2014/06/4.png" alt="Реализация алгоритма «DELAY»на языке ST" width="297" height="444" /></a></p>
<p align="center">Рисунок 4. Реализация алгоритма «DELAY» на языке ST.</p>
<p><span style="text-align: justify;">При этом если на вход N, отвечающий за количество циклов задержки подано нулевое значение, или на вход RESET, отвечающий за сброс работы алгоритма подана значение TRUE, алгоритм не работает, о чем сигнализирует выход Q, принимающий значение FALSE, и на выход OUT подаётся вход IN. В противном случае Q принимает значение TRUE, а входная переменная буферизируется во временной переменной BUF. Далее организован цикл с накоплением переменной i. При этом выходной переменной OUT присваивается значение буфера BUF, что организует задержку.</span></p>
<p style="text-align: justify;">Проверка работоспособности алгоритма «цифровой задержки DELAY» была проведена в среде Codesys в режиме эмуляции, а также при использовании контроллера ОВЕН ПЛК-150.У-М. Для этого была использована программа, представленная на рисунке 5, в результате работы программы была получена диаграмма, изображенная на рисунке 6.</p>
<p align="center"><a href="https://web.snauka.ru/issues/2014/06/35601/5-42" rel="attachment wp-att-35606"><img class="aligncenter size-full wp-image-35606" src="https://web.snauka.ru/wp-content/uploads/2014/06/5.png" alt="Программа для проверки алгоритма «DELAY»." width="640" height="170" /></a></p>
<p align="center">Рисунок 5. Программа для проверки алгоритма «DELAY».</p>
<p style="text-align: center;" align="center"><a href="https://web.snauka.ru/issues/2014/06/35601/6-35" rel="attachment wp-att-35607"><img class="aligncenter size-full wp-image-35607" src="https://web.snauka.ru/wp-content/uploads/2014/06/61.jpg" alt="Демонстрация работы алгоритма «DELAY»." width="773" height="439" /></a></p>
<p align="center">Рисунок 6. Демонстрация работы алгоритма «DELAY».</p>
<p><span style="text-align: justify;">На рисунке 6 изображена трассировка переменных с помощью, встроенной в среду Codesys возможности. Входной сигнал IN представляет собой синусоиду, подаваемый с генератора, Выходной сигнал OUT имеет задержку от входного сигнала на N циклов. В данном случае задержка N равна 60 циклам, в контроллере Овен ПЛК-150.У-М было установлено значение цикла в 2мс, это значит, что задержка функции происходила на 30 мс. Это значение можно выставить в диапазоне от 1 до 4095 циклов. Это значение – размер буфера памяти BUF и оно может быть отрегулировано в соответствии с нуждами пользователя.</span></p>
<p style="text-align: justify;">Разработанный алгоритм имеет широкие возможности в области применения в различных программах. Помимо этого, данный алгоритм может быть использован в процессе обучения и исследования возможностей современных программных комплексов.</p>
]]></content:encoded>
			<wfw:commentRss>https://web.snauka.ru/issues/2014/06/35601/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Алгоритм звена реального дифференцирования</title>
		<link>https://web.snauka.ru/issues/2014/07/35940</link>
		<comments>https://web.snauka.ru/issues/2014/07/35940#comments</comments>
		<pubDate>Thu, 10 Jul 2014 23:43:03 +0000</pubDate>
		<dc:creator>IngvarrNorsk</dc:creator>
				<category><![CDATA[05.00.00 ТЕХНИЧЕСКИЕ НАУКИ]]></category>
		<category><![CDATA[a unit of differentiation]]></category>
		<category><![CDATA[differentiation algorithm]]></category>
		<category><![CDATA[implementation of the algorithm differentiation]]></category>
		<category><![CDATA[numerical differentiation]]></category>
		<category><![CDATA[unit ideal derivation]]></category>
		<category><![CDATA[unit of real derivation]]></category>
		<category><![CDATA[user library]]></category>
		<category><![CDATA[алгоритм дифференцирования]]></category>
		<category><![CDATA[звено дифференцирования]]></category>
		<category><![CDATA[звено идеального дифференцирования]]></category>
		<category><![CDATA[звено реального дифференцирования]]></category>
		<category><![CDATA[пользовательская библиотека]]></category>
		<category><![CDATA[реализация алгоритма дифференцирования]]></category>
		<category><![CDATA[численное дифференцирование]]></category>

		<guid isPermaLink="false">https://web.snauka.ru/?p=35940</guid>
		<description><![CDATA[При разработки пользовательской библиотеке, которая упоминалась в статьях [1–5] был реализован алгоритм дифференцирования. Разработка алгоритма дифференцирования для пользовательской библиотеки обусловлена тем, что в стандартных библиотеках алгоритмы имеют свои недостатки, в частности в алгоритме средств Codesys, PC Worx и TwinCat [6, 7, 8] у алгоритмов дифференцирования отсутствует вход для введения переменной дифференцировав, а время дифференцирования задаётся [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">При разработки пользовательской библиотеке, которая упоминалась в статьях [1–5] был реализован алгоритм дифференцирования. Разработка алгоритма дифференцирования для пользовательской библиотеки обусловлена тем, что в стандартных библиотеках алгоритмы имеют свои недостатки, в частности в алгоритме средств Codesys, PC Worx и TwinCat [6, 7, 8] у алгоритмов дифференцирования отсутствует вход для введения переменной дифференцировав, а время дифференцирования задаётся пользователем, поэтому результат дифференцирования будет завесить от заданного значения цикла в контроллере. А в средстве Step 7[9, 10] вообще отсутствует подобный алгоритм.</p>
<p style="text-align: justify;"><span>Разработанный алгоритм реализует численный метод дифференцирования и является идеальным дифференцирующим звеном     и имеет следующее уравнение и передаточную функцию [11–13]:<br />
</span></p>
<p style="text-align: center;"><img src="https://web.snauka.ru/wp-content/uploads/2014/06/061614_2342_1.png" alt="" /><span> , <img src="https://web.snauka.ru/wp-content/uploads/2014/06/061614_2342_2.png" alt="" />.<br />
</span></p>
<p><span>Внешний вид функционального блока алгоритма дифференцирования представлен на рисунке 1.<br />
</span></p>
<p style="text-align: center;"><img src="https://web.snauka.ru/wp-content/uploads/2014/06/061614_2342_3.jpg" alt="" /><span><br />
</span></p>
<p style="text-align: center;"><span>Рисунок 1 – Функциональный блок алгоритма дифференцирования пользовательской библиотеки.<br />
</span></p>
<p style="text-align: justify;"><span>В таблице 1 представлены входы и выхода алгоритма с описанием типов переменных и значений.<br />
</span></p>
<p style="text-align: justify;"><span>Таблица 1 – Входы и выходы алгоритма «DIFFER».</span></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="68"></td>
<td width="326">Назначение</td>
<td width="135">Входы/выходы</td>
<td width="110">Тип переменной</td>
</tr>
<tr>
<td rowspan="6" width="68">Входы</td>
<td width="326">Основной вход</td>
<td width="135">IN</td>
<td width="110">REAL</td>
</tr>
<tr>
<td width="326">Переменная дифференцирования</td>
<td width="135">TV</td>
<td width="110">INT</td>
</tr>
<tr>
<td width="326">Время дифференцирования</td>
<td width="135">TM</td>
<td width="110">DWORD</td>
</tr>
<tr>
<td width="326">Запуск</td>
<td width="135">SR</td>
<td width="110">BOOL</td>
</tr>
<tr>
<td width="326">Автоматическое или ручное задание времени</td>
<td width="135">CYCLE</td>
<td width="110">STRING</td>
</tr>
<tr>
<td width="326">Сброс</td>
<td width="135">RS</td>
<td width="110">BOOL</td>
</tr>
<tr>
<td rowspan="2" width="68">Выход</td>
<td width="326">Основной выход</td>
<td width="135">OUT</td>
<td width="110">REAL</td>
</tr>
<tr>
<td width="326">Сигнал о работе алгоритма</td>
<td width="135">Q</td>
<td width="110">BOOL</td>
</tr>
</tbody>
</table>
<p style="text-align: justify;">На рисунке 2 и 3 представлена реализация алгоритма «DIFFER» на языке ST.</p>
<p style="text-align: justify;"><img class="aligncenter" style="text-align: center;" src="https://web.snauka.ru/wp-content/uploads/2014/06/061614_2342_4.png" alt="" width="243" height="265" /></p>
<p style="text-align: center;">Рисунок 2 – Заголовок функционального блока и присвоение переменных.</p>
<p style="text-align: center;"><img class="aligncenter" src="https://web.snauka.ru/wp-content/uploads/2014/06/061614_2342_5.png" alt="" width="280" height="326" /></p>
<p style="text-align: center;">Рисунок 3 – Реализация алгоритма числового дифференцирования.</p>
<p style="text-align: justify;">Строки 0001-0011 отвечают за выбор времени дифференцирования. Если вход CYCLE имеет значение «AUTO», то переменная gettime получает значения из системы через функцию «TIME_PLC_DW», разработанную для алгоритма интегрирования, если же значение «USER», то переменная получает значение со входа TM. В строках 0013-0023 происходит дифференцирование при условии запуска и не сброса. Выход OUT получает значения дифференцированной функции, а вход Q сигнализирует о действии алгоритма. В противном случае, если вход SR имеет значение FALSE либо, вход RS имеет значение TRUE, дифференцирование не выполняется, и входной сигнал проходит через блок без изменений. Выход Q получает значение FALSE.</p>
<p style="text-align: justify;">Для проверки работы алгоритма «DIFFER» была использована программа на рисунке 4. Генератор «GEN» настроен на выдачу сигнала треугольной формы. Тестирование было проведено в сравнении с алгоритмом дифференцирования из стандартной библиотеки. Проверка состояла из двухэтапного тестирования. На первом этапе была использована встроенная возможность среды Codesys – «режим эмуляции», на втором этапе использовались контроллеры фирмы ОВЕН, в частности ПЛК110-220.32.Р-М, ПЛК150-220.У-М и ПЛК154-220.У-М.</p>
<p style="text-align: center;"><img class="aligncenter" src="https://web.snauka.ru/wp-content/uploads/2014/06/061614_2342_6.png" alt="" width="554" height="200" /></p>
<p style="text-align: center;">Рисунок 4 – Программа для проверки алгоритма «DIFFER».</p>
<p style="text-align: justify;">В результате были получены диаграммы для двух случае работы. Для случая, когда входная переменной CYCLE имеет значение «USER».</p>
<p style="text-align: center;"><img class="aligncenter" src="https://web.snauka.ru/wp-content/uploads/2014/06/061614_2342_7.jpg" alt="" width="689" height="426" /></p>
<p style="text-align: center;">Рисунок 5 – Диаграмма работы алгоритма «DIFFER». Первый случай.</p>
<p style="text-align: justify;">Диаграмма состоит из трёх графиков: первый – выходной сигнал OUT генератора «GEN», данный сигнал поступает на входы алгоритмов дифференцирования. Второй график – выходной сигнал алгоритма «DERIVATIVE» из стандартной библиотеки, третий график – выходной сигнал алгоритма «DIFFER» пользовательской библиотеки. Из диаграммы видно, что у пользовательского алгоритма дифференцирования амплитуда быстрее возрастает по сравнению со стандартным алгоритмом. Из этого можно сделать вывод, что он быстрее отрабатывает вычисления по сравнению со стандартным.</p>
<p style="text-align: justify;">Второй случай. Переменная CYCLE имеет значение «AUTO». Диаграмма данного случая представлена на рисунке 6.</p>
<p style="text-align: center;"><img class="aligncenter" src="https://web.snauka.ru/wp-content/uploads/2014/06/061614_2342_8.jpg" alt="" width="675" height="413" /></p>
<p style="text-align: center;">Рисунок 6 – Диаграмма работы алгоритма «DIFFER». Второй случай.</p>
<p style="text-align: justify;">Из диаграммы видно, что в алгоритме «DIFFER» возникают неконтролируемые возмущения. Это говорит о том, что данный алгоритм не может быть использован в таком виде. Это звено не может быть технически реализовано из-за того, что порядок правой части его уравнения больше порядке левой части [11], другими словами невозможно получить дельта-функцию и ее производную поскольку они имеют бесконечные значения [12].</p>
<p>Амплитудно-фазовая частотная характеристика звена имеет вид [13]:</p>
<p style="text-align: center;"><img src="https://web.snauka.ru/wp-content/uploads/2014/06/061614_2342_9.png" alt="" />, <img src="https://web.snauka.ru/wp-content/uploads/2014/06/061614_2342_10.png" alt="" />, <img src="https://web.snauka.ru/wp-content/uploads/2014/06/061614_2342_11.png" alt="" />.</p>
<p>    В реальных системах такой вид характеристики звена возможен лишь в ограниченной полосе частот, так как неограниченное увеличение амплитуды с ростом частоты требует бесконечной энергии [13].</p>
<p>Исходя из этого целесообразно использования реального звена дифференцирования, передаточная и переходная функции которого имеет вид [11]:</p>
<p style="text-align: center;"><img src="https://web.snauka.ru/wp-content/uploads/2014/06/061614_2342_12.png" alt="" />, <img src="https://web.snauka.ru/wp-content/uploads/2014/06/061614_2342_13.png" alt="" />.</p>
<p>Фактически это последовательное соединение идеального дифференцирующего и апериодического звеньев [12].</p>
<p>Реализация реального дифференцирующего звена представлена на рисунке 7.</p>
<p style="text-align: center;"><img class="aligncenter" src="https://web.snauka.ru/wp-content/uploads/2014/06/061614_2342_14.png" alt="" width="313" height="341" /></p>
<p style="text-align: center;">Рисунок 7 – Реализация звена реального дифференцирования на языке ST.</p>
<p style="text-align: justify;">    Реализация данного алгоритма отличается от вышеописанного лишь тем, что используется формула для реализации реального дифференцирующего звена, данная формула работает, когда вход CYCLE имеет значение «AUTO», при этом, если этот вход имеет значение «USER», используется формула идеального дифференцирующего звена, это обусловлено проблемами при использовании режима «Эмуляции» среды Codesys (рисунок 8).</p>
<p style="text-align: center;"><img class="aligncenter" src="https://web.snauka.ru/wp-content/uploads/2014/06/061614_2342_15.jpg" alt="" width="662" height="407" /></p>
<p style="text-align: center;"><span>Рисунок 8 – Диаграмма работы алгоритма «REALDIFFER» в режиме «эмуляции».<br />
</span></p>
<p>В конечном виде результат работы алгоритма звена реального дифференцирования представлен на рисунке 9.</p>
<p style="text-align: center;"><img class="aligncenter" src="https://web.snauka.ru/wp-content/uploads/2014/06/061614_2342_16.jpg" alt="" width="638" height="374" /></p>
<p style="text-align: center;"><span>Рисунок 9 – Диаграмма работы алгоритма «REALDIFFER».</span></p>
<p style="text-align: justify;">Как уже отмечалось из диаграммы видно, что у пользовательского алгоритма дифференцирования амплитуда быстрее возрастает по сравнению со стандартным алгоритмом. Из этого можно сделать вывод, что он быстрее отрабатывает вычисления по сравнению со стандартным.</p>
]]></content:encoded>
			<wfw:commentRss>https://web.snauka.ru/issues/2014/07/35940/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
