<?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://technology.snauka.ru/author/andrejantipin/feed" rel="self" type="application/rss+xml" />
	<link>https://technology.snauka.ru</link>
	<description></description>
	<lastBuildDate>Fri, 30 Jan 2026 18:56:12 +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://technology.snauka.ru/2015/01/5458</link>
		<comments>https://technology.snauka.ru/2015/01/5458#comments</comments>
		<pubDate>Tue, 27 Jan 2015 12:00:40 +0000</pubDate>
		<dc:creator>Антипин Андрей Федорович</dc:creator>
				<category><![CDATA[Общая рубрика]]></category>
		<category><![CDATA[automated control system]]></category>
		<category><![CDATA[fuzzy controller]]></category>
		<category><![CDATA[multidimensional logic regulator]]></category>
		<category><![CDATA[system of condition-action rules]]></category>
		<category><![CDATA[автоматизированная система управления]]></category>
		<category><![CDATA[многомерный логический регулятор]]></category>
		<category><![CDATA[нечеткий регулятор]]></category>
		<category><![CDATA[система продукционных правил]]></category>

		<guid isPermaLink="false">https://technology.snauka.ru/?p=5458</guid>
		<description><![CDATA[Разработка автоматизированной системы управления (АСУ) сложными технологическими процессами представляет собой длительный и дорогостоящий процесс, важным элементом которого является отладка программного кода в заключительной стадии. Использование современных эффективных методов и способов проверки программ АСУ с целью обнаружения критических ошибок способствует ускорению процесса отладки и, как следствие, более качественной работе системы автоматизации. Автором предлагается следующий способ проверки [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><span>Разработка автоматизированной системы управления (АСУ) сложными технологическими процессами представляет собой длительный и дорогостоящий процесс, важным элементом которого является отладка программного кода в заключительной стадии.<br />
</span></p>
<p style="text-align: justify;"><span>Использование современных эффективных методов и способов проверки программ АСУ с целью обнаружения критических ошибок способствует ускорению процесса отладки и, как следствие, более качественной работе системы автоматизации.<br />
</span></p>
<p style="text-align: justify;"><span>Автором предлагается следующий способ проверки программного кода АСУ, основанный на концепции семантического, или смыслового, анализа системы продукционных правил (СПП) многомерного логического регулятора (МЛР) с переменными в виде совокупности аргументов двузначной логики.<br />
</span></p>
<p style="text-align: justify;"><span>МЛР, разработанный автором, является разновидностью нечётких регуляторов (НР), где каждому терму непрерывной физической величины на каком-либо отрезке числовой оси отводится отдельный участок, который не перекрывается соседними термами.<br />
</span></p>
<p style="text-align: justify;"><span>Это позволяет каждое значение непрерывной физической величины представить одним и только одним термом <em>T</em>, что наиболее адекватно идентифицирует данную величину в виде совокупности аргументов двузначной логики.<br />
</span></p>
<p style="text-align: justify;"><span>На рис. 1 представлена упрощенная блок-схема МЛР, где И<sub>1</sub>, И<sub>2</sub>, …, И<em><sub>n</sub></em> и Д<sub>1</sub>, Д<sub>2</sub>, …, Д<em><sub>k</sub></em> – интервализаторы и деинтервализаторы МЛР соответственно, объединенные в блоки БИ и БД; <em>X</em><sub>1</sub>, <em>X</em><sub>2</sub>, …, <em>X<sub>n</sub></em> и <em>Z</em><sub>1</sub>, <em>Z</em><sub>2</sub>, …, <em>Z<sub>k</sub></em> – входные и выходные переменные МЛР соответственно; БЛВ – блок логического вывода МЛР;<em> T </em>(<em>X</em><sub>1</sub>), <em>T </em>(<em>X</em><sub>2</sub>), …, <em>T </em>(<em>X<sub>n</sub></em>) и <em>T </em>(<em>Z</em><sub>1</sub>), <em>T </em>(<em>Z</em><sub>2</sub>), …, <em>T </em>(<em>Z<sub>k</sub></em>) –номера термов, значения которых равны логической единице; <em>N</em><sub>тек</sub> – идентификационный номер (ID-номер) продукционного правила в текущий момент <em>t</em>; # – составляющая ID-номера правила, формируемого из порядковых номеров термов <em>T </em>(<em>X</em><sub>1</sub>), <em>T </em>(<em>X</em><sub>2</sub>), …, <em>T </em>(<em>X<sub>n</sub></em>) и <em>T </em>(<em>Z</em><sub>1</sub>), <em>T </em>(<em>Z</em><sub>2</sub>), …, <em>T </em>(<em>Z<sub>k</sub></em>) [1].<br />
</span></p>
<p style="text-align: center;"><img src="https://technology.snauka.ru/wp-content/uploads/2015/01/011515_1640_1.png" alt="" /><span><br />
</span></p>
<p style="text-align: center;"><span>Рисунок 1 – Упрощенная блок-схема МЛР<br />
</span></p>
<p style="text-align: justify;"><span>Семантический анализ системы правил МЛР с целью выявления пустых, противоречащих и дополняющих друг друга правил, а также неиспользуемых термов, основан на концепции, состоящей из следующих основных положений [2]:<br />
</span></p>
<p style="text-align: justify;"><span>а) если продукционное правило не содержит термы переменных МЛР, то это аварийное правило или правило защиты. В МЛР может быть только одно такое правило;<br />
</span></p>
<p style="text-align: justify;"><span>б) если правило или только консеквент (заключение) не содержит термы переменных МЛР, то это <em>пустое</em> правило;<br />
</span></p>
<p style="text-align: justify;"><span>в) если правило <em>A</em> соответствует правилу <em>B</em>, то это повторяющиеся правила;<br />
</span></p>
<p style="text-align: justify;"><span>г) если консеквенты правил <em>A</em> и <em>B</em> идентичны, но их условные части (антецеденты) – нет, то это <em>взаимодополняющие</em> правила. Их можно и нужно объединять при возможности;<br />
</span></p>
<p style="text-align: justify;"><span>д) если антецеденты правил <em>A</em> и <em>B</em> идентичны, но при этом значения их консеквентов не равны друг другу и не содержат одинаковых номеров термов для каждого из используемых блоков МЛР, то это противоречащие правила, иначе это взаимодополняющие правила;<br />
</span></p>
<p style="text-align: justify;"><span>е) если правило <em>A</em> не равно правилу <em>B</em>, то:<br />
</span></p>
<p style="text-align: justify;"><span>– если условные части правил не содержат одинаковых порядковых номеров термов для каждого из используемых блоков, то правила <em>A</em> и <em>B</em> – нормальные, т. е. они удовлетворяют структуре МЛР;<br />
</span></p>
<p style="text-align: justify;"><span>– если правила <em>A</em> и <em>B</em> не нормальные, но при этом значения их консеквентов не равны друг другу и не содержат одинаковых порядковых номеров термов для каждого из блоков МЛР, то это противоречащие правила, иначе это взаимодополняющие правила.<br />
</span></p>
<p style="text-align: justify;"><span>Далее введем понятия полной, частично полной и неполной системы правил.<br />
</span></p>
<p style="text-align: justify;"><span>Предположим, что значение переменной <em>x</em> может меняться в диапазоне [0; 100]. Тогда для системы правил <em>S </em>(здесь и далее примеры программ приведены в синтаксисе языка Pascal):<br />
</span></p>
<p><span>if x &lt; 70 then begin &lt;блок операторов 1&gt; end<br />
</span></p>
<p><span>else if x &lt; 80 then begin &lt;блок операторов 2&gt; end<br />
</span></p>
<p><span>else begin &lt;блок операторов 3&gt; end;<br />
</span></p>
<p style="text-align: justify;"><span>термы переменной <em>x</em> соответствуют следующим интервалам: [0; 70), [70; 80) и (80; 100].<br />
</span></p>
<p style="text-align: justify;"><span>Такая система правил является полной, то есть она описывает все возможные действия при всех возможных вариантах значений переменной <em>x</em>.<br />
</span></p>
<p style="text-align: justify;"><span>В общем виде полная система правил <em>S</em><sub>п</sub> для непрерывной переменной <em>x</em>, представленной совокупностью <em>n</em> термов <em>T</em>, имеет вид<br />
</span></p>
<p><span>if T1 then begin &lt;блок операторов 1&gt; end<br />
</span></p>
<p><span>else if T2 then begin &lt;блок операторов 2&gt; end<br />
</span></p>
<p><span>…<br />
</span></p>
<p><span>else begin &lt;блок операторов n&gt; end;<br />
</span></p>
<p style="text-align: justify;"><span>СПП <em>S</em><sub>чп</sub> для непрерывной переменной <em>x</em> является частично полной, если её можно считать полной, но при этом в ней отсутствует проверка истинности некоторых термов. Например, в системе правил <em>S</em>:<br />
</span></p>
<p><span>if T1 then begin &lt;блок операторов 1&gt; end<br />
</span></p>
<p><span>else if T3 then begin &lt;блок операторов 2&gt; end<br />
</span></p>
<p><span>…<br />
</span></p>
<p><span>else begin &lt;блок операторов n – 1&gt; end;<br />
</span></p>
<p style="text-align: justify;"><span>отсутствует проверка истинности терма <em>T</em><sub>2</sub>, но, если нахождение <em>x</em> в пространстве значений данного терма не влияет на значения других переменных АСУ, то такая система правил является частично полной.<br />
</span></p>
<p style="text-align: justify;"><span>Если система правил не включает все возможные действия при всех возможных вариантах значений переменной <em>x</em>, то она является неполной и обозначается как <em>S</em><sub>н</sub>.<br />
</span></p>
<p style="text-align: justify;"><span>Решить, является ли некоторая СПП полной, частично полной или неполной может только эксперт [5].<br />
</span></p>
<p style="text-align: justify;"><span>Предлагаемый автором способ анализа программ АСУ заключается в следующем:<br />
</span></p>
<p style="text-align: justify;"><span>1. Для того чтобы в полной мере использовать преимущества описанных выше подходов, следует представить АСУ в виде МЛР, а все ее параметры (переменные) интерпретировать эквивалентной совокупностью аргументов двузначной логики (термами).<br />
</span></p>
<p style="text-align: justify;"><span>2. Выделить в программном коде АСУ системы правил для каждой из её переменных, термы которых содержатся в антецедентах правил.<br />
</span></p>
<p style="text-align: justify;"><span>3. Установить тип каждой из выделенных систем правил. Если имеются неполные системы правил, то их необходимо дополнить до полных или, как минимум, до частично полных.<br />
</span></p>
<p style="text-align: justify;"><span>4. Выполнить семантический анализ МЛР, согласно приведенной выше концепции.<br />
</span></p>
<p style="text-align: justify;"><span>Шаги п. 1 и п. 2 можно объединить.<br />
</span></p>
<p style="text-align: justify;"><span>Рассмотрим пример использования данного способа для АСУ дистилляционной колонны, важной составляющей которой является конденсатор дистилляции (КДС). Автоматическое поддержание температурного режима колонны выполняется путём изменения расхода пара в дистиллер [3]. Блок-схема алгоритма регулирования представлена на рисунке 3, где <em>T</em><sub>КДС</sub> – температура газа из КДС [4].<br />
</span></p>
<p style="text-align: center;"><img src="https://technology.snauka.ru/wp-content/uploads/2015/01/011515_1640_2.png" alt="" /><span><br />
</span></p>
<p style="text-align: center;"><span>Рисунок 3 – Блок-схема алгоритма регулирования температурного режима колонны<br />
</span></p>
<p style="text-align: justify;"><span>Пример интерпретации <em>T</em><sub>КДС</sub> совокупностью термов представлен на рис. 4, где термы <em>T</em><sub>2</sub>, <em>T</em><sub>3</sub>, <em>T</em><sub>5</sub> и <em>T</em><sub>6</sub> позволяют осуществить более плавное регулирование, а термы <em>T</em><sub>1</sub> и <em>T</em><sub>7</sub> – какие-либо защитные действия.<br />
</span></p>
<p style="text-align: center;"><img src="https://technology.snauka.ru/wp-content/uploads/2015/01/011515_1640_3.png" alt="" /><span><br />
</span></p>
<p style="text-align: center;"><span>Рисунок 4 – Пример интерпретации T<sub>КДС</sub> совокупностью термов<br />
</span></p>
<p><span>Шаги п. 3 и п. 4 можно выполнять в любой последовательности и неоднократно.<br />
</span></p>
<p style="text-align: justify;"><span>Если шаг п. 3 может выполнить только специалист, или эксперт, то шаг п. 4 можно и нужно автоматизировать, что позволяет сделать данный способ более доступным. Так описанный выше способ семантического анализа реализован в разработанном автором программном обеспечении в составе системы автоматизированной разработки многомерных логических регуляторов с переменными в виде совокупности аргументов двузначной логики, скриншот которого представлен на рис. 5.<br />
</span></p>
<p style="text-align: center;"><img src="https://technology.snauka.ru/wp-content/uploads/2015/01/011515_1640_4.png" alt="" /><span><br />
</span></p>
<p style="text-align: center;"><span>Рисунок 5 – Скриншот программы семантического анализа системы автоматизированной разработки многомерных логических регуляторов<br />
</span></p>
<p><span>Таким образом, описанный в статье способ проверки программ АСУ с целью обнаружения критических ошибок способствует улучшению процессов тестирования и отладки, и, как следствие, более качественной работе АСУ технологическими процессами в целом.</span></p>
]]></content:encoded>
			<wfw:commentRss>https://technology.snauka.ru/2015/01/5458/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Обзор проблемных ситуаций в коде программ</title>
		<link>https://technology.snauka.ru/2015/02/5785</link>
		<comments>https://technology.snauka.ru/2015/02/5785#comments</comments>
		<pubDate>Sun, 15 Feb 2015 10:27:04 +0000</pubDate>
		<dc:creator>Антипин Андрей Федорович</dc:creator>
				<category><![CDATA[Общая рубрика]]></category>
		<category><![CDATA[condition-action rule]]></category>
		<category><![CDATA[debugging]]></category>
		<category><![CDATA[multidimensional interval-logic regulator]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[the operator]]></category>
		<category><![CDATA[многомерный интервально-логический регулятор]]></category>
		<category><![CDATA[оператор]]></category>
		<category><![CDATA[отладка]]></category>
		<category><![CDATA[программное обеспечение]]></category>
		<category><![CDATA[продукционное правило]]></category>

		<guid isPermaLink="false">https://technology.snauka.ru/?p=5785</guid>
		<description><![CDATA[В процессе тестирования, отладки или анализа программ самого разного уровня не редки ситуации, когда в их коде встречаются операторы, которые полностью идентичны и при этом либо следуют друг за другом, либо повторяются через некоторое число операторов. Такие операторы следует трактовать, как повторяющиеся, но нет однозначного ответа на вопрос, что с ними требуется сделать. Необходимо прежде [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><span>В процессе тестирования, отладки или анализа программ самого разного уровня не редки ситуации, когда в их коде встречаются операторы, которые полностью идентичны и при этом либо следуют друг за другом, либо повторяются через некоторое число операторов. Такие операторы следует трактовать, как <em>повторяющиеся</em>, но нет однозначного ответа на вопрос, что с ними требуется сделать. Необходимо прежде проанализировать содержимое (структуру, составные элементы) таких операторов и только потом принимать решение об их дальнейшем использовании, объединении или удалении [1].<br />
</span></p>
<p style="text-align: justify;"><span>Рассмотрим часто встречающиеся проблемные ситуации в коде программ. Для упрощения понимания все примеры программ приведены на языке Pascal.<br />
</span></p>
<p style="text-align: justify;"><span>1) переменная (логического или числового типа) многократно (<em>n</em> раз) инициализируется на некотором участке (фрагменте) программы без использования ее значения в каком-либо выражении (логическом или функциональном). Например,<br />
</span></p>
<p><span>a := 5;<br />
</span></p>
<p><span>b := 7;<br />
</span></p>
<p><span>a := 8;<br />
</span></p>
<p><span>…<br />
</span></p>
<p><span>a := 9;<br />
</span></p>
<p><span>В такой ситуации возможны следующие варианты:<br />
</span></p>
<p style="text-align: justify;"><span>а) переменная не связана с каким-либо внешним по отношению к программе параметром и/или базой данных. В данном случае можно утверждать, что первые <em>n </em>–1 инициализаций избыточны и следует оставить лишь последнюю (<em>n</em>) инициализацию данной переменной;<br />
</span></p>
<p style="text-align: justify;"><span>б) переменная связана с каким-либо внешним параметром и/или базой данных. В данном случае невозможно точно утверждать, что какая-либо другая переменная, используемая в выражениях между инициализациями данной переменной, не зависит от ее значения в те или иные моменты времени. Чтобы установить истину надо определить функциональные связи, или зависимости, между всеми переменными на данном участке программы при их объявлении;<br />
</span></p>
<p style="text-align: justify;"><span>в) операторы инициализации следуют один за другим без каких-либо других операторов между ними. В данном случае следует поступить так же, как в п. 1, а), т. е. удалить первые <em>n </em>–1 инициализаций, т. к. иметь вес будет лишь последняя.<br />
</span></p>
<p style="text-align: justify;"><span>2) антецеденты продукционных правил условных операторов полностью идентичны друг другу. Например,<br />
</span></p>
<p><span>if a &gt; 5 then inc(b);<br />
</span></p>
<p><span>…<br />
</span></p>
<p><span>if a &gt; 5 then dec(c);<br />
</span></p>
<p><span>В этой ситуации возможны следующие варианты:<br />
</span></p>
<p style="text-align: justify;"><span>а) условные операторы следуют один за другим без каких-либо других операторов между ними. Если переменные, содержащиеся в антецедентах продукционных правил второго и последующих операторов, не содержатся в консеквентах правил первого и предыдущих операторов соответственно, то можно утверждать, что это <em>взаимодополняющие</em> операторы и их следует объединить в один условный оператор. Иначе, это будут разные операторы.<br />
</span></p>
<p style="text-align: justify;"><span>Если операторы, приведенные выше, являются <em>взаимодополняющими</em>, то их объединение будет иметь вид<br />
</span></p>
<p>if a &gt; 5 then</p>
<p>begin</p>
<p>inc(b);</p>
<p>dec(c);</p>
<p>end;</p>
<p style="text-align: justify;"><span>При объединении операторов нужно выполнить проверку на их противоречивость. Если в консеквентах продукционных правил каких-либо операторов выполняется инициализация или изменение значений одинаковых переменных, то эти операторы будут <em>противоречить </em>друг другу и только программист (эксперт) может решить, какое из имеющихся действий следует предпочесть [2];<br />
</span></p>
<p style="text-align: justify;"><span>б) между условными операторами находится <em>n</em> других операторов. Для того чтобы отнести данные операторы к п. 2, а) необходимо выполнение следующих условий:<br />
</span></p>
<p style="text-align: justify;"><span>– переменные, включенные в антецеденты правил обоих условных операторов, не должны менять свои значения на всем участке программы между операторами;<br />
</span></p>
<p style="text-align: justify;"><span>– переменные, включенные в консеквенты правил второго и последующего операторов, не должны использоваться на протяжении всего участка программы между операторами.<br />
</span></p>
<p style="text-align: justify;"><span>3) консеквенты продукционных правил условных операторов полностью идентичны друг другу. Если антецеденты продукционных правил второго и последующего операторов не содержат переменных, значения которых могут меняться на всем промежутке программы между операторами, включая консеквенты их продукционных правил, то такие операторы можно объединить в один условный оператор путем дизъюнкции антецедентов.<br />
</span></p>
<p style="text-align: justify;"><span>Например, операторы<br />
</span></p>
<p><span>if a &gt; 5 then inc(b);<br />
</span></p>
<p><span>if a &lt; 9 then inc(b);<br />
</span></p>
<p><span>можно объединить в один условный оператор<br />
</span></p>
<p><span>if (a &gt; 5) or (a &lt; 9) then inc(b);<br />
</span></p>
<p style="text-align: justify;"><span>4) предусловия, постусловия или параметры операторов цикла полностью идентичны друг другу. Например,<br />
</span></p>
<p>while a &gt; 5 do (или for i := 0 to 5 do)</p>
<p>begin</p>
<p>…</p>
<p>end;</p>
<p>…</p>
<p>while a &gt; 5 do (или for i := 0 to 5 do)</p>
<p>begin</p>
<p>…</p>
<p>end;</p>
<p><span>В этой ситуации варианты будут аналогичны п. 2, а) и б).<br />
</span></p>
<p style="text-align: justify;"><span><span>5) переменные, значения которых изменяются в теле операторов цикла [3], одновременно используются в качестве их параметров (оператор </span><span>for</span><span>), в предусловиях или постусловиях (операторы </span><span>while … do</span><span> и </span><span>do … while</span><span> соответственно).<br />
</span></span></p>
<p style="text-align: justify;"><span>Данные операторы являются наиболее опасными, поскольку при неверном задании и при определенных условиях они способны ввести программу в бесконечный цикл, что может привести к снижению работоспособности вычислительной системы, к потерям данных и, как следствие, к аварийной ситуации.<br />
</span></p>
<p style="text-align: justify;"><span>В подобной ситуации необходим строгий контроль над возможными вариантами значений переменных, способных дать начало бесконечному циклу, как, например, в случае<br />
</span></p>
<p>for i := 0 to 10 do</p>
<p>begin</p>
<p>…</p>
<p>dec(i);</p>
<p>…</p>
<p>end;</p>
<p style="text-align: justify;"><span><span>где переменная </span><span>i</span><span> на каждой итерации цикла одновременно увеличивает и уменьшает (в процессе выполнения оператора декремента </span><span>dec(i)</span><span>) свое значение на единицу.<br />
</span></span></p>
<p style="text-align: justify;"><span>В ряде случаев бывает полезен анализ значений, которые могут принимать переменные и которые по факту используются в антецедентах правил, что позволит выявить избыточные операторы и своевременно удалить их из программы.<br />
</span></p>
<p style="text-align: justify;"><span>Некоторые из описанных выше ситуаций можно избежать, используя современные версии компиляторов и сред разработки программ. Так, разработчики Pascal ABC и Embarcadero Delphi XE3 установили запрет по умолчанию на компиляцию программы при изменении в теле операторов цикла их параметров, как в примере, приведенном в п. 5.<br />
</span></p>
<p style="text-align: justify;"><span>В то же время следующий код в Pascal ABC (версия 2.0, сборка 529) и Embarcadero Delphi XE3 (version 17.0.4770.56661) был откомпилирован без ошибок:<br />
</span></p>
<p>i := -1;</p>
<p>while i &lt; 0 do</p>
<p>begin</p>
<p>i := i &#8211; 0;</p>
<p>end;</p>
<p style="text-align: justify;"><span>В результате выполнения программ с указанным кодом будет запущен бесконечный цикл вычислений, способный привести к зависанию операционной системы.<br />
</span></p>
<p style="text-align: justify;"><span>Все перечисленные ситуации объединяет одно – это необходимость в разработке методов и/или правил, которых необходимо придерживаться для создания семантически верного программного кода. Автором предлагается использовать в процессе разработки программ методику анализа структуры многомерного интервально-логического регулятора (МИЛР), отличительной особенностью которого является [4, 5] строгое задание на начальном этапе проектирования системы автоматического регулирования интервалов значений, которые могут принимать переменные-параметры в процессе эксплуатации, что дает возможность просчитать все возможные ситуации и выявить повторяющиеся, взаимодополняющие или противоречащие друг другу операторы. Семантический анализ программ МИЛР при этом выполняется автоматически при помощи специального программного обеспечения [6].</span></p>
]]></content:encoded>
			<wfw:commentRss>https://technology.snauka.ru/2015/02/5785/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>К вопросу о проектировании и разработке многомерных интервально-логических регуляторов</title>
		<link>https://technology.snauka.ru/2015/06/6664</link>
		<comments>https://technology.snauka.ru/2015/06/6664#comments</comments>
		<pubDate>Sat, 27 Jun 2015 18:22:41 +0000</pubDate>
		<dc:creator>Антипин Андрей Федорович</dc:creator>
				<category><![CDATA[Общая рубрика]]></category>
		<category><![CDATA[a multidimensional interval-logic regulator]]></category>
		<category><![CDATA[computer-aided design system]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[editor of condition-action rules]]></category>
		<category><![CDATA[fuzzy controller]]></category>
		<category><![CDATA[многомерный интервально-логический регулятор]]></category>
		<category><![CDATA[нечеткий регулятор]]></category>
		<category><![CDATA[проектирование]]></category>
		<category><![CDATA[редактор продукционных правил]]></category>
		<category><![CDATA[система автоматизированной разработки]]></category>

		<guid isPermaLink="false">https://technology.snauka.ru/?p=6664</guid>
		<description><![CDATA[Анализ современных систем проектирования автоматизированных систем управления технологическими процессами (АСУ ТП) и инструментальных комплексов для программирования промышленных и ПК-основанных логических контроллеров и устройств интеллектуального управления [1], таких как TRACE MODE, SIMATIC STEP 7, Twido Soft, показал, что для полноценной программной реализации структуры и алгоритмов работы многомерных нечетких интервально-логических регуляторов (МИЛР) с переменными в виде совокупности [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><span>Анализ современных систем проектирования автоматизированных систем управления технологическими процессами (АСУ ТП) и инструментальных комплексов для программирования промышленных и ПК-основанных логических контроллеров и устройств интеллектуального управления [1], таких как TRACE MODE, SIMATIC STEP 7, Twido Soft, показал, что для полноценной программной реализации структуры и алгоритмов работы многомерных нечетких интервально-логических регуляторов (МИЛР) с переменными в виде совокупности аргументов двузначной логики следует разработать специальное программное обеспечение.<br />
</span></p>
<p style="text-align: justify;"><span>Необходимость создания систем для автоматизированного проектирования и/или разработки МИЛР возникает вследствие высокой сложности программной реализации системы продукционных правил (СПП), которая напрямую зависит от количества термов, используемых для представления переменных [2].<br />
</span></p>
<p style="text-align: justify;"><span>МИЛР являются альтернативной ступенью развития нечетких регуляторов в плане повышения быстродействия систем автоматического регулирования на их основе, расширения области применения и снижения взаимного влияния контуров регулирования.<br />
</span></p>
<p style="text-align: justify;"><span>Отличительной особенностью структуры МИЛР является отсутствие в ней элементов обработки продукционных правил. Так, в каждом цикле работы МИЛР в процессе сканирования значений непрерывных величин формируется ID-номер, или ключ, продукционного правила, используемый для определения комбинации значений управляющих воздействий в текущий момент <em>t</em>. Комбинации значений управляющих воздействий МИЛР хранятся в массиве или базе данных (зависит от технических характеристик используемых устройств автоматизации).<br />
</span></p>
<p style="text-align: justify;"><span>На рисунке 1 приведена блок-схема МИЛР с <em>n </em>входными параметрами <em>X</em>, <em>k</em> и <em>m </em>выходными параметрами <em>Z </em>и<em> Y</em>, где И<sub>1</sub>, …, И<em><sub>n</sub></em> – интервализаторы, а Д<sub>1</sub><sup>(<em>Z</em>)</sup>, …, Д<em><sub>k</sub></em><sup>(<em>Z</em>)</sup> и Д<sub>1</sub><sup>(<em>Y</em>)</sup>, …, Д<em><sub>m</sub></em><sup>(<em>Y</em>)</sup> – деинтервализаторы МИЛР; <em>N<sub>min</sub></em>, <em>N</em><sub>тек</sub> и <em>N<sub>max</sub></em> – минимальный, текущий и максимальный ID-номер продукционного правила в массиве значений управляющих воздействий в блоке логического вывода (БЛВ) с регулирующей и компенсационной СПП (РСПП и КСПП соответственно); # – элемент ID-номера продукционного правила БЛВ, формируемого из номеров термов <em>T</em>(<em>X</em><sub>1</sub>), …, <em>T</em>(<em>X<sub>n</sub></em>) и <em>T</em>(<em>Z</em><sub>1</sub>), …, <em>T </em>(<em>Z<sub>k</sub></em>).<br />
</span></p>
<p style="text-align: center;"><img src="https://web.snauka.ru/wp-content/uploads/2015/02/021815_1748_1.png" alt="" /><span><br />
</span></p>
<p style="text-align: center;"><span>Рисунок 1 – Блок-схема МИЛР с минимизированным временем отклика<br />
</span></p>
<p style="text-align: justify;"><span>В МИЛР, в связи со спецификой работы, взамен стандартных для нечетких регуляторов (НР) понятий &#8220;фаззификации&#8221; и &#8220;дефаззификации&#8221;, введены понятия &#8220;интервализации&#8221; и &#8220;деинтервализации&#8221;, определенные ниже [3].<br />
</span></p>
<p style="text-align: justify;"><span>Интервализация представляет собой процесс определения принадлежности значения непрерывной величины МИЛР тому или иному интервалу, входящему в диапазон значений данной величины.<br />
</span></p>
<p style="text-align: justify;"><span>Деинтервализация – процесс, обратный интервализации, то есть выделение требуемого значения непрерывной величины из интервала, входящего в диапазон значений данной величины.<br />
</span></p>
<p style="text-align: justify;"><span>Интервализаторы и деинтервализаторы МИЛР представляют собой блоки, реализующие процессы интервализации и деинтервализации соответственно.<br />
</span></p>
<p style="text-align: justify;"><span>ID-номера продукционных правил МИЛР с <em>n </em>входными, <em>k</em> и <em>m </em>выходными параметрами будут расположены в диапазоне от <em>N<sub>min</sub></em> до <em>N<sub>max</sub></em>. Правило, ID-номер которого равен 0 предназначено для контроля состояний непрерывных величин и называется &#8220;нулевым&#8221;, или аварийным, правилом.<br />
</span></p>
<p style="text-align: justify;"><span>На рисунке 2 изображена структурная схема системы автоматизированной разработки МИЛР &#8220;САР МИЛР&#8221;, разработанной автором (стрелками обозначены внутренние связи между отдельными блоками &#8220;САР МИЛР&#8221;, каждый из которых является самостоятельным элементом).<br />
</span></p>
<p style="text-align: center;"><img src="https://web.snauka.ru/wp-content/uploads/2015/02/021815_1748_2.png" alt="" /><span><br />
</span></p>
<p style="text-align: center;"><span>Рисунок 2 – Структурная схема системы автоматизированной разработки МИЛР<br />
</span></p>
<p style="text-align: justify;"><span>Редакторы блоков интервализации и деинтервализации предназначены для создания или редактирования параметров интервализаторов и деинтервализаторов непрерывных физических величин МИЛР с целью дальнейшего преобразования их кода в форматы языков программирования международного стандарта IEC 61131-3 [4].<br />
</span></p>
<p style="text-align: justify;"><span>Редактор правил и управляющих воздействий предназначен для создания и редактирования СПП МИЛР и выполняет следующие основные функции:<br />
</span></p>
<p style="text-align: justify;"><span>– создание и/или редактирование СПП МИЛР с учётом логических связей с редакторами интервализаторов и деинтервализаторов;<br />
</span></p>
<p style="text-align: justify;"><span>– интегрирование СПП в структуру МИЛР;<br />
</span></p>
<p style="text-align: justify;"><span>– проверка правильности вводимых с клавиатуры данных;<br />
</span></p>
<p style="text-align: justify;"><span>– преобразование программы МИЛР в форматы языков программирования, описанных в стандарте IEC 61131-3;<br />
</span></p>
<p style="text-align: justify;"><span>– графическое отображение СПП МИЛР.<br />
</span></p>
<p style="text-align: justify;"><span>Для создания СПП в редакторе реализован собственный графический язык программирования, получивший название STEP GRAPH и основанный на системе интервализаторов и деинтервализаторов МИЛР. При создании правила в редактор продукционных правил добавляются отрезки числовых осей всех входных блоков МИЛР, которые поделены на области, или термы, отмеченные красным цветом. В редактор управляющих воздействий при этом будут добавлены отрезки числовых осей всех выходных блоков МИЛР. Логические переменные будут представлены в виде отрезков, разбитых на две области, которые соответствуют состояниям &#8220;0&#8243; и &#8220;1&#8243; соответственно [5].<br />
</span></p>
<p style="text-align: justify;"><span>Принцип работы со STEP GRAPH базируется на создании продукционных правил путём выделения необходимых областей, или термов, переменных МИЛР [6]. Для этого надо кликнуть мышью по требуемой области отрезка числовой оси, при этом термы будут автоматически окрашены в зелёный цвет.<br />
</span></p>
<p style="text-align: justify;"><span>На рисунке 3 представлен скриншот главного окна &#8220;САР МИЛР&#8221;.<br />
</span></p>
<p style="text-align: center;"><img src="https://web.snauka.ru/wp-content/uploads/2015/02/021815_1748_3.png" alt="" /><span><br />
</span></p>
<p style="text-align: center;"><span>Рисунок 3 – Скриншот главного окна &#8220;САР МИЛР&#8221;<br />
</span></p>
<p style="text-align: justify;"><span>Проектирование и разработка МИЛР с использованием программы &#8220;САР МИЛР&#8221; позволяет снизить затраты времени в плане:<br />
</span></p>
<p style="text-align: justify;"><span>– создания систем интервализаторов/деинтервализаторов МИЛР с нужным числом, характером и порядком распределения термов непрерывных величин;<br />
</span></p>
<p style="text-align: justify;"><span>– создания и редактирования СПП в графическом языке программирования STEP GRAPH;<br />
</span></p>
<p style="text-align: justify;"><span>– проведения семантического анализа структуры МИЛР с целью выявления логических ошибок или отклонений от концепции построения;<br />
</span></p>
<p style="text-align: justify;"><span>– генерации программ МИЛР для промышленных контроллеров в формате языков программирования, описанных в международном стандарте IEC 61131-3.</span></p>
]]></content:encoded>
			<wfw:commentRss>https://technology.snauka.ru/2015/06/6664/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
