Способ и система для визуального создания программ для вычислительных устройств
METHOD AND SYSTEM FOR VISUAL CREATION OF PROGRAMS FOR COMPUTER DEVICES

Область техники
Изобретение относится к компьютерным системам и, более конкретно, к системам и способам создания программ для вычислительных устройств, а именно для визуального создания программ для вычислительных устройств.
Уровень техники
В настоящее время подавляющее большинство существующих способов и систем программирования остаются текстовыми (скриптовыми). Они требуют от программиста знания правильного применения и расположения текстовых знаков (букв, цифр, знаков препинания и т.п.), не всякое сочетание которых является правильным текстом программы, то есть излишняя свобода действий при программировании приводит к возможности синтаксических ошибок, значительно затрудняя и удлиняя процесс программирования и отвлекая от основной его задачи – создания и реализации правильного алгоритма. Программист перегружается ненужными знаниями по употреблению текстовых знаков и их сочетаний и усилиями по соблюдению этих правил, отвлекается от самого процесса программирования.
Преодолеть этот принципиальный недостаток всех текстовых (скриптовых) языков позволяют визуальные языки и системы программирования, обеспечивающие символическое представление операции языка программирования как одного графического символа и визуальное представление связи между такими операциями. Такое представление позволяет программисту задавать операцию (оператор) выбором из допустимого набора операций, а передачу данных операции – путем визуального указания связи с другой операцией, откуда эти данные должны поступить. Это позволяет избавиться от необходимости самостоятельного подбора программистом правильного сочетания знаков, кодирующих как саму операцию, так и задание ее исходных данных. Однако существующие системы и способы визуального программирования являются лишь предтрансляторами к скриптовым (текстовым) языкам и потому наследуют часть их недостатков.
Например, известен способ визуального программирования набора команд для процесса (см. Заявка: 2006113579/09, Опубл. 27.10.2007), содержащий прием запроса на проектирование процесса; обеспечение интерактивного дисплея проектировщика процесса; сохранение библиотеки, содержащей, по меньшей мере, одну функцию, принятие, посредством интерактивного дисплея проектировщика процесса, связанной с функцией информации относительно функции, которая содержит, по меньшей мере, одно из ввода функции, вывода функции, соединения ввода в функцию, соединения вывода из функции и установки функции; вывод, посредством интерактивного дисплея проектировщика процесса, графического представления связанной с функцией информации и генерирование набора команд для процесса на основе функции и связанной с функцией информации.
Как уже отмечалось, недостатками существующих технических решений является необходимость знания пользователем синтаксиса языков программирования, большое количество времени, затрачиваемого пользователем на создание и отладку программ для вычислительных устройств, а также низкая скорость интерпретирования создаваемых программ для вычислительных программ в реальном времени.
Задачей настоящего изобретения является преодоление недостатков существующих технических решений.
Сущность изобретения
Главное отличие не только от всех скриптовых (текстовых) систем программирования, но и существующих систем визуального программирования, например, вышеописанного способа визуального программирования и ему подобных - предлагаемый способ и реализующая его система настоящего изобретения обеспечивает непосредственный визуальный выбор нужной функции из списка возможных с немедленным ее выполнением при автоматическом согласовании типов данных и визуальным представлением результата сразу в момент выбора функции, а не генерирование набора текстовых команд (скриптов), выполняющих нужную функцию (операцию, оператор) с последующим их синтаксическим анализом, включая анализ правильности согласования типов данных, компиляцией и только затем исполнением.
Технический результат, достигаемый предлагаемым изобретением, состоит в снижении времени и затрат, затрачиваемых пользователем на создание программ для вычислительных устройств, а также в увеличении скорости интерпретирования создаваемых программ для вычислительных программ в реальном времени.
Также технический результат, достигаемый предлагаемым изобретением, состоит в снижении времени и затрат, необходимых пользователю для обучения средствам программирования, а затем на создание и отладку с их помощью программ для вычислительных устройств.
Также технический результат, достигаемый предлагаемым изобретением, состоит в увеличении скорости интерпретирования создаваемых программ для вычислительных устройств, что позволяет реализовывать программы, выполняемые в реальном времени.
Также технический результат, достигаемый предлагаемым изобретением, состоит в обеспечении возможности надежной верификации выполняемой программы ввиду однозначности восстановления программного кода существующей программы для его анализа.
Предлагается способ и система для визуального создания программ для вычислительных устройств, в которых осуществляется создание и редактирование пользователем посредством графического интерфейса пользователя программы (алгоблочной программы) для вычислительного устройства посредством выбора и добавления операторов (алгоблоков) из списка доступных алгоблоков, затем осуществляется связывание пользователем входов и выходов алгоблоков, чем обеспечивается задание потоков данных между операторами (алгоблоками), сразу после их создания алгоблоки осуществляют заданные кодом их типа (или кодом типа и их дополнительными параметрами) действия над данными, поступающими на входы алгоблоков, в соответствии с визуальными связями с выходами других алгоблоков (представляемыми ссылками в виде строк в таблице, содержащих номер алгоблока и его выхода, которые одновременно задают визуальное расположение линий связи) - по крайней мере, с одного выхода, по крайней мере, одного алгоблока, или ссылками, содержащими индекс значения в общем массиве данных (массивы данных являются векторами или матрицами данных, которые хранятся в базе данных), при этом результаты упомянутых выше действий алгоблоков остаются либо на выходах алгоблоков (вектор или матрица которых составляют базу данных выходов), либо записываются в соответствии со связями или ссылками (задающими номер элемента в массиве данных, в котором хранится результат) в общие массивы данных.
Визуально алгоблоки являются графическими элементами, которые, в свою очередь, являются визуальными изображениями устройств или узлов обработки в виде прямоугольников, таблиц, мнемонических изображений блоков или узлов обработки. Визуально представляются также линии связи, или указатели ссылок между входами и выходами алгоблоков и/или между наборами массивов данных, которые хранятся в базе данных.
Создание алгоблочной программы может осуществляться следующими способами:
- путем задания, по крайней мере, одной последовательности алгоблоков и связей между их входами и выходами или между их входами и выходами и массивами данных;
- посредством задания для заранее фиксированной последовательности алгоблоков параметров настроек алгоблоков и связей между их входами и выходами или между их входами и выходами и массивами данных.
Осуществляется выполнение алгоблочной программы исполняющей средой, которая является неизменяемой программой и которая последовательно выполняет алгоблок за алгоблоком, выбирая из первого списка (массива) их коды и связи - ссылки на данные для этого алгоблока - во втором списке (массиве), то есть исполняющая среда работает под управлением исходного кода алгоблочной программы, состоящего из упомянутых массивов, создаваемого и изменяемого в визуальной среде алгоблочного программирования, и является интерпретатором, причем каждому алгоблоку доступен весь объем упомянутых массивов данных.
При необходимости одновременного решения задач с разным периодом обработки данных системой визуального программирования и исполняющей средой обеспечивается возможность разделения алгоблоков на разные циклы обхода:
- первый цикл имеет наименьший период выполнения - в данном цикле решаются задачи, требующие наиболее частого исполнения;
- второй цикл исполнения может быть разделен (разбит) на несколько частей, и после каждого выполнения первого цикла выполняются последовательно алгоблоки очередной части второго цикла с первой по последнюю, и весь второй цикл выполняется за столько периодов исполнения первого цикла, на сколько частей разбит второй цикл;
- третий цикл соотносится со вторым, как второй с первым.
Выполнение алгоблочной программы осуществляется исполняющей средой в бесконечном цикле, за исключением особых режимов, когда работа программы ограничивается одним циклом.
Создание и редактирование алгоблочной программы осуществляется посредством редактирования пользователем упомянутых массивов, составляющих алгоблочную программу путем задания или редактирования последовательности алгоблоков посредством их выбора из списка возможных типов алгоблоков и задания входных данных для алгоблоков либо посредством графического указания связей входов и выходов алгоблоков, либо выбором входов и выходов из списка возможных баз данных и номеров их элементов.
Ввиду невозможности ввода недопустимых или некорректных данных в любой момент создания и/или редактирования алгоблочной программы, алгоблочная программа не содержит синтаксических ошибок и ошибок зацикливания, что позволяет продолжать ее выполнение средой исполнения при создании и редактировании алгоблочной программы и, в свою очередь, позволяет обеспечить визуальный контроль результата редактирования программы непосредственно в момент выполнения редакции.
Поскольку создание и редактирование пользователем упомянутых массивов, составляющих алгоблочную программу, осуществляется путем задания или редакции последовательности алгоблоков выбором их из списка возможных типов алгоблоков и задания входных данных для них в графическом интерфейсе пользователя либо графическим указанием связей входов и выходов алгоблоков, либо выбором данных их списка допустимых, гарантируя этим невозможность ввода недопустимых или некорректных данных в любой момент создания или редакции, алгоблочная программа позволяет продолжать ее выполнение при ее создании и редактировании в виду отсутствия синтаксических ошибок и ошибок зацикливания, обеспечивая визуальный контроль результата редактирования программы сразу в момент его выполнения.
При создании и редактировании алгоблочной программы типы данных между входами и выходами алгоблоков (операторов), а также между входами и выходами алгоблоков (операторов) и между внешними базами данных, согласуются автоматически по предустановленным правилам.
При создании и редактировании алгоблочной программы непосредственный текстовый ввод чисел или других символьных последовательностей осуществляется с контролем непосредственно в процессе ввода как допустимости ввода каждого символа, так и допустимость вводимого числа или другой символьной последовательности целиком таким образом, чтобы в момент окончания ввода это число или последовательность сразу могли использоваться в алгоблочной программе.
Возможно создание и редактирование алгоблочной программы на одном вычислительном устройстве с последующей передачей алгоблочной программы в другое вычислительное устройство, откуда затем осуществляется получение текущих данных программы, причем сохраненная и переданная алгоблочная программа однозначно и полностью соответствует изначально созданной алгоблочной программе, поэтому может быть извлечена из вычислительного устройства, на котором происходит ее выполнение, посредством извлечения составляющих ее вышеописанных массивов, отображена, проверена (верифицирована) и отредактирована пользователем на другом вычислительном устройстве.
В зависимости от решаемых задач, структуры и объемов требующей обработки информации алгоблочные программы делятся на три уровня:
- нижний уровень с малым количеством данных и, соответственно, возможностью предусмотреть заранее набор всех необходимых операций по их обработки - на этом уровне набор и последовательность алгоблоков фиксирована, часть или все алгоблоки реализованы аппаратно, программирование заключается в настройке связок для данных алгоблоков и параметров алгоблоков и является наиболее простым и доступным;
- средний уровень с небольшим количеством данных, требующих большого разнообразия функций их обработки – для этого уровня задаются при программировании последовательность алгоблоков и их типы, база данных состоит из выходов алгоблоков, связи для входов алгоблоков ссылаются на выходы в этой базе, небольшая часть алгоблоков может реализовываться аппаратно, на данном уровне алгоблочная система программирования представляет собой цифровую модель аналоговой вычислительной машины;
- верхний уровень, характеризующийся большими массивами информации: задаются при программировании последовательность алгоблоков и типы, базы данных внешние и для входов и выходов задаются ссылки на них.
Между алгоблочными программами различных уровней взаимодействие выполняется путем задания связей между их базами данных, аналогично связкам (связям) внутри алгоблочных программ.
Между алгоблочными программами различных вычислительных устройств взаимодействие выполняется путем задания связей между их базами данных, аналогично связкам внутри алгоблочных программ или связям между алгоблочными программами различных уровней внутри одного вычислительного устройства, при этом собственно передача данных между устройствами может осуществляться по любому из существующих или возникших в будущем каналов обмена данными между вычислительными устройствами.
Предлагаемое изобретение поясняется чертежами:
На ФИГ. 1 показан примерный вариант создания алгоблочной программы среднего уровня, согласно одной из реализаций настоящего изобретения;
На ФИГ. 2 показано меню, позволяющее пользователю добавить новый алгоблок, согласно одной из реализаций настоящего изобретения;
На ФИГ. 3 показан примерный вариант компонентов алгоблочной программы, согласно одной из реализаций настоящего изобретения;
На ФИГ. 4 показано окно (меню) настройки параметров алгоблока, согласно одной из реализаций настоящего изобретения;
На ФИГ. 5 показан примерный вариант отображения ошибки выполнения операции алгоблоком, согласно одной из реализаций настоящего изобретения;
На ФИГ. 6 показан примерный вариант алгоблочной программы с добавленными логическим алгоблоком и алгоблоком заданий, согласно одной из реализаций настоящего изобретения;
На ФИГ. 7 показано подменю выходных данных для алгоблока заданий, согласно одной из реализаций настоящего изобретения;
На ФИГ. 8 показано меню задания значения для входа алгоблока, согласно одной из реализаций настоящего изобретения;
На ФИГ. 9 показано меню настройки параметров алгоблока для изменения значения по умолчанию входа алгоблока, согласно одной из реализаций настоящего изобретения;
На ФИГ. 10 показан примерный вариант интерфейса настроек алгоблока, согласно одной из реализаций настоящего изобретения;
На ФИГ. 11 окно свойств алгоблока сравнения, согласно одной из реализаций настоящего изобретения;
На ФИГ. 12 показан один из вариантов системного окна программы, согласно одной из реализаций настоящего изобретения;
На ФИГ. 13 окно среды визуального табличного программирования, использующееся для создания алгоблочной программы на верхнем уровне, согласно одной из реализаций настоящего изобретения;
На ФИГ. 14 показано окно редактирования алгоблока в режиме редактирования алгоблочных программ верхнего уровня, согласно одной из реализаций настоящего изобретения;
На ФИГ. 15 показано меню выбора источника данных для алгоблока, согласно одной из реализаций настоящего изобретения;
На ФИГ. 16 показано окно редактирования алгоблока с выбранной «Арифметической» операцией в качестве операции для двух операндов, согласно одной из реализаций настоящего изобретения;
На ФИГ. 17 показано меню выбора типа арифметической операции, которая осуществляется пользователем при выборе типа арифметической операции, согласно одной из реализаций настоящего изобретения;
На ФИГ. 18 показан пример окна редактирования алгоблока с выбранной «Арифметической» операцией в качестве операции для двух операндов, согласно одной из реализаций настоящего изобретения;
На ФИГ. 19 показано окно базы данных аналоговых сигналов, согласно одной из реализаций настоящего изобретения;
На ФИГ. 20 пример выставления пользователем шага для слагаемых и суммы, согласно одной из реализаций настоящего изобретения;
На ФИГ. 21 показано окно базы данных аналоговых сигналов для алгоблока, согласно одной из реализаций настоящего изобретения;
На ФИГ. 22 изображен примерный вариант процедур и управление исполнением, согласно одной из реализаций настоящего изобретения;
На ФИГ. 23 изображен примерный вариант структуры алгоблока, согласно одной из реализаций настоящего изобретения;
На ФИГ. 24 изображен примерный вариант структуры операнда алгоблока, согласно одной из реализаций настоящего изобретения;
На ФИГ. 25 изображен примерный вариант структуры операции и результата, согласно одной из реализаций настоящего изобретения;
На ФИГ. 26 показан пример структурированности данных операндов и результата, определяемой списком, согласно одной из реализаций настоящего изобретения;
На ФИГ. 27 показан примерный вариант пользовательского интерфейса для взаимодействия с базами данных, согласно одной из реализаций настоящего изобретения;
На ФИГ. 28 показан один из вариантов интерфейса пользователя для описания базы данных, согласно одной из реализаций настоящего изобретения;
На ФИГ. 29 показан примерный вариант алгоблока слота, согласно одной из реализаций настоящего изобретения;
На ФИГ. 30 показан примерный вариант алгоблока слота Память, согласно одной из реализаций настоящего изобретения;
На ФИГ. 31 показан примерный вариант алгоблока слота FRAM, согласно одной из реализаций настоящего изобретения;
На ФИГ. 32 показан примерный вариант алгоблока слота CAN, согласно одной из реализаций настоящего изобретения;
На ФИГ. 33 показан примерный вариант окна списка алгоблоков, согласно одной из реализаций настоящего изобретения;
На ФИГ. 34 показан вариант арифметического алгоблока, согласно одной из реализаций настоящего изобретения;
На ФИГ. 35 показан примерный вариант отображения двух связанных между собой алгоблоков, согласно одной из реализаций настоящего изобретения;
На ФИГ. 36 показан примерный вариант внешнего вида окна настройки параметров алгоблока, согласно одной из реализаций настоящего изобретения;
На ФИГ. 37 показано окно настройки входов алгоблока, согласно одной из реализаций настоящего изобретения;
На ФИГ. 38 показано окно (интерфейса, страницы и т.д.) настройки выходов алгоблока, согласно одной из реализаций настоящего изобретения.
Объекты и признаки настоящего изобретения, способы для достижения этих объектов и признаков станут очевидными посредством отсылки к примерным вариантам осуществления. Однако настоящее изобретение не ограничивается примерными вариантами осуществления, раскрытыми ниже, и может быть реализовано в различных видах. Сущность, приведенная в описании, является ничем иным, как конкретными деталями, предоставленными для помощи специалисту в области техники в исчерпывающем понимании изобретения, и настоящее изобретение определяется только в объеме приложенной формулы.
Используемые в настоящем описании изобретении термины «компонент», «элемент», «система», «модуль», «часть», в частности, «составная часть», и подобные предназначены (используются) для обозначения компьютерных сущностей (сущностей/объектов, связанных с компьютером, вычислительных сущностей), которые могут являться аппаратным обеспечением/оборудованием (например, устройством, инструментом, аппаратом, аппаратурой, составной частью устройства, в частности, процессором, микропроцессором, печатной платой и т.д.), программным обеспечением (например, исполняемым программным кодом, скомпилированным приложением, программным модулем, частью программного обеспечения и/или кода и т.д.) или микропрограммой (прошивкой/firmware). Так, например, компонент может быть процессом, выполняющемся/исполняющимся на процессоре, процессором, объектом, исполняемым файлом, программой, функцией, методом, библиотекой, подпрограммой и/или вычислительным устройством (например, микрокомпьютером или компьютером) или комбинацией программного или аппаратного обеспечения.
В настоящем изобретении описывается способ и система для визуального создания программ (программного обеспечения) для вычислительных устройств с исполняющей системой (средой исполнения), в частности, способ и система для создания программного обеспечения с использованием визуальных элементов - графических элементов или таблиц, включая среду исполнения созданного программного обеспечения.
Описываемая система визуального программирования, включая среду исполнения, в первую очередь предназначена для создания САУ (систем автоматического управления) и АСУ ТП (автоматизированных систем управления технологических процессов),  прежде всего компонентов реального времени таких систем, промышленных объектов от отдельного агрегата (например, насоса или станка), цеха, насосной станции, атомного реактора и т.п. до завода, электростанции или газопровода целиком, транспортных средств (автомобилей, поездов, кораблей самолетов и т.п.), объектов городской инфраструктуры, включая, например, "умный дом " и т.п., и рассчитана на программирование прежде всего промышленных контроллеров, планшетных, панельных, бортовых и настольных компьютеров в таких системах. Однако возможно применение данной системы для программирования любых компьютерных устройств, включая сотовые телефоны, часы, бытовые приборы, средства связи, информации, развлечений и т.п.
Визуальное программирование реализуется как имитация сборки, настройки и наладки реального устройства, например, аналоговой вычислительной машины или системы управления:
- или путем выбора из фиксированного набора нужных блоков или узлов обработки, соединения их между собой или связями в виде, например, проводов или труб в нужной последовательности;
- или раскладыванием по ячейкам, заполнением ячеек фиксированной структуры – таблицы - элементами (блоками, узлами, ссылками) выбором из списка возможных для каждой ячейки;
- последующей настройкой изменением параметров узлов в ограниченных границами допустимости диапазонах.
Данные между узлами обработки, являющимися операторами языка, согласуются автоматически по предустановленным правилам.
В частном случае осуществления настоящего изобретения графическими элементами являются визуальные изображения устройств или узлов обработки - алгоблоков (которые более подробно описаны далее), например, в виде прямоугольников, таблиц, мнемонических изображений блоков или узлов обработки,  а также или линии связи или указатели ссылок между их входами и выходами и/или между наборами массивов данных, которые могут храниться, по крайней мере, в одной базе данных, например, в виде одной таблицы или нескольких таблиц.
Визуальный алгоблочный язык программирования позволяет создавать программное обеспечение (например, приложения):
- путем задания по крайней мере одной последовательности алгоблоков и связей между их входами и выходами или между их входами и выходами и массивами обрабатываемых данных:
- посредством задания для заранее фиксированной последовательности алгоблоков параметров настроек алгоблоков и связей между их входами и выходами или между их входами и выходами и массивами обрабатываемых данных.
Алгоблоки являются операторами (компонентами) описываемого способа и системы - визуального алгоблочного языка программирования. Алгоблоки осуществляют заданные кодом их типа или кодом типа и их дополнительными параметрами действия (например, сложение, поиск максимального, логические операции, интегрирование во времени и т.п.) над данными, поступающими на их, алгоблоков, входы, в соответствии со связями, заданными связками или ссылками (например, в виде строк в таблице, содержащих номер алгоблока и его выхода, откуда данные берутся, или содержащих индекс значения в массиве (в БД) обрабатываемых данных), по крайней мере, с одного выхода, по крайней мере, одного алгоблока (например, выхода того же алгоблока или другого алгоблока, как более подробно описано далее) или из общих массивов обрабатываемых данных. В частном случае осуществления настоящего изобретения массив данных является вектором или матрицей данных, которые могут быть сохранены, по крайней мере, в одной базе данных.
Результаты упомянутых выше действий алгоблоков остаются либо на выходах алгоблоков, вектор или матрица которых составляют базу обработанных данных, либо записываются в соответствии со связками или ссылками (которые задают, например, номер элемента в массиве (в БД) обрабатываемых данных, куда помещается результат) в общие массивы обрабатываемых данных (в БД).
Таким образом, программа визуального алгоблочного языка программирования является набором массивов (векторов) данных, в частности, чисел, и может, в частном случае, иметь следующую структуру:
- Массив, в частности, вектор, содержащий числа, каждое из которых определяет тип алгоблока, а последовательность таких чисел массива (вектора) задает последовательность исполнения алгоблоков.  Например, число «1» упомянутого массива может задавать (определять) алгоблок сложения, «2» упомянутого массива задает алгоблок вычитания (возможны также алгоблоки любых арифметических и логических операций, динамических операций, таких как триггеры или интеграторы, или их комбинаций различной степени сложности, каждому типу алгоблока присваивается свой код) и т.д. Тогда последовательность чисел в массиве  1,2,2,1 задает последовательность алгоблоков, выполняющих операции: Сложение, Вычитание, Вычитание, Сложение.
Возможен также вариант реализации, при котором число «1» упомянутого массива может задавать (определять) алгоблок выполнения арифметических операций, для которого тип операции задаваться параметром алгоблока который, в свою очередь, задается в другом массиве (векторе), в котором для алгоблока арифметических операций (типа 1) сложение задается числом 1, вычитание – числом 2, умножение – числом 3 и т.д., число «2» может задавать (определять) алгоблок выполнения логических операций для которого тип операции задаваться параметром алгоблока, который, в свою очередь, также задается в дополнительном массиве (векторе) параметров алгоблоков, в котором для алгоблока логических операций (типа 2) операция «И» задается числом 1, «ИЛИ» – числом 2 и т.д. В этом случае приведенный выше пример последовательности операций - Сложение, Вычитание, Вычитание, Сложение - задается двумя связанными массивами: массивом последовательности алгоблоков 1, 1, 1, 1 и массивом их параметров - 1,2,2,1.
Отдельным типом алгоблока является алгоблок вызова подпрограммы, обработка которого заключается в запуске последовательности алгоблоков, представляющих собой подпрограмму.
Более подробно алгоблоки и примеры алгоблоков, а также операций, осуществляемых алгоблоками описаны далее.
- Второй массив может содержать числа, задающие номера элементов в базах данных обрабатываемых данных или в базе выходов алгоблоков, откуда осуществляется получение значений, подаваемых на вход алгоблока для обработки, т.е. осуществляется установление (в частном случае, определение) упомянутых выше связок.
- Третий массив может содержать начальные значения для входов алгоблоков, оказавшихся несвязанными с базами данных выходов или базами обрабатываемых данных.
Выполнение алгоблочной программы производится (осуществляется) исполняющей средой, которая последовательно выполняет алгоблок (операцию) за алгоблоком (операцией), выбирая из первого списка (массива) их коды и связки (или ссылки) на данные для этого алгоблока во втором списке (массиве).
Параллельные вычисления допускаются только в следующих случаях:
- в рамках одного алгоблока;
- в рамках особой последовательности алгоблоков, в которой:
- алгоблоки последовательности не используют результаты (данных выходов) вычислений друг друга,
- до окончания выполнения всех алгоблоков последовательности использование другими алгоблоками программы результатов (данных выходов) любого алгоблока такой последовательности не допускается, то есть не может начаться выполнение следующего за этой последовательностью алгоблока;
- в рамках набора нескольких последовательностей алгоблоков, выполняемых параллельно, объединенных, например, в одну подпрограмму, и обладающих следующими свойствами:
- алгоблоки каждой из этого набора последовательностей не используют результаты (данные выходов) алгоблоков любой другой из последовательностей данного набора;
- до окончания выполнения всех алгоблоков всех последовательностей набора использование другими алгоблоками программы результатов (данных выходов) любого алгоблока данного набора последовательностей не допускается, то есть не может начаться выполнение следующего за данным набором последовательностей алгоблока.
Исполняющая среда, как видно из вышесказанного, работает непосредственно под управлением исходного кода программы, состоящего из вышеописанных массивов, создаваемого и изменяемого в визуальной среде алгоблочного программирования, то есть является интерпретатором. При этом ввиду гарантированного отсутствия в исходном коде синтаксических ошибок отпадает необходимость в ресурсозатратном синтаксическом анализе, что обеспечивает скорость выполнения алгоблочной программы исполняющей средой, сравнимое со скоростью выполнения компилированной программы.
Ввиду строгой последовательности выполнения и отсутствия прерывания выполнения не требуется также специальной синхронизации данных между алгоблоками, каждому алгоблоку доступен весь объем массивов обрабатываемых данных.
В частном случае осуществления настоящего изобретения при необходимости разделения ресурсов системы, например, для одновременного решения задач с разным периодом обработки данных системой визуального программирования и исполняющей средой обеспечивается возможность разделения алгоблоков на разные циклы обхода:
- первый цикл имеет наименьший период выполнения - в данном цикле решаются задачи, требующие наиболее частого исполнения;
- второй цикл исполнения может быть разделен (разбит) на несколько частей, и после каждого выполнения первого цикла выполняются последовательно алгоблоки очередной части второго цикла с первой по последнюю, и весь второй цикл выполняется за столько периодов исполнения первого цикла, на сколько частей разбит второй цикл;
- третий цикл соотносится со вторым, как второй с первым.
Примером такой задачи из области систем автоматического управления является случай, когда необходимо за малое время (например, 0, 1 сек) открыть сбросной клапан при превышении допустимого значения давления и одновременно выполнять поддержание температуры, расхода и уровня с помощью ПИД-регулирования (пропорционально-интегрально-дифференцирующего регулирования). При этом регулирование может осуществляться осуществлять реже, чем проверка, например, не реже, чем раз в 0,5 сек. Если вычислительных ресурсов на выполнение в каждом цикле проверки давления с возможным открытием клапана и одновременно исполнением функций всех трех регуляторов не хватает (например, на каждый из регуляторов нужно 0,05 сек и на обработку сигнала давления с выдачей сигнала на клапан тоже 0,05 сек), но за 0,1 секунды успевает выполниться проверка и один регулятор, то исполняя в первом цикле только проверку, а во втором цикле в каждой части после каждого исполнения первого по одному регулятору, задача успешно решается.
Стоит отметить, что более подробно упомянутые выше циклы (первый, второй и третий) описаны далее.
Вышеописанный алгоритм исполнения алгоблоков включая алгоритм разделения ресурсов гарантирует целостность обрезываемых и обработанных данных, отсутствие затрат на синхронизацию и предсказуемое время исполнения задач. Таким образом обеспечивается детерминированность вычислительного процесса, что позволяет применять настоящее изобретение для решения задач реального времени.
Исполняющая среда является неизменяемой программой, которая может быть реализована:
- одним или комплексом программных модулей, функционирующих:
- под управлением различных операционных систем (например, MS Windows, FreeBSD, Linux, RTOS, iOS, Android, Mac OS и т.д.), в том числе виртуальной машины;
- без использования внешней операционной системы (например, MS Windows, FreeBSD, Linux, RTOS, iOS, Android, Mac OS и т.д.), в том числе сама являясь операционной системой;
- программным модулем, исполняемым из постоянной памяти;
- аппаратным модулем на жестокой логике (состоящих из логических микросхем или ПЛИС) и других – например, блоков ввода и вывода аналоговых или дискретных параметров и др.
Выполнение (работа) алгоблочной программы осуществляется исполняющей средой в бесконечном цикле, за исключением особых режимов, когда работа программы ограничивается одним циклом или его частью, например:
- при пошаговом исполнения алгоблочной программы или исполнения до точки остановки при отладке;
- при синхронизации исполнения с другими программами - например, когда происходит остановка в фиксированной точке алгоритма одной программы, после чего выполняется полностью или частично другая программа, после чего продолжается выполнение первой;
- в других особых случаях исполнения.
Описываемые изобретение позволяет осуществлять создание и редактирование пользователем (разработчиком программы, программистом и т.д.) вышеописанных массивов, составляющих алгоблочную программу, в частности, путем задания или редактирования последовательности алгоблоков посредством их выбора из списка возможных типов алгоблоков и задания входных данных для алгоблоков:
- либо посредством графического указания связей входов и выходов алгоблоков,
- либо выбором входов и выходов из списка возможных баз данных и номеров их элементов, при этом ввод номеров может осуществляться как выбором из списка, так и прямым вводом числа, при котором непосредственно в процессе ввода контролируется как допустимость ввода каждого символа, так и допустимость вводимого числа целиком.
Таким образом, ввиду невозможности ввода недопустимых или некорректных данных в любой момент создания и/или редактирования алгоблочной программы, такая алгоблочная программа не содержит синтаксических ошибок и ошибок зацикливания, что позволяет продолжать ее выполнение средой исполнения при создании и редактировании алгоблочной программы в описываемых способе и системе визуального программирования. Это, в свою очередь, позволяет обеспечить визуальный контроль результата редактирования программы непосредственно в момент выполнения редакции.
В частном случае осуществления настоящего изобретения визуальная алгоблочная система программирования обеспечивает загрузку алгоблочной программы (в виде вышеописанных массивов) в удаленный или не имеющий собственного визуального интерфейса аппаратный модуль (который может быть реализован вычислительным устройством, например, персональным компьютером, промышленным управляющим контроллером, смартфоном и т.д.), а также обеспечивает получение текущих обрабатываемых и обработанных данных из такого аппаратного модуля и выкачку из упомянутого аппаратного модуля алгоблочной программы (в виде вышеописанных массивов) с возможностью ее последующей редакции и обратной закачки. Данная возможность обеспечивается тем, что выкачанная алгоблочная программа однозначно и полностью соответствует изначально созданной алгоблочной программе и может быть отображена и отредактирована в визуальной алгоблочной системе программирования, поскольку выкачивание алгоблочной программы осуществляется посредством выкачивания вышеописанных массивов, составляющих алгоблочную программу.
В зависимости от решаемых задач, структуры и объемов требующей обработки информации алгоблочные программы могут быть подразделены на три уровня:
- нижний уровень алгоблочных программ - со столь малым количеством данных, что представляется возможным предусмотреть заранее набор всех необходимых операций по их обработке. На данном уровне набор и последовательность алгоблоков заранее фиксированы как часть исполняющей среды, часть или все алгоблоки реализованы аппаратно, описываемый способ программирования (создания алгоблочной программы) заключается в настройке связок (связей) для таких алгоблоков и параметров алгоблоков (и является наиболее простым и доступным для осуществления пользователем);
- средний уровень алгоблочных программ - с небольшим количеством данных, но требующих большого разнообразия функций их обработки. Для данного уровня пользователем задаются при создании алгоблочной программы последовательность алгоблоков и их типы, база обрабатываемых и обработанных данных состоит из выходов алгоблоков, связи для входов алгоблоков ссылаются на выходы в этой базе, часть алгоблоков может быть реализовано аппаратно. На данном уровне, как и на нижнем, алгоблочная система программирования является цифровой моделью аналогового вычислительного устройства;
- верхний уровень алгоблочных программ характеризуется большими массивами данных (информации), пользователем при создании алгоблочной программы осуществляется задание последовательности алгоблоков и их типов, базы обрабатываемых и обработанных данных внешние для программы, для входов и выходов задаются ссылки на элементы этих баз.
В распределенной по пространству или по функциям системе, а также между алгоблочными программами различных уровней взаимодействие осуществляется посредством задания связей между базами обрабатываемых и обработанных данных, аналогично связям (связкам) внутри алгоблочных программ, как описано выше и как будет более подробно описано далее.
Далее рассматриваются примеры реализации данного изобретения.
Алгоблочные программы среднего уровня – для их создания, как для  и других уровней, используется среда визуального графического программирования.
На ФИГ. 1 показан примерный вариант создания алгоблочной программы среднего уровня, согласно одной из реализаций настоящего изобретения.
На ФИГ. 1 в качестве иллюстрации части настоящего изобретения показан системный алгоблок («SYS»). В показанном на ФИГ. 1 интерфейсе пользователя входы и выходы алгоблока представлены выводами алгоблока, а операции самими алгоблоками. Пользователь в графическом интерфейсе, например, посредством нажатия правой кнопки манипулятора «Мышь» (или посредством комбинаций горячих клавиш, кнопок графического интерфейса пользователя, либо любым другим известным способом), в частности, в основном окне графического интерфейса пользователя, может открыть меню добавления алгоблоков, которое показано на ФИГ. 2.
На ФИГ. 2 показано меню, позволяющее пользователю добавить новый алгоблок, согласно одному из осуществлений настоящего изобретения.
Стоит отметить, что добавление последующего алгоблока может осуществляться как в конец списка, так и до и поле выбранного алгоблока, то есть алгоблока, на котором была нажата клавиша манипулятора «Мышь».
В качестве одного из примерных описаний настоящего изобретения рассматривается пример арифметической функции, в частности сложения, посредством использования системного алгоблока и арифметического алгоблока, как показано на ФИГ. 3. Так, в качестве примера было осуществлено добавление (пользователем) арифметического алгоблока к уже добавленному и изображенному на ФИГ. 1 системному алгоблоку.
На ФИГ. 3 показан примерный вариант компонентов алгоблочной программы, согласно одному из вариантов настоящего изобретения. В приведенном примере системный алгоблок («SYS») является базовым и который позволяет задействовать в программах системные параметры.
Выходы алгоблока могут быть связаны с входами другого алгоблока или с входами того же самого алгоблока. Так, например, один из выходов системного алгоблока может быть связан пользователем, по крайней мере, с одним из входов другого алгоблока, например, с одним из входов арифметического алгоблока (в частности, входом 1 «Вх1»). Т.е. один выход алгоблока может быть связан с одним и более входами, по крайней мере, одного алгоблока, а один вход алгоблока может быть связан только с одним выходом алгоблока. Стоит отметить, что выходы и входы одного алгоблока могут быть связаны между собой.
При выборе пользователем одного из выходов алгоблока, данный выход алгоблока подсвечивается, в частности, выделяется цветной, например, красной полосой. После выделения пользователем выхода алгоблока пользователь может выбрать один из входов другого или того же алгоблока, чтобы связать с ним упомянутый выход. После выбора входа при осуществлении связи входа и выхода алгоблока (алгоблоков) пользователю может быть отображено меню подтверждения установления связи между входом и выходом алгоблока (алгоблоков).
После установления связи (осуществления привязки, связки) между входом и выходом алгоблока (алгоблоков) такая связь отображается в графическом интерфейсе пользователя посредством линии, связывающей упомянутые вход и выход алгоблока (алгоблоков). Такая, по крайне мере, одна линия, отражающая осуществление связи входа и выхода, по крайней мере, одного алгоблока может иметь цвет, отражающий, например, тип данных такой связи (например, розовый – биты, серый – байты, красный – желтый – вещественное число и т.д.), с целью обеспечения пользователю визуального контроля за связями между алгоблоками (входами и выходами алгоблоков). С целью повышения наглядности линии могут визуально от выходов идти в общую шину данных (линию большей толщины черного, например, цвета) и выходить из нее ко входам. При этом цветная линия от выхода до входа показывается, и в том числе внутри более широкой шины по выбору выхода или входа «мышью», например.
На выходах арифметического алгоблока осуществляется отображение результатов выполнения заданного кодом типа алгоблока и его дополнительными параметрами действия над данными, поступающими на входы арифметического алгоблока, входы, в соответствии со связями, заданными связками. В показанном на ФИГ. 3 примере на Вход 1 арифметического алгоблока подается переменная величина (в данном случае номер текущего цикла алгоблочной программы) с выхода системного алгоблока, как описано выше. На остальные входы арифметического алгоблока подаются нули. Результатом работы указанного арифметического алгоблока (в частности, операций, которые более подробно будут описаны ниже, каждого составного элемента арифметического алгоблока – «1», «2», «3», «4», «5», «6» и «7») являются значения на его выходах (в рассматриваемом примере - значения на выходах 1, 2, 3, 4, 5, 6 и 7). Согласно значениям на входах арифметического алгоблока и заданному коду алгоблока (в том числе, упомянутым операциям составных элементов арифметического алгоблока, которые в данном случае являются операциями сложения), на Выходе 1, Выходе 5 и Выходе 7 арифметического алгоблока в данном случае значения соответствуют (равны) входному значению на Входе 1 арифметического алгоблока  с учетом нулевого значения на Входе 2. Значения других выходов данного арифметического алгоблока в данном случае равны нулю, согласно упомянутым операциям арифметического алгоблока и значениям на входах 3 и 4, 5 и 6, 7 и 8.
Далее в качестве иллюстративного варианта упомянутый выше выход системного алгоблока связан (пользователем) с входом арифметического алгоблока, отличным от используемого выше, в частности, с Входом 3 («Вх-3») арифметического алгоблока, другой выход системного алгоблока связывается, например, с Входом 4 («Вх-4») арифметического алгоблока.
Пользователь может выбрать алгоблок (в данном случае арифметический алгоблок), чтобы открыть меню структуры алгоблока (свойств алгоблока) - окно (меню) настройки параметров алгоблока, как показано на ФИГ. 4.
Меню настройки (параметров) алгоблока содержит подменю «Настройка» (в частности реализованным окном, открывающимся посредством выбора пользователем соответствующей вкладки «Настройка»), подменю «Входы данных», подменю «Входы управления», подменю «Выходы данных» и подменю «Выходы диагностики», которые более подробно описаны далее.
В подменю «Настройка» отображаются значения на входах и выходах выбранного в настоящий момент алгоблока, а также операции для соответствующих входов и выходов алгоблока (операции, осуществляемые алгоблоком между соответствующим входом и выходом, например, Входом 3 и Входом 4 и т.д.). Так в настоящем примере Операцией («Оп1») для Входа 3 («Вх 3») и Входа 4 («Вх 4») является операция сложения («+»). Операция (согласно типу алгоблока) может быть изменена пользователем в (выпадающем) меню типов операций. В данном случае для арифметического алгоблока может быть выбрана одна из арифметических операций, например, сложение, вычитание, деление, умножение, проценты, возведение в степень, логарифм и т.д. Для других типов алгоблоков (например, логического алгоблока) могут быть выбраны (пользователем) операции, соответствующие типу алгоблока. Стоит также отметить, что тип операции может быть задан также посредством использования управляющих входов (входов управления) алгоблока, путем задания соответствующего операции числа (например, 0 – сложение, 1 - вычитание, 3 - умножение и т.д.) как описано в рамках настоящего изобретения.
Пользователь может настраивать любые параметры алгоблочной программы и отдельных алгоблоков, причем алгоблочная программа меняется во время работы (исполнения) в процессе отладки, т.е. отображение результата работы алгоблочной программы и ее составных частей, алгоблоков происходи в то время, когда пользователь осуществляет описываемые изменения, например, в меню свойств алгоблока (окне настройки параметров алгоблока).
Принципиальное ускорение разработки и отладки в данном изобретении достигается благодаря тому, что программу можно редактировать в процессе ее работы и тут же видеть результат благодаря тому, что система является графической (визуальной), не требует трансляции, и отсутствует возможность допустить синтаксическую ошибку: вне зависимости от того, какие параметры в интерфейсе, в частности, в меню свойств алгоблока выбирает пользователь, результатом его действий является работоспособная не зацикленная программа.
Для достижения этого действия, доступные пользователю, подобраны так, что отсутствует возможность не только синтаксической ошибки, но и зацикливания программы. Как описывается в рамках настоящего изобретения, у алгоблочной программы существует один общий цикл, внутри которого задание циклов пользователем не допускается, глубина итеративных вычислений строго ограничена.
Стоит отметить, что у алгоблока существуют несколько типов выходов, в частности выходы данных и диагностические (которые более подробно описаны ниже). Также у алгоблоков существует несколько типов входов, в частности входы данных и управляющие (которые более подробно описаны ниже).
Если для первого входа («-1») арифметического алгоблока, на котором стоит (задано, подается) переменная величина/значение (или постоянная величина/значение) и на входе 2 («Вх 2») стоит (задано, подается) значение «0», то в случае смены Операции 1 с «+» (сложение) на «/» (деление) на Выходе 1 («Вых 1») алгоблока будет отображено предупреждение о некорректности операции (в данном случае – делении на ноль – значения Входа 1 на значение Входа 2, значением последнего которого является ноль по умолчанию), что говорит о том, что операция, выполняемая алгоблоком, выполнилась с ошибкой, как показано на ФИГ. 5 (отображение «восклицательного знака»). При этом на первом диагностическом выходе, соответствующем в данном случае первому выходу данных, 0 сменится на 1, что также является признаком некорректности операции, который можно обработать это в последующей части программы.
Т.е. результат данной операции (деление на ноль – недопустимая операция) является недостоверным - операция выполнилась с ошибкой. Такое упоминание позволяет пользователю осуществить соответствующие действия для внесения изменений в программу (в частности, в операции, входные данные и т.д.) для обработки алгоблоком соответствующим (правильным) образом обработать возникшую ситуацию (в частности, устранить возникшую потенциальную ошибку). В ходе выполнения (процессе исполнения) алгоблочной программы не осуществляется исключений (exceptions) и созданная (создаваемая) программа продолжает функционирование (работу), т.е. осуществляется продолжение выполнения (исполнения) алгоблочной программы. Таким образом, исполнение программы осуществляется автоматически всегда, что позволяет описываемой системе (в частном случае используемой для автоматического управления различными устройствами, механизмами и т.д.) без участия пользователя осуществлять упомянутое управление и принимать решения самостоятельно, то есть, не дожидаясь вмешательства пользователя, как после, так и во время создания алгоблочной программы.
Вышеописанное обеспечивает исполнение алгоблочной программы (и системы) вне зависимости от данных, подаваемых на ее вход (в частности, на вход(ы) алгоблоков), т.е. программа осуществляет обработку любых поданных на ее вход данных, причем, за заданный такт, за заданное время в зависимости от заданных характеристик.
Описываемая система и способ позволяют осуществлять (автоматическое) согласование типов данных. Так, в приведенном выше примере на вход арифметического алгоблока, способный получать типы данных в виде вещественных чисел, были поданы целочисленные числа с выхода системного алгоблока. Так, в качестве примера, первый нижний слева выход системного алгоблока (являющийся битовым (логическим) выходом, имеющим на выходе битовый тип данных) может быть подан на один из входов арифметического алгоблока, в частности, на вход 5 арифметического алгоблока.
Таким образом, описываемая система позволяет осуществлять согласование типов данных, в частности, битовых, целых, вещественных и т.д., т.е. согласование всех типов данных осуществляется описанной системой автоматически. Это позволяет создание программы пользователем без знания языков программирования, в частности, без знания пользователя о необходимости согласования типов данных и/или без знания пользователем синтаксиса языков программирования.
На ФИГ. 6 показан примерный вариант алгоблочной программы с добавленными логическим алгоблоком (в данном случае битовым) и алгоблоком заданий (в данном случае битовым), согласно одному из вариантов настоящего изобретения. Как было сказано выше, пользователь может добавить алгоблок (в данном случае логический алгоблок) в конец списка алгоблоков, а также перед или после (предварительно) выбранного пользователем алгоблока в интерфейсе пользователя. Выбор позиции добавляемого алгоблока осуществляется посредством дополнительного меню выбора позиции добавления алгоблоков.
В рассматриваемом примере выход 1 алгоблока заданий связан (пользователем) с входом 1 логического алгоблока, а выход 2 алгоблока заданий связан (пользователем) с входом 2 логического алгоблока. В данном случае на выходах логического алгоблока содержатся нули.
В показанном на ФИГ. 6 примере специальный алгоблок – заданий - отличается тем, что изменение значений выходов данного алгоблока не осуществляется входами данного алгоблока, поскольку данный алгоблок не имеет входов. Значения выходов данного алгоблока могут быть заданы пользователем в окне настройки (свойств) алгоблока без возможности изменения значений на выходе такого алгоблока выходами с других алгоблоков и т.д., т.е. данный алгоблок не позволяет алгоблочной программе (или, по крайней мере, одному составному элементу алгоблочной программы) изменять, в частном случае, перезаписывать (перезатирать) выходные значения данного специального алгоблока.
На ФИГ. 7 показано подменю выходных данных для алгоблока заданий, согласно одному из вариантов осуществления настоящего изобретения.
После изменения (пользователем) значения выхода 1 («Вых 1») алгоблока, в данном случае с «0» на «1», в меню выходных данных, значение на выходе 1 логического алгоблока изменилось на «1», согласно значениям на входах логического алгоблока и заданному коду алгоблока (в том числе, упомянутым операциям составных элементов арифметического алгоблока, которые в данном случае являются операциями сложения), в данном случае операции «ИЛИ» для входов 1 2 логического алгоблока. При смене упомянутой операции «ИЛИ» логического алгоблока на «И», в режиме реального в рамках интерпретирования алгоблочной программы значение на выходе 1 логического алгоблока будет равно «0» согласно текущей операции, установленной пользователем.
Упомянутые выше управляющие входы, которые визуально разделены с основными входами алгоблока, являются такими же входами алгоблока, как и входы данных, но позволяют осуществлять управление алгоблоком, в частности, осуществлять изменение операций посредством подачи на управляющий вход значений, являющимися закодированными типами описываемых операций. Так, например, операция «ИЛИ» логического алгоблока может быть закодирована численным значением, в частном случае, значением равным «14», операция «И» алгоблока может быть закодирована численным значением, равным «8», тождество – «9» и т.д. Закодированный описанным выше способом тип операции на входе алгоблока отображается в интерфейсе пользователя. Управляющий вход алгоблока может быть связан с выходом другого (или того же алгоблока) с целью установления (или изменения) типа данной операции, что также позволяет динамически изменять тип операции, в зависимости от значения, подаваемого на управляющий вход алгоблока, в частности, на (управляющий) вход операции алгоблока. Значение несвязанного входа (общего или управляющего) алгоблока может быть изменено пользователем в окне списка алгоблоков интерфейса пользователя посредством выбора пользователем данного входа и посредством задания значения для данного входа алгоблока, например, посредством меню задания значения (в частности, закодированного, как описано выше) по умолчанию для входа алгоблока, как показано на ФИГ. 8. В показанном на ФИГ. 8 подменю «Входов данных» алгоблока отображаются значения входов алгоблока, значения входов по умолчанию, связь между входами-выходами алгоблоков и т.д.
Стоит отметить, что значения несвязанных (непривязанных) входов алгоблоков, в частности, не связанных с выходами алгоблоков (например, выходом того же алгоблока или другого алгоблока) задаются (в частности, хранятся) в отдельной таблице базы данных (таблице значений по умолчанию для входов алгоблоков). Такие значения для входов алгоблоков могут быть заданы как для входов данных алгоблоков, так и для управляющих входов алгоблоков. Т.е. в частном случае осуществления настоящего изобретения значения по умолчанию для входов алгоблоков являются константами и хранятся в упомянутой таблице значений по умолчанию для входов алгоблоков. Так, например, при выборе подменю «Входов данных» для алгоблока (например, логического алгоблока) в меню настройки параметров алгоблока (после его выбора пользователем) пользователь может изменить значение по умолчанию, по крайней мере, для одного из входов алгоблока, например, для Входа 3 («Вх3») с «0» на «1», как показано на ФИГ. 9, причем в окне списка алгоблоков интерфейса пользователя на соответствующем входе алгоблока будет отображено значение, заданное пользователем таким способом. Причем в данном случае при изменении пользователем упомянутого значения по умолчания осуществляется изменение самой алгоблочной программы (но не данных), поскольку значения по умолчанию (являющиеся константами) являются частью алгоблочной программы. Так, при изменении значений выходов алгоблоков (например, упомянутого выше алгоблока заданий) осуществляется изменение данных только в оперативной памяти, но алгоблочная программа не меняется, а при изменении значений по умолчанию осуществляется изменение алгоблочной программы, т.е. при вводе (изменении) значений по умолчанию осуществляется изменение (в частности ввод) значений в таблицах, описывающих алгоблочную программу и которые могут сохраняться в постоянной или полупостоянной памяти.
Алгоблочную программу описывает таблица алгоблоков (типов алгоблоков), таблица связей между алгоблоками и таблица значений входов алгоблоков по умолчанию, причем упомянутые таблицы составляют (формируют) базу данных. Таким образом алгоблочная программа является набором упомянутых таблиц, по крайней мере, одной базы данных, которые хранятся, по крайней мере, в одном хранилище данных, в частности в постоянной памяти, например, постоянной памяти (вычислительного) устройства, в частности ПЗУ устройства, или в полупостоянной памяти. Причем значения выходов алгоблоков сохраняются (хранятся) в оперативной памяти, в частности в ОЗУ (вычислительного) устройства.
В процессе создания (разработки) алгоблочной программы все данные алгоблочной программы и таблицы, составляющие саму программу, хранятся в оперативной памяти. При этом таблицы, составляющие программу, при их изменении сохраняются в полупостоянной памяти устройства (включая накопитель на жестких магнитных дисках или флэш-память), на котором осуществляется создание такой алгоблочной программы. В постоянную или полупостоянную память устройства исполнения программа (составляющие ее таблицы) может быть записана по команде пользователя удаленно с устройства, где происходит разработка программы. Алгоблочная программа также может быть в полном объеме вычитана по команде пользователя из устройства, где она исполняется, в устройство, где пользователь может ее изменить, отладить и загрузить обратно в устройство исполнения. Возможен также режим удаленной отладки, когда данные из устройства исполнения постоянно поступают в устройство, где происходит отладка программы, что позволяет пользователю постоянно видеть результаты выполнения всех алгоблоков программы.
При изменении (пользователем) связей (связок) между алгоблоками и/или значений входов алгоблоков осуществляется изменение алгоблочной программы, в то время как при изменении значений выходов осуществляется изменение данных (для) созданной (или создаваемой, в частности в процессе изменения) алгоблочной программы.
Стоит отметить, что (пользователем) может быть осуществлено отключение алгоблока (приостановка выполнения кода алгоблока), в частности, посредством задания на соответствующем (управляющем) входе алгоблока значения, соответствующего отключению алгоблока. Так, например, при задании (подаче) на один из первых двух верхних левых (управляющих) входов алгоблока, отвечающих за отключение алгоблока, значения, соответствующего отключению алгоблока, например, в частном случае, «1» (или отличное от «0» число/значение, которое является значением по умолчанию и является значением, соответствующим тому, что алгоблок отключен, т.е. не выполняется код алгоблока), то в данном случае исполнение данного алгоблока будет (при)остановлено, т.е. алгоблок перестанет исполняться, в частности перестанет исполняться код алгоблока. Таким образом, при изменении значения по умолчанию, например, на входе 1 логического алгоблока во вкладке входных данных окна настройки параметров алгоблока с «0» на «1», на выходах логического алгоблока оказываются нулевые значения, в отличие от значений, указанных на ФИГ. 7.
Стоит отметить, что вход управляющий алгоблока (в данном примере управляющий вход арифметического алгоблока) может быть связан с любым выходом другого алгоблока, например, алгоблока заданий, или с любым другим выходом того же самого алгоблока (в данном примере арифметического алгоблока).
Как было сказано выше, в зависимости от значения на выходе алгоблока, который (выход) связан с (управляющим) входом алгоблока, при изменении значения выхода посредством окна настройки параметров алгоблока заданий в подменю выходов данных, может быть остановлено или осуществлено (в том числе продолжено) выполнение алгоблока. Таким образом при подаче «отключающего» значения на вход алгоблока с выхода алгоблока (того же или другого) может быть остановлено выполнение алгоблока, на вход которого подается «отключающее» значение, и значения выходов алгоблока перестают меняться.
Как было сказано выше и в рамках рассматриваемого примера один из выходов алгоблока (в рассматриваемом примере - логического алгоблока) может быть связан с входом другого алгоблока (в рассматриваемом примере – арифметического алгоблока), причем с входом управляющим (в данном случае входом отключения алгоблока). В данном рассматриваемом примере выход 1 логического алгоблока связан с входом отключения (управляющим входом) арифметического алгоблока. Поскольку на выходе логического алгоблока значение равно «0», то работа арифметического алгоблока не останавливается (логический алгоблок продолжает выполнять код алгоблока). В данном случае «0» на управляющем входе (в частности входе отключения алгоблока) арифметического алгоблока соответствует тому, что алгоблок продолжает выполнять код алгоблока, как было описано выше.
Далее при задании (пользователем) на Выходе 1 алгоблока заданий значения, равного «1» (единице), которое в данном случае связано с входом 1 логического алгоблока, причем на Выходе 1 логического алгоблока теперь значение равно «1» (единице) и данное значение подается на вход отключения арифметического алгоблока. Поскольку в данном случае значение на входе отключения арифметического алгоблока соответствует значению отключения алгоблока (в частности, отличное от «0»), то значения на выходах арифметического алгоблока перестают изменяться (замораживаются). Описываемые управляющие входы (в том числе входы отключения) служат для выполнения вычисления алгоблоками. В данном примере посредством осуществленных выше операций, в частности, описанных связей между алгоблоками и задания значений на выходах (и входах) алгоблоков был создан аналог условного оператора логического «ЕСЛИ». В данном примере, если на (управляющий) вход арифметического алгоблока подается истинное значение («1», «Истина» («true»)), то операция блокируется.
По необходимости пользователь может изменить логику действия (алгоблока) посредством выбора (указания) необходимого алгоблока (в настоящем примере, арифметического алгоблока) в подменю Входов управления (окна настроек параметров алгоблока) через изменение параметров Входов управления. Так, например, в подменю Входов управления пользователь может изменить параметры управляющих входов алгоблока. В частности, для упомянутого изменения логики алгоблока пользователь может выставить флаг инверсии, по крайне мере, для одного входа управления. Как было отмечено выше, при изменении, по крайней мере, одного из значений (или параметров) по умолчанию входов управления алгоблока осуществляется изменение алгоблочной программы, причем любое изменение алгоблочной программы приводит к полному очищению оперативной памяти, в которой хранятся данные алгоблочной программы – таблицы выходов данных и выходов диагностики алгоблоков, как было описано выше.
Далее при изменении (в частности, восстановлении заданных ранее значений) на выходах алгоблоков, например, алгоблока заданий, осуществляется исполнение (кодов) алгоблоков.
С использованием не более чем одного алгоблока может быть создана (пользователем) динамическая операция. Для создания динамики (динамической операции) в алгоблочной программе используется запоминание с предыдущих шагов (предыдущих тактов исполнения). Так, например, в случае логического алгоблока выходы такого алгоблока (значения выходов алгоблока) являются значениями с предыдущего шага данного алгоблока.
В приведенном примере на основе логического алгоблока может быть собран (создан) триггер. В данном случае первые два (основных) входа логического алгоблока являются счетными входами триггера. Один из входов логического алгоблока может быть использован в качестве обратной связи триггера (подавать значение на него с предыдущего шага). Третий вход логического алгоблока используется в качестве сбросного входа. Выход 5, который является результатом обработки всех четырех выходов логического алгоблока связывается с Входом 4 того же логического алгоблока. Операция 5 (для Выхода 1 и выхода 2) в настройках алгоблока при этом изменена (пользователем) на операцию «ИЛИ», а операция 2 (между третьим и четвертым входом логического алгоблока) изменена на операцию «2>1», обеспечивающую сброс выхода алгоблока при подаче «1» на сбросной вход – Вход 3.
Посредством задания значений алгоблока (в данном случае алгоблока заданий) может быть проверена работа триггера, как упомянуто выше.
Аналогичным образом на основе алгоблока арифметического алгоблока может быть построен интегратор путем связывания выхода операции суммирования с одним из двух ее входов – интеграл будет накапливаться на выходе алгоблока, который соответствует операции суммирования.
На ФИГ. 10 показан примерный вариант интерфейса настроек алгоблока, согласно одному из осуществлений настоящего изобретения. В частном случае осуществления настоящего изобретения интерфейс настроек алгоблока является интерфейсом свойств алгоблока.
Пользователь, выбрав элемент графического интерфейса, например, представленный элементом меню ("вкладкой") выходных данных привязать, по крайней мере, один параметр к базе данных (БД), в частности связать, по крайней мере, один из параметров с базой данных.
В частном случае осуществления настоящего изобретения пользователь, осуществив привязку Вых1 с А1 и/или Вых2 с А2, может «свернуть» (или закрыть окно) свойств алгоблока, например, посредством «клика» левой кнопкой мыши по пустому пространству графического интерфейса пользователя (в частности, под алгоблоками, цепочкой из алгоблоков). Пользователь также может соединить другие выходы алгоблоков с входами других алгоблоков, например, Вых1 алгоблока аналоговых входов с Вх1 алгоблока сравнения, а Вых2 входов с У1 (первой уставкой) алгоблока сравнения. Далее пользователь может открыть окно свойств алгоблока сравнения (которое продемонстрировано на ФИГ. 11), как было описано выше.
Далее, пользователь может осуществить привязку во вкладке Вых.данных, как показано на ФИГ. 11.
В созданной программе с использованием алгоблоков осуществляется сравнение значения из А1 базы данных со значением А2 из базы данных, причем результат сравнения заносится в Д1, как показано на ФИГ. 12.
На ФИГ. 12 показан один из вариантов системного окна программы, согласно одному из осуществлений настоящего изобретения. Как продемонстрировано на ФИГ. 12 переменная Д1 приняла значение равное единице, поскольку значение А1 превысило уставку, т.е. значение А2.
Имя и описание переменной Д1 может быть задано (определено) пользователем вручную посредством описываемых в настоящем изобретении инструментов, предоставляемых описываемой системой, например, в окне интерфейса базы данных.
Механизмом обмена данными с внешними устройствами через порты или память являются для алгоблоков среднего уровня алгоблоки специального типа – слоты.
Стоит отметить, что в рамках настоящего изобретения могут быть использованы несколько типов слотов (алгоблоков слотов), например:
- слоты (MikKON), примерный вариант одного из которых показан на ФИГ. 29, осуществляющие обмен данными с модулями (MikKON), в частном случае слотами, с использованием последовательных портов модуля;
- слоты Память (примерный вариант одного из которых показан на ФИГ. 30), осуществляющие обмен данными через память модуля;
- слоты FRAM (примерный вариант одного из которых показан на ФИГ. 31), осуществляющие чтение-запись данных в FRAM;
- слоты CAN (примерный вариант одного из которых показан на ФИГ. 32), осуществляющие обмен данными с модулями через CANBUS.
В настройках слота может быть задано количество слотов такого типа и тип выводов (слот может либо читать данные, либо писать их) и адрес в памяти с которого они читаются или по которому записываются.
Стоит отметить, что для упомянутых слотов может быть задан тип слота (используемый протокол), начальный адрес в памяти модуля (все входы-выходы модуля отображаются на его память), тип и названия выводов.
Используемый тип слота в дальнейшем может осуществляться задание дополнительных параметров в окне настройки алгоблока слота. Например, может быть задан номер порта и адрес, для некоторых – адрес расширения (MikKON).
Слот может выполнять либо операцию чтения из модуля, либо операцию записи в модуль. Таким образом, у слота могут быть либо входы, либо выходы. Названия выводов не могут повторяться, так как по ним осуществляется идентификация выводов. Смещение задаёт смещение адреса вывода относительно заданного адреса в памяти модуля. Смещение может быть задано в формате <байт>:<бит>. Например, для вычитывания самых первых битов из байтов по адресам 5 и 10, может быть задан базовый адрес в памяти модуля равный 3, а смещения:
- для первого вывода: 2:0;
- для второго вывода: 7:0.
После конфигурирования слотов будут доступны соответствующие алгоблоки слотов, которые могут быть выбраны в меню окна списка алгоблоков.
На ФИГ. 29 показан примерный вариант алгоблока слота (MikKON), согласно одному из вариантов осуществления настоящего изобретения.
Изображенные на ФИГ. 29 «Dis1» и «Dis2» являются входами отключения алгоблока. Ненулевое значение на любом из этих входов отключает алгоблок. Изображенный на ФИГ. 29 «T» является минимальным тактом опроса (в миллисекундах). Изображенный на ФИГ. 29 «Adr» является адресом модуля. Изображенный на ФИГ. 29 «SA» является адресом расширения модуля. Изображенный на ФИГ. 29 «#» является номером порта, через который производится обмен с модулем. Стоит отметить, что изображенные на ФИГ. 29, «Dis1», «Dis2», «T», «Adr», «SA», «#» являются входами управления.
Кроме входов управления у алгоблока могут существовать выходы диагностики (как показано на ФИГ. 29):
«А» - активность модуля. «1» означает, что обмен с модулем осуществляется нормально. Если от модуля нет ответа в течение времени равного минимальному такту опроса, то на этом выводе устанавливается 0;
«Т» - реальный такт опроса (в миллисекундах).
На ФИГ. 30 показан примерный вариант алгоблока слота Память («MEM»), согласно одному из вариантов осуществления настоящего изобретения.
В частном случае осуществления настоящего изобретения входы управления "Dis1" и "Dis2" являются входами отключения алгоблока. Ненулевое значение на любом из них отключает алгоблок.
На ФИГ. 31 показан примерный вариант алгоблока слота FRAM, согласно одному из вариантов осуществления настоящего изобретения. Ненулевое значение на любом из них отключает алгоблок.
В частном случае осуществления настоящего изобретения входы управления "Dis1" и "Dis2" являются входами отключения алгоблока.
На ФИГ. 32 показан примерный вариант алгоблока слота CAN, согласно одному из вариантов осуществления настоящего изобретения.
В частном случае осуществления настоящего изобретения входы управления "Dis1" и "Dis2" являются входами отключения алгоблока. Ненулевое значение на любом из них отключает алгоблок.
Изображенный на ФИГ. 32 «T» является минимальным тактом опроса (в миллисекундах). Изображенный на ФИГ. 32 «Adr» является адресом модуля. Изображенный на ФИГ. 32 «#» является номером порта, через который производится обмен с модулем.
Кроме входов управления у алгоблока могут существовать выходы диагностики (как показано на ФИГ. 32):
«Т» - реальный такт опроса (в миллисекундах);
«А» - активность модуля. «1» означает, что обмен с модулем осуществляется нормально. Если от модуля нет ответа в течение времени равного минимальному такту опроса, то на этом выводе устанавливается 0.
В частном случае осуществления настоящего изобретения создаваемая программа может содержать несколько повторяющихся алгоблоков и/или цепочек алгоблоков, которые могут быть вынесены (добавлены) пользователем, по крайней мере, в одну подпрограмму, что, в частном случае позволяет уменьшить общий размер программы.
Стоит отметить, что в частном случае, программа является еще одним циклом выполнения, который может быть вызван с помощью алгоблока вызова подпрограммы. При обнаружении в цепочке алгоблоков алгоблока вызова подпрограммы, система выполнения программы останавливает выполнение текущего цикла, осуществляет выполнение подпрограммы и затем продолжает выполнение со следующего за алгоблоком выхода подпрограммы алгоблока.
Подпрограмма всегда начинается с алгоблока входа в подпрограмму и заканчивается алгоблоком выхода из подпрограммы и может иметь, в частном случае, 16 входов и 16 выходов. Кроме того, входы алгоблоков, находящихся в теле подпрограммы, могут быть привязаны к выходам алгоблоков основных циклов для использования «глобальных» данных.
Как было описано выше пользователем может быть осуществлено добавление алгоблоков в программу.
На ФИГ. 33 показан примерный вариант окна списка алгоблоков, согласно одному из осуществлений настоящего изобретения.
В данном окне пользователем может быть осуществлено добавление и удаление алгоблоков в выбранном цикле и изменение привязки входов (алгоблоков) к выходам (алгоблоков), а также отображаются алгоблоки выбранного цикла.
В частном случае, цвет отображаемого алгоблока может зависеть от того, выбран ли он пользователем, связаны ли выходы алгоблока с входами другого алгоблока и т.д. Так, например, выбранный пользователем алгоблок отображается жёлтым цветом, алгоблок, выходы которого связаны с входами выбранного – бирюзовым, а алгоблок, входы которого связаны с выходами выбранного – малиновым.
В частном случае осуществления настоящего изобретения пользователь может добавить алгоблок в создаваемую им программу посредством манипулятора "мышь". Так, например, пользователь, нажав ("кликнув") правую кнопку манипулятора "мышь", может выбрать вкладку «вставить алгоблок» в открывающемся меню и далее в подменю выбрать необходимый алгоблок.
Стоит отметить, что пользователь может осуществить добавление ("вставку") алгоблока в начало списка, перед выбранным алгоблоком или в конец списка (в частности, после всех существующих алгоблоков).
В частном случае осуществления настоящего изобретения пользователь осуществляет связывание ("привязку"), по крайней мере, одного выхода, по крайней мере, одного алгоблока, по крайней мере, с одним входом, по крайней мере, одного другого алгоблока. В частном случае, такое связывание ("привязка") может быть осуществлена с использованием манипулятора "мышь". Так, например, пользователь может выбрать один из выходов одного из алгоблоков и связать его с входом другого (или того же) алгоблока. Так, пользователь может выбрать выход одного алгоблока (выход данных либо выход диагностики и т.д.), затем выбрать вход другого, после чего подтвердить связывание.
На ФИГ. 34 показан еще один вариант алгоблока, в частности арифметического алгоблока, согласно одному из осуществлений настоящего изобретения. В приведенном примере слева у алгоблока располагаются входы данных. Сверху располагаются входы управления. Справа располагаются выходы данных, снизу располагаются выходы диагностики. Стоит отметить, что количество входов и выходов алгоблоков зависит от типа алгоблока. В частном случае осуществления настоящего изобретения входы алгоблока имеют значение по умолчанию, которое используется, если вход такого алгоблока не связан с выходом другого алгоблока. Внутри тела алгоблока в верхнем левом углу осуществлен вывод (отображение) номера цикла, в котором задан (в который добавлен) данный алгоблок и номер алгоблока в цикле. Под ним может располагаться условное обозначение типа алгоблока. Также внутри тела алгоблока может быть отображен признак инверсии и знаковости для входов алгоблока. У примерного варианта алгоблока, изображенного на ФИГ. 34, у входа данных «Вх1» пользователем задана (определена) инверсия значения (neg), а для входа «Вх2» - учёт знака (sign). Сочетание инверсии значения «neg» и учёта знак «sign» в зависимости от типа входа, приведено в таблице ниже:
Тип
neg=0, sign=0
neg =0, sign =1
neg =1, sign =0
neg =1, sign =1
Бит
1 если больше 0
1 если не равно 0
1 если меньше или равно 0
1 если равно 0
Байт
Не изменяется
Не изменяется
Побитовая инверсия входного значения
Смена знака на противоположный
2-хбайтовое целое
Не изменяется
Не изменяется
Побитовая инверсия входного значения
-value
4-хбайтовое целое
Не изменяется
Не изменяется
Побитовая инверсия входного значения
-value
8-ибайтовое целое
Не изменяется
Не изменяется
Побитовая инверсия входного значения
-value
4-байтовое с плавающей точкой
Не изменяется
1/value
-value
-1/value
8-байтовое с плавающей точкой
Не изменяется
1/value
-value
-1/value
Стоит отметить, что алгоблоки могут иметь входы управления «Dis1» и «Dis2». Упомянутые входы могут быть использованы для отключения данного алгоблока из выполнения. Если на них подано ненулевое значение, то алгоблок не работает.
Выходы алгоблока могут быть привязаны к базе данных (MWBridge). В этом случае результаты выполнения алгоблока будут отражаться в соответствующих параметрах БД (MWBridge). Для передачи данных из БД (MWBridge) в систему выполнения алгоблочной программы может быть использован специальный тип алгоблоков: алгоблоки задания. Данный тип алгоблоков резервирует область данных соответствующего типа и позволяет передать на входы других алгоблоков значение из базы данных (MWBridge).
Стоит отметить, что пользователь может выбрать вход одного алгоблока, связанный с выходом другого алгоблока, или пользователь может быть выход одного алгоблока, связанный с входом другого алгоблока, чтобы вызвать отображение описываемой системой и способом двух таких связанных алгоблоков, показанных на ФИГ. 35.
На ФИГ. 35 показан примерный вариант отображения двух связанных между собой алгоблоков, согласно одному из вариантов осуществления настоящего изобретения. На ФИГ. 35 показана связь между двумя алгоблоками, в частности, связь между выходом «№ДБ» системного алгоблока («SYS») и входом («Вх4») арифметического алгоблока («1:2»). Продемонстрированным и описанным способом пользователем может быть осуществлено отслеживание всей последовательности алгоблоков, в частности, связей между алгоблоками.
Стоит отметить, что в частном случае осуществления настоящего изобретения пользователь может настраивать параметры алгоблоков.
На ФИГ. 36 показан примерный вариант внешнего вида окна настройки параметров алгоблока. В приведенном окне (в частности интерфейсе пользователя, диалоге пользователя, страница и т.д.) пользователем может осуществляться настройка параметров выбранного алгоблока. Стоит отметить, что для каждого типа алгоблоков может существовать свой диалог (окно, интерфейс, страница и т.д.) настройки. В частном случае осуществления настоящего изобретения одинаковыми могут быть окна (страницы, интерфейс и т.д.) просмотра и настройки входов (данных) алгоблока, входов управления алгоблока, выходов (данных) алгоблока и выходов управления алгоблока.
Также, для алгоблока пользователем могут быть изменены описание алгоблока, например, с целью придания большей читабельности создаваемой программы из алгоблоков в целом.
Как было сказано выше, пользователь может осуществлять настройку входов алгоблоков, в частности посредством окна (интерфейса, страницы и т.д.) настройки входов алгоблока, примерный вариант которого изображен на ФИГ.37. В частном случае осуществления настоящего изобретения, как показано на ФИГ. 37, в окне настройки входов алгоблока может отображаться пользователю: текущее значение входа, его значение по умолчанию, признак инверсии («neg») и знаковости («sign»). Также, в последнем поле может отображаться связь с выходом, номер цикла и алгоблока в цикле, а также название выхода. Инверсия и знаковость могут быть заданы (определены, установлены и т.д.) пользователем (только) для связей входа с выходом. Таким образом, для несвязанного входа («болтающегося в воздухе») упомянутые параметры не могут быть определены (назначены) пользователем.
Как было сказано выше, пользователь может осуществлять настройку выходов алгоблоков, в частности посредством окна (интерфейса, страницы и т.д.) настройки выходов алгоблока, примерный вариант которого изображен на ФИГ. 38. В частном случае осуществления настоящего изобретения, как показано на ФИГ. 38, в окне настройки выходов алгоблока пользователь может просмотреть или изменить (редактировать) название выходов алгоблока, его текущее значение, тип выхода и/или его индекс в соответствующей базе данных, например, базе данных MWBridge. В частном случае, новое значение, для каждого из упомянутых параметров, может быть введен (задан, установлен и т.д.) пользователем в соответствующем поле. В частности, в режиме «подключения к модулю» такое значение будет передано в модуль. В частном случае, упомянутое значение может быть использовано в программе до тех пор, пока не будет перезаписано новым значением в результате выполнения алгоблока (в частном, случае, если такой алгоблок не отключен входами управления «Dis1» или «Dis2»).
Стоит отметить, что создаваемая с использованием алгоблоков программа (алгоблочная программа) с целью обеспечения возможности разделения вычислительных ресурсов по времени, может состоять, по крайней мере, из трех циклов:
- основного цикла;
- замедленного цикла;
- медленного цикла.
Алгоблоки в каждом цикле выполняются последовательно. По завершении выполнения цикла начинает выполняться цикл более низкого приоритета (после «основного» – «замедленный», после «замедленного» – «медленный»). Если в цепочке алгоблоков «замедленного» или «медленного» циклов встречается алгоблок возврата на предыдущий цикл, то выполнение данного цикла приостанавливается, и управление передаётся на цикл более высокого приоритета (с «медленного» на «замедленный», с «замедленного» на «основной»). Это позволяет эффективно использовать вычислительные ресурсы системы исполнения алгоблочной программы, создавая конструкции типа «за время одного выполнения «замедленного» цикла выполнить «медленный» цикл N раз». Кроме того, в данном случае осуществляется возможность точно определить, где и когда будет осуществлено прерывание выполнения одного цикла и переход на другой цикл, и обеспечивается целостность данных при таких переходах, не требуя специальных затрат на сохранение контекста.
Для описываемой алгоблочной программы среднего уровня базы данных (значений выходов) таких программ существуют только в том случае, когда существует алгоблочная программа и созданы (пользователем) алгоблоки.
При этом стоит также отметить, что элементы такой базы - значения выходов алгоблоков - могут быть связаны с внешней БД (например, базой данных аналоговых переменных или дискретных переменных, в частности, БД MWBridge), сохраняемой в ОЗУ. Образ такой БД по требованию пользователя и/или по изменению может копироваться в постоянную память, в частности, в хранилище данных, например, на накопителе на жестких магнитных дисках с, причем образ БД может быть сохранен как в двоичном, так и в текстовом формате, в частности, в файлах. Причем хранение упомянутых данных в двоичном формате позволяют ускорить доступ к таким данным, а хранение в текстовом формате позволяет осуществлять их редактирование (например, пользователем) в любой другой среде (или системе), например, в любой текстовом или табличном редакторе. Образ используется для первоначальной инициализации расположенной в ОЗУ БД при страте исполняющей программы.
В другом частном случае осуществления настоящего изобретения алгоблочные программы реализованы как алгоблочные программы верхнего уровня также с применением среды визуального табличного программирования, но оптимизированной уже под верхний уровень.
Описываемые система и способ предназначены для создания (пользовательских) процедур (как более подробно описано далее), исполняемых вычислительными устройствами или, по крайней мере, одним модулем упомянутых вычислительных устройств (далее исполняемых процедур или процедур). Упомянутые исполняемые процедуры могут исполняться, по крайней мере, одним вычислительным устройством или, по крайней мере, одним модулем (программным или аппаратным) такого вычислительного устройства, в режиме реального времени.
Алгоблок верхнего уровня является набором данных (в том числе двоичных данных), определяющих требуемую операцию (сложение, триггер, решение системы линейных уравнений и т.п.), по крайней мере, одним из следующих способов:
- входы алгоблока - операнды (по крайней мере, один, например, один или два операнда, в зависимости от типа операции);
- результат исполнения операции;
- тип операции;
- условия выполнения операции;
- условия использования операндов;
- выход алгоблока - результат выполнения операции, в том числе логический результат выполнения операции.
Каждый упомянутый набор данных алгоблока может включать в себя (дополнительные) флаги, уточняющие режимы использования таких наборов данных алгоблока.
Упомянутые процедуры (в том числе пользовательские) являются набором алгоблоков, исполняемых (исполняющей системой) последовательно друг за другом.
Для первых четырех из упомянутых процедур алгоблочной программы верхнего уровня исполнение осуществляется по специальному циклическому алгоритму разделения времени, аналогичному описанному выше для трех циклов алгоблоков среднего уровня. То есть упомянутые первые четыре процедуры в данной реализации являются четырьмя циклами обхода.
Первая процедура, являющаяся основной, наиболее часто исполняемой процедурой, присутствует всегда и образует быстрый цикл обхода (цикл первой процедуры), исполняемый на каждом такте работы ядра реального времени (описываемой системы). Для организации вычислительного процесса (исполнения программы) пользователю предоставляется специальный алгоблок (который может быть выбран пользователем, в частности, посредством, меню, как описано ниже) цикла «Переход» на предыдущий цикл обхода, который позволяет прервать исполнение текущего цикла обхода (кроме первого, который не прерывается) и перейти к исполнению предыдущего более быстрого цикла обхода (исполняется процедура с меньшим номером). Упомянутый специальный алгоблок может исполняться безусловно или может иметь условие исполнения, в частности, по значению определенной переменной или времени, т.е. алгоритм организации вычислительного процесса (исполнения циклов второго и выше) может быть изменен по результатам работы программы в процессе ее выполнения.
Например, для случая, когда количество циклов обхода равно трем, причем второй и третий циклы обхода включают алгоблок цикла, делящий эти процедуры на две части: на «2-1», «2-2» и «3-1», «3-2» соответственно (в частном случае, алгоблок цикла осуществляет безусловную передачу управления предыдущему циклу обхода).
Номер такта ядра реального времени
Исполняемые процедуры
1
1 + «2-1»
2
1 + «2-2»
3
1 + «3-1»
4
1 + «2-1»
5
1 + «2-2»
6
1 + «3-2»
Далее последовательность (исполнения циклов второго и выше) повторяется.
Таким образом, в приведенном примере первый цикл обхода (процедура № 1) исполняется в 3 раза чаще второго и в 6 раз чаще третьего.
Исполняемое количество циклов обхода может быть меньше заданного в том случае, если, например, одна из процедур, входящих в циклы обхода, не определена (например, количество алгоблоков в ней равно 0).
Для данной реализации алгоблочной системы процедуры с номерами большими количества циклов обхода, то есть начиная с пятой, не входят в алгоритм непрерывного циклического исполнения и могут быть запущены только посредством использования специального алгоблока «Вызов процедуры».
В данном случае осуществления настоящего изобретения пользователь может добавить в процедуру подпрограмму из алгоблочной программы среднего уровня посредством использования (добавления) соответствующего алгоблока «Вызов подпрограммы».
В алгоблочной программе верхнего уровня может осуществляется проверка данных на достоверность. Такая проверка на данных достоверность может осуществляться после проведения выборки данных (если выборка определена). В частном случае, перед использованием операндов в операции может быть осуществлена проверка операндов на достоверность. В частном случае, может осуществляться, по крайней мере, одна из типов проверок:
- проверка по статусу;
- проверка по базе данных.
По крайней мере, одна из описываемых проверок может быть осуществлена как совместно друг с другом (объединенные комбинацией «И»/«ИЛИ»), так и отдельно друг от друга, как описано далее.
НА ФИГ. 13 показано окно среды визуального табличного программирования, использующееся для создания алгоблочной программы на верхнем уровне.
По нажатию кнопки «Генерация» осуществляется передача исполняющей системе текущей редакции алгоблочной программы, то есть соответствующего набора таблиц. Данную кнопку можно перевести нажатия правой клавиши манипулятора «Мышь» в постоянно нажатое состояние (режим «Автогенерация») в интерфейсе программирования, тогда передача исполняющей системе текущей редакции будет происходить немедленно после внесения любых изменений в программу.
В таблице «Расчетные процедуры» пользователь может выбрать одну из строк таблицы, например, посредством манипулятора «Мышь».
При выборе пользователем одной из строк упомянутой таблицы осуществляется отображение окно редактирования алгоблока. Так, например, при выборе пользователем первой строки данной таблицы осуществляется отображение окна редактирования первого алгоблока, которое показано на ФИГ. 14.
На ФИГ. 14 показано окно редактирования алгоблока в режиме редактирования алгоблочных программ верхнего уровня.
В данном режиме редактирования алгоблока пользователь может задать операнды и результаты операций. Так, пользователь может задать источник данных, например, выбрав в качестве источника данных базу данных "А" (база данных аналоговых сигналов, примерный вариант которой показан на ФИГ. 19) или базу данных дискретных сигналов «D», или другие базы данных в том числе внутренние, которые описаны в рамках настоящего изобретения (как показано на ФИГ. 15.
На ФИГ. 15 показано меню выбора источника данных для алгоблока.
На ФИГ. 16 показано окно редактирования алгоблока с выбранной «Арифметической» операцией в качестве операции для двух операндов (Операнда 1 и Операнда 2).
На ФИГ. 17 показано меню выбора типа арифметической операции, которая осуществляется пользователем при выборе типа арифметической операции.
После смены пользователем типа арифметической операции, в данном случае на «сложение», операнды алгоблока (в частности, Операнд 1 и Операнд 2) изменились автоматически на слагаемые, как показано на ФИГ. 18.
На ФИГ. 18 показан пример окна редактирования алгоблока с выбранной «Арифметической» операцией в качестве операции для двух операндов, в данном случае являющимися слагаемыми при выбранном типе арифметической операции в виде сложения данных операндов. Результатом работы данного алгоблока является сумма, как показано на ФИГ. 18. Входным параметром для первого слагаемого выбрано значение поля «ПослЗначение» (последнее значение) таблицы A1 (базы данных, изображенной на ФИГ. 19); входным параметром для второго слагаемого выбрано значение поля «ПослЗначение» (последнее значение) таблицы A2; а результат операции сложения (Сумма) выводится в поле «ПослЗначение» (последнее значение) таблицы A3, как показано на ФИГ. 19.
На ФИГ. 19 показано окно базы данных аналоговых сигналов. В данной базе данных отображается, по крайней мере, результат работы (выполнения) алгоблоков, и осуществляется возможность задания пользователем значений для алгоблоков, в частности, посредством изменения полей таблиц (A0, A1, A2 и т.д.), например, значения полей «ПослЗначение». Пользователь может изменить "Скаляр" на "Вектор" (или на «Матрицу») для первого слагаемого, второго слагаемого и для Суммы, а также задать размер вектора. В рассматриваемом примере размер вектора выставлен пользователем равным двум (2).
Также пользователь может выставить шаг, который в данном случае также равен двум, как показано на ФИГ. 20 для первого и второго слагаемых, а также для Суммы.
На ФИГ. 21 показано окно базы данных аналоговых сигналов для алгоблока, пример которого приведен на ФИГ. 20.
Подобным описываемым выше способом может быть создан логический алгоблок или любой другой алгоблок, описываемый в рамках настоящего изобретения.
Проверка по статусу может быть осуществлена для данных, имеющих статусные биты состояния сигнала, в частности:
- расчетная БД (Rsprog RR);
- БД (MWBridge/MLB) А и Д.
При этом для баз данных (MWBridge/MLB) проверки по статусу включаются побитно:
- бит «Н» - проверка на достоверность (которая более подробно описана далее);
- бит «К» - бит квитирования;
- 6 битов уставок (в случае достоверности – бит «Н» не взведен)/типов недостоверности (в случае недостоверности – бит «Н» взведен, т.е. равен единице). Проверка по базе данных осуществляется посредством анализа состояния указанного элемента базы данных (скаляра, вектора или матрицы - при необходимости производится свертка данных по флагу «И»/«ИЛИ») - элемент проверяется на значение Истина/Ложь в зависимости от указанных флагов проверки. Приведение различных типов данных к логическому типу осуществляется следующим образом:
- для числовых данных (любые вещественные и целые) значение, равное нулю является Ложью, а значение, не равное нулю является Истиной;
- для символьных данных используется код символа и далее обработка осуществляется как для целых чисел (в частности, посредством использования ASCII-кода).
Вместо проверки по БД могут быть использованы БД, указанные в условии обработки в качестве расширения БД операнда/результата, причем такая проверка (по статусам «И» / «ИЛИ» БД) является упомянутой выше проверкой на достоверность.
Для каждой операции пользователь может задать режимы использования результатов такой проверки при исполнении операции. Для операции определен флаг задания проверки, имеющий следующие значения:
- НПР (не проверять операнды на достоверность);
- Люб (хотя бы один из операндов должен быть достоверен);
- Оба (проверять оба операнда),
а также флаг выполнимости операции в зависимости от результатов проверки:
- Да (операция исполняется);
- Нет (операция не исполняется).
Если необходимо, производится свертка операндов по «И» или «ИЛИ».
Учет недостоверных данных при свертке производится следующим образом:
Проверка операндов
Свертка по «И»
Свертка по «ИЛИ»
Не проверять
Используется константа операнда
Операнд пропускается
Проверять
Используется сам операнд
Операнд пропускается
НПР(не проверять)
ЛЮБОЙ/ОБА
Выполнить операцию
Не выполнять операцию
1операнд
2 операнда
1операнд
2 операнда
1операнд
2 операнда
ЛЮБОЙ
ОБА
ЛЮБОЙ
ОБА
ОПДСТ-0
Оба ОПДСТ-0
ОПДСТ-0
Оба ОПДСТ-0
Оба ОПДСТ-0
ОПДСТ-0
Оба ОПДСТ-0
Оба ОПДСТ-0
ОПНЕДСТ-1
Один ОПНЕДСТ-2
ОПНЕДСТ-4
Один ОПНЕДСТ-5
Один ОПНЕДСТ-7
ОПНЕДСТ-9
Один ОПНЕДСТ-10
Один ОПНЕДСТ-12
Оба ОПНЕДСТ-3
Оба ОПНЕДСТ-6
Оба ОПНЕДСТ-8
Оба ОПНЕДСТ-11
Оба ОПНЕДСТ-13
где ОП ДСТ – Операнд достоверен; ОП НЕДСТ – Операнд недостоверен.
Случай
Действие
Записываемый статус
0
Тривиальный случай: операция выполняется над операндами
0
1
Вместо НЕДСТ операнда используется КОНСТАНТА ОПЕРАНДА
0
2
Если операнд сворачивался по "И": КОНСТАНТА ОПЕРАНДА"ИЛИ": операнд НЕ УЧИТЫВАЕТСЯ
0
3
===
1
4
Используется Сам Операнд
5
5
НЕДСТ операнд НЕ УЧИТЫВАЕТСЯ
0
6
===
4
7
===
4
8
===
4
9
Операция НЕ ВЫПОЛНЯЕТСЯ: используется КОНСТАНТА РЕЗУЛЬТАТА (если разрешена); Константа пишется со своим СТАТУСОМ, флаг записи статуса игнорируется. Но, если задана запись статуса, то статус константы будет затерт статусом операции
5
10
===
5
11
===
9
12
===
9
13
===
9
Если операция не может быть выполнена (деление на 0 и т.д.), то в результат записывается константа результата (если разрешено) и статус 5 (если разрешена запись статуса).
Далее приведен пример анализа достоверности операндов при свертке:
- Свертка по флагу "И": результирующий свернутый операнд объявляется недостоверным, если хотя бы одно из сворачиваемых данных было недостоверным;
- Свертка по флагу "ИЛИ": результирующий свернутый операнд объявляется недостоверным, если все сворачиваемые данные были недостоверными.
Если в результате выполнения свертки по флагу "ИЛИ" (с пропуском недостоверных операндов) нет ни одного достоверного данного, то такой операнд считается отсутствующим.
Далее приведен пример действий при отсутствии операндов, когда обнаружено отсутствие хотя бы одного операнда, то:
- при значениях флагов «Люб» или «Оба» и при флаге выполнимости операции «Да» в результат записывается константа результата;
- при всех остальных комбинациях флагов результат не изменяется.
Расширение БД операнда/результата за счет БД, указанных в поле условия, позволяет использовать в операциях дополнительные БД. Расширение включается "кликом" манипулятора «мышь» в области Условие обработки или Результат обработки, при этом название изменяется на Расширение операнда или Расширение результата.
Правила расширения:
- расширение производится (простым) наращением размерностей:
Структура операнда
Структура условия
Результирующая структура
Примечание
1. Скаляр
Скаляр
Вектор (2)
Вектор (n)
Вектор (1+n)
Матрица (n,m)
Вектор (1+n)
2. Вектор (l)
Скаляр
Вектор (l+1)
Вектор (n)
Вектор (l+n)
Матрица (n,m)
Вектор (l+n)
3. Матрица (l,k)
Скаляр
Матрица (l,k)
Нет расширения
Вектор (n)
Матрица (l,k)
Нет расширения
Матрица (n,m)
Матрица (l+n,k)
Есть, только, если m>=k
- при расширении для дополнительных БД используется тот же тип значений, что и для основного операнда/результата; если такого типа значений для дополнительной БД не существует, то используется текущее значение.
Далее описано осуществление записи данных в алгоблоках.
При записи данных в БД (MWBridge/MLB) перед записью осуществляется проверка ранее записанного значения. Запись осуществляется только в том случае, если данные отличаются (исключение может составлять алгоблок «Копирование»). В частном случае, данными являются (собственно) значение и статус (в зависимости от режима работы могут писаться значение и статус как вместе, так и отдельно).
Запись данных в БД (Rsprog) осуществляется всегда.
На ФИГ. 22 изображен примерный вариант процедур и управление исполнением, согласно одному из осуществлений настоящего изобретения.
На ФИГ. 23 изображен примерный вариант структуры алгоблока, согласно одному из осуществлений настоящего изобретения.
На ФИГ. 24 изображен примерный вариант структуры операнда алгоблока, согласно одному из осуществлений настоящего изобретения.
На ФИГ. 25 изображен примерный вариант структуры операции и результата, согласно одному из осуществлений настоящего изобретения.
В частном случае осуществления настоящего изобретения структурированность данных операндов и результата может определяться:
- скаляром;
- вектором:
- матрицей;
- списком.
На ФИГ. 26 показан пример структурированности данных операндов и результата, определяемой списком, согласно одному из осуществлений настоящего изобретения.
В частном случае осуществления настоящего изобретения структурированность, определяемая списком, содержит:
1 Разделение по режиму задания:
1.1 задание константами;
1.2 задание ссылками на БД.
2 Разделение по организации данных в списках:
2.1 список скаляров (образует вектор - обрабатывается как вектор);
2.2 список векторов (образует матрицу - обрабатывается как матрица);
2.3 список списков (образует матрицу - обрабатывается как матрица).
В таблице ниже приведен пример использования элементов списка Sp(1…8)  в различных режимах (согласно ФИГ. 26):
Организация данных
Режим задания
1.1 Константы
1.2 Ссылки
2.1 Список скаляров (вектор)
Sp(1..8) – список, заданный константами  (максимум 8 элементов) – размер вектора
Sp(1)-ссылка на начало списка; Sp(2)-количество элементов списка (размер вектора)
2.2 Список векторов (матрица)
Sp(1..6) - список, заданный константами (максимум 6 элементов) – размер вектора; Sp(7) – количество векторов (размер матрицы); Sp(8) – смещение между векторами матрицы; Матрица 6XSp(7)
Sp(1)-ссылка на начало списка (элемент матрицы (1,1)); Sp(2)-количество элементов списка (размер вектора); Sp(3)-количество векторов (размер матрицы); Sp(4)-смещение между векторами матрицы; образуется матрица Sp(2)XSp(3)
2.3 Список списков (матрица)
Sp(1..4) - список, заданный константами (максимум 4 элемента) - размер вектора; Sp(5..8) – смещения между векторами матрицы, отсчитанные от 1-го вектора; Образуется матрица  4X5
Sp(1)-ссылка на начало списка (элемент матрицы (1,1)); Sp(2)-количество элементов списка (размер вектора); Sp(3)-количество векторов (размер матрицы); Sp(4)-ссылка на список смещений векторов матрицы, отсчитываемых от 1-го вектора матрицы (размер списка равен sp(3)-1); образуется матрица Sp(2)XSp(3)
Стоит отметить, что
1. Списки, заданные константами:
- имеют индивидуальные флаги отрицания;
- элементы списка, меньшие или равные нулю и не входящие в область нормальных номеров (за ними нет нормальных номеров) отбрасываются.
2. Списки, заданные ссылками:
- если элемент списка задан отрицательным числом, то считается, что он имеет отрицание - для выборки элемента используется абсолютное значение;
- никаких других проверок не производится - нули не отбрасываются.
3. Индивидуальное отрицание элемента списка и общее отрицание всего операнда объединяются по правилу «Исключительное ИЛИ», т.о. два отрицания отменяют отрицание.
Отрицание элементов осуществляется после чтения или перед записью по следующим правилам:
- для чисел производится умножение на -1;
- для логических элементов выполняется функция NOT;
- для символов:
- если код символа меньше 128, то к нему прибавляется 128;
- если код символа больше 127, то от него вычитается 128.
На ФИГ. 27 показан примерный вариант пользовательского интерфейса для взаимодействия с базами данных, согласно одному из осуществлений настоящего изобретения. В частном случае осуществления настоящего изобретения описываемый способ предоставляет возможность пользователю осуществлять просмотр и редактирование (расчетных) баз данных, который может включать, по крайней мере, два режима осуществления взаимодействия пользователя:
- инициализацию баз данных;
- просмотр и редактирование текущих значений.
В частном случае осуществления изобретения пользователь может осуществлять:
- просмотр баз данных;
- редактирование баз данных:
- редактирование отдельных элементов векторов;
- групповое присвоение одинаковых значений (для символьного вектора предусмотрен ввод как символа присвоения, так и его кода);
- изменение размерностей векторов (только в режиме инициализации) (используется кнопка «Установить»);
- определение элементов БД, используемых для организации дистанционного управления процессом исполнения программы («Отладчик»):
- поле «Команды» определяет элементы БД, используемые для передачи команд исполняющей системе (наличие команды определяется значением соответствующей переменной: = 0 – нет команды, = 1 – есть команда; после исполнения команды исполняющая система сбрасывает управляющую переменную в 0);
- поле «Параметры» определяет элементы БД, используемые как для передачи параметров в определенных командах, так и для приема результатов работы исполняющей системы; поле «Пуск» определяет два подряд идущих параметра: номер процедуры и алгоблока; поле «Стоп» определяет три подряд идущих параметра: номер цикла, процедуры и алгоблока; поле «Время» определяет три подряд идущих параметра в миллисекундах: такт системы, время исполнения ядра реального времени и время исполнения алгоблочной программы; поле «Циклы» определяет вектор счетчиков циклов (предварительно задается количество циклов);
- поле «Автозапуск» определяет режим запуска программы после загрузки:
- при включенном режиме «Автозапуск» программа начинает исполняться сразу после загрузки с возможной задержкой, указываемой в секундах;
- если режим «Автозапуск» отключен, то программа не исполняется после старта системы; запуск возможен только:
- или используя кнопки управления в БД (Rsprog) (только локальный запуск – начинает исполняться программа на данном вычислительном устройстве);
- или устанавливая значение «1» в соответствующей управляющей переменной БД («Пуск»), причем возможен дистанционный пуск программы при условии, что данная управляющая переменная включена в сетевую передачу;
- поле «Группы учета» позволяет установить способ обработки групп учета:
-перед исполнением программы;
-после исполнения программы;
-в теле самой программы с помощью алгоблока «Группы учета» (в этом случае возможно задание номеров обсчитываемых групп; в остальных случаях всегда обсчитываются все группы).
Дополнительные особенности осуществления пользователем просмотра и редактирования (расчетных) баз данных, включая, но не ограничиваясь, инициализацию баз данных, просмотр и редактирование текущих значений, представлены в приведенной ниже таблице:
Команда
Используемые параметры
Действия
Пуск
Пуск(Пр/Алг) – программа стартует с указанной процедуры и алгоблока(Пр и Алг не равны 0); Стоп(Цк/Пр/Алг) – программа останавливается по достижении указанной процедуры и алгоблока на заданном цикле(Цк, Пр и Алг не равны 0);
Запуск программы на исполнение
Стоп
-----
Останов исполнения программы; в параметрах Стоп(Цк/Пр/Алг) возвращаются номера цикла, процедуры и алгоблока, на которых произведен останов
Генерация
-----
Производится перезагрузка расчетных массивов и программы; если программа до этого исполнялась, производится запуск
Продолжить
----
Продолжение исполнения после останова
Сброс счетчиков
----
Обнуление счетчиков исполнения для всех процедур, входящих в циклы обхода
Алгоблок «+»
----
Пошаговое исполнение; в параметрах Стоп(Цк/Пр/Алг) возвращаются номера цикла, процедуры и алгоблока, на которых произведен останов
Цикл «+»
Цикл обхода (определяет номер процедуры, входящей в цикл обхода)
Исполнение на один цикл указанной процедуры; в параметрах Стоп(Цк/Пр/Алг) возвращаются номера цикла, процедуры и алгоблока, на которых произведен останов
Такт системы (задается в мсек.)
----
Изменение основного такта работы системы
В частном случае, исполнение команды вызывается установкой «1» в соответствующую переменную БД, как показано в приведенной таблице ниже:
Параметр
Значение
Пуск(Пр/Алг)
Определяют стартовую процедуру и алгоблок
Стоп(Цк/Пр/Алг)
При старте: определяют точку останова;При останове: возвращают точку останова
Цикл обхода
Для команды «Цикл «+» определяет номер процедуры, входящей в цикл обхода
Исполнение/Ошибка
Возвращает значение «1» при работающей программе и «0» при неработающей. Отрицательные значения означают ошибки:-1 – ошибка загрузки Progres.nsi;-2 – ошибка подключения к БД (MWBridge);-3..-8 – ошибка обработки файлов БД RS$RR,RS$LR,RS$SR,RS$IR,RS$IR2, RS$IR4 соответственно;-9 – недостаточно оперативной памяти для загрузки расчетных БД;-10 – недостаточно оперативной памяти для загрузки процедуры;-11 – Ошибка обработки файла процедур;-12 - Win-программа не может исполняться под DOS;-13 – ошибка распределения памяти под область предыдущих значений;-14 – отсутствует файл процедур;-15 – размер файла процедур не соответствует требуемому;-16 – разрушена внутренняя структура файла процедур;-17 – не заданы процедуры для обсчета;-18 – ошибка создания файла Procedur.prs;-19 – ошибка записи в файл Procedur.prs;-20 – ошибка контрольной суммы.
Последняя процедура, последний алгоблок
Возвращает номера процедуры и алгоблока, на которых завершено исполнение на текущем такте работы исполняющей системы
Цикл Resident
Возвращает текущее значение цикла: 0 – старт, 1 – исполнение, 2 – завершение
Цикл (вектор)
Возвращает текущие значения счетчиков циклов для процедур, входящих в цикл обхода (количество процедур определяется размерностью вектора, но не больше циклов обхода)
Время (S/R/U)
Возвращает время в мсек.: S – основной такт работы системы; R – такт работы Resident; U – такт работы исполняющей системы обработки алгоблоков
На ФИГ. 28 показан один из вариантов интерфейса пользователя для описания базы данных, согласно одному из осуществлений настоящего изобретения. В частном случае осуществления изобретения пользователь может осуществлять просмотр и редактирования описаний сигналов, а также осуществлять анализ использования сигналов.
В частном случае, пользователь может осуществлять просмотр и редактирование имени сигнала, описания сигнала, инициализационного значения, текущего значения (в частности, при загруженной системе исполнения алгоблоков).
Так, в частном случае, пользователь при упомянутом редактировании может использовать:
- функцию Добавить - добавляется один новый сигнал в конец БД (при загруженной исполняющей части производится перезагрузка БД);
- функцию Коррекция - выполняется переход к формату коррекции БД;
- операции с буфером обмена (буфер обмена в дальнейшем может использоваться в формате коррекции):
- запись в буфер обмена (в начало, в конец, с обнулением предыдущего содержимого и т.д.);
- очистка буфера (полная очистка, очистка по блокам и т.д.);
- назначение номеров сигналов для записи в буфер посредством манипулятора "мышь" в области номера сигнала (посредством левой кнопки манипулятора "мышь" пользователем может быть определено начало области записей, посредством левой кнопки манипулятора "мышь" пользователем может быть определен конец области записей для копирования в буфер обмена).
Стоит также отметить, что в настоящем изобретении осуществляется анализ использования элементов, по крайней мере, одной из баз данных. Такой анализ может быть осуществлен автоматически. Режим анализа может быть установлен (осуществлен, определен, выставлен и т.д.) пользователем, по крайней мере, выбором из следующих режимов:
- только присвоение;
- только использование;
- присвоение и использование.
Режим Использование позволяет определить те места в программе (номер процедуры, алгоблока и область в алгоблоке), где данный элемент используется, или как данное, или как флаг, или как ссылочный массив.
Режим Присвоение позволяет определить те места в программе (номер процедуры, алгоблока и область в алгоблоке), где данный элемент присваивается, т.е. меняет значение.
В обоих случаях использование и присвоение может осуществляться посредством ссылки, т.е. зависеть от текущего значения других элементов.
В частном случае анализ ссылочной информации осуществляется (только) при загруженной исполняющей системе.
В частном случае осуществления настоящего изобретения может осуществляться проверка исполнения по условиям результата.
Так, например, проверка необходимости исполнения алгоблока может осуществляться (непосредственно) на этапе расчета. Для этого могут быть использованы условия результата.
Для включения проверки пользователь может:
- взвести флаги:
- использования условий результата;
- проверки по условиям результата;
- определить значение для проверки (например, Истина, Ложь, 0  13, как описано в рамках настоящего изобретения);
- установить результат проверки по умолчанию (Да, Нет), используемый при недостоверных данных или неверной адресации условий проверки.
В частном случае, заданная (определенная, установленная и т.д.) таким образом проверка позволяет выполнять операции индивидуально. Например, при операции сложения векторов с записью в вектор результата можно определить вектор условий результата, разрешающий исполнение сложения только для избранных элементов векторов (для тех элементов векторов результата, для которых соответствующие элементы вектора условий результата имеют значение, равное проверяемому).
Проверка по условиям результата может быть применима, по крайней мере, для одной из следующих операций:
- общие операции:
- копирование;
- (все) арифметические операции (кроме прогрессии, решения системы линейных уравнений, а также определения коэффициентов полинома);
- (все) логические операции, кроме апериодического фильтра и отклонения;
- операции динамики:
- ограничение;
- ШИМ;
- таймеры:
- циклический;
- астрономический.
В частном варианте реализации настоящего изобретения пользователем или по крайней мере, одной частью системы, реализующей описываемый в настоящем изобретении способ, может осуществляться операция выборки операндов.
Операция выборки операндов используется для фильтрации операндов по определенным критериям. Операнды, не прошедшие выборку, не участвуют в операции. Упомянутая выборка может быть организована по следующим критериям:
- по номеру набора;
- по статусу параметра;
- по значению параметра.
Выборка по номеру набора может осуществляться для БД (MWBridge). Параметр считается удовлетворяющим данному критерию выборки, если номер набора параметра равен заданному.
Выборка по статусу может осуществляться для БД (MWBridge) и вектора RR. Параметр считается удовлетворяющим данному критерию выборки, если текущий статус параметра входит в группу статусов, разрешенную для данной выборки. Может осуществляться следующая организация выборки по статусу:
- Норма (статус = 0);
- Достоверно (0,3,4);
- Недостоверно (1,2,5,6,7);
- За верхней уставкой (3);
- За нижней уставкой (4);
- За верхней или нижней уставкой (3,4);
- Не за верхней уставкой (0,4);
- Не за нижней уставкой (0,3);
- Прямое указание значения статуса в диапазоне 0-7.
Также для организации выборки может быть использован статусный байт, в котором побитно (6 битов анализа уставок, бит достоверности и бит квитирования) указывается:
- Использование данного бита (установка бита в «1»);
- Использование данного бита (сброс бита в «0»);
- Отказ от анализа данного бита.
В частном случае считается, что выборка пройдена, если все биты, для которых определена проверка, имеют указанные значения.
Выборка по значению может осуществляться для всех БД. Параметр считается удовлетворяющим данному критерию выборки, если текущее значение параметра удовлетворяет заданному условию проверки. Возможны следующие проверки значения:
- равно константе;
- неравно константе;
- больше константы;
- меньше константы;
- находится в диапазоне <константа1 - константа2>;
- находится вне диапазона <константа1 - константа2>.
Результаты выборки по указанным выше критериям могут быть объединены в единый результат логическими операциями «И» и «ИЛИ», что позволяет составлять сложные логические конструкции для выборки операндов.
Выборка может осуществляться для следующих операций:
- общие:
- копирование;
- арифметические:
- все бинарные операции;
- все унарные операции;
- взвешенное сложение и умножение, а также средневзвешенное;
- попадание в диапазон;
- прогрессия;
- логические:
- отрицание (NOT);
- И, ИЛИ, Исключительное ИЛИ, НЕ И, НЕ ИЛИ, НЕ Исключительное ИЛИ, Следование, НЕ Следование,
- сравнение с уставками;
- сравнение значений;
- попадание в диапазон;
- динамика:
- идентификация модели.
Включение выборки производится следующим образом:
- установить общий флаг включения выборки;
- включить необходимые выборки (по набору, статусу и значению);
включение производится нажатием "мыши" в область наименования
выборки;
- для каждой включенной выборки установить требуемые значения для проверки;
- определить логическую связку выборок (если используется более одной выборки).
Настоящее изобретение использует графический (визуальный) язык программирования интерпретирующего типа (ГЯПИ).
Стоит отметить, что ГЯПИ является процедурным (с точки зрения последовательности исполнения).
Также, стоит отметить, что ГЯПИ является цифровой моделью аналоговой ЭВМ (с точки зрения обработки данных).
Также, в ГЯПИ отсутствует претрансляция в текстовый язык и дальнейшая компиляция.
Описываемая в рамках настоящего изобретения программа состоит из визуальной связи алгоблоков и хранится (в ОЗУ, на накопителе на жестких магнитных дисках и т.д.):
- в виде набора алгоблоков;
- связей между алгоблоками и начальными данными для алгоблоков, которые (алгоблоки, связи, начальные данные), в свою очередь, хранятся в виде связанных таблиц.
Стоит также отметить, что исполняющая среда, в частном случае, описываемая система (для различных программных и аппаратных платформ), является средой реального времени (которая обеспечивает детерминированность времени исполнения одного цикла программы) является интерпретатором, выполняющим создаваемую/созданную программу.
Также, создаваемая пользователем программа в среде исполнения выполняется непрерывно в бесконечном цикле, остановка программы является временным отладочным действием.
Стоит отметить, что в среде исполнения (интерпретаторе) отсутствует синтаксический анализ, причем синтаксический анализ выполняется интерфейсом программирования путем представления к использованию только допустимых элементов языка программирования, что исключает синтаксические ошибки пользователем и не допускает возможности создания других бесконечных или имеющих неопределенную длину циклов, кроме одного общего цикла программы.
Также, преобразование форматов данных (целое-вещественное, вещественное – целое и пр.) происходит автоматически по предустановленным правилам;
Способ и система позволяют как программировать управляющие контроллеры, так и создавать программы/программное обеспечение общего назначения (программы для операционных систем, операционные системы и т.д.).
В заключение следует отметить, что приведенные в описании сведения являются примерами, которые не ограничивают объем настоящего изобретения, определенного формулой. Специалисту в данной области становится понятным, что могут существовать и другие варианты осуществления настоящего изобретения, согласующиеся с сущностью и объемом настоящего изобретения.