Вообще информация, представленная в виде таблицы, легко воспринимается и анализируется человеком. Горизонтальные и вертикальные связи не затрудняют восприятие, а, наоборот, облегчают его. Достаточно беглого взгляда на товарный ценник, составленный в виде таблицы, чтобы понять, сколько представлено товарных позиций и какой у них диапазон цен. Мы непрерывно тренируемся в скоростном восприятии информации, представленной в виде таблиц. Календари, расписания, товарные чеки, окно с файлами на экране компьютера — не что иное, как таблицы, отформатированные особым образом. Даже арифметические вычисления в столбик в тетрадке в клеточку прививают нам способность быстрого анализа табличных данных. Остается вопрос, как приспособить эту замечательную способность человека к решению рассматриваемой задачи — программированию контроллера, управляющего оборудованием.
Для решения большинства проблем, связанных с отображением внутреннего состояния программы, которая управляет техническим объектом, предлагается выводить состояние программы в виде специальной таблицы на экран монитора или сенсорного дисплея удобного размера. Таблица с внутренним состоянием контроллера может находиться в одной из закладок монитора, на который в обычном режиме выводится информация о контролируемом процессе или другие необходимые данные. Специалисту, программирующему контроллер, не нужно создавать таблицу и организовывать отображение данных, таблица и является программой. Кроме данных в ячейках таблицы, нет никаких дополнительных блоков или файлов. Она же, по сути, и графический интерфейс между машиной и человеком. В ней мы видим состояние всех переменных. От программиста скрыт только код, пересчитывающий данные в ячейках. И самое главное, таблица является средством разработки программы контроллера. Отпадает необходимость в сложной и дорогостоящей среде для написания и отладки программ, загружаемых в контроллеры.
Так как отсутствует многоуровневая система меню для изменения параметров и на экран выводится одна-единственная таблица, в которой отображается весь процесс, то многократно сокращается время обучения программированию контроллеров. Может сложиться впечатление, что такая таблица будет иметь тысячи строк и столбцов, но это на самом деле далеко не так. Например, программа управления портальным краном, имеющим две лебедки, стреловой, поворотный механизм и систему передвижения, содержит 180 строк и 30 столбцов. Простые программы управления небольшими объектами часто не нуждаются в прокрутке строк или столбцов, помещаясь на экране целиком.
Для больших программ или программ, имеющих довольно большие повторяющиеся блоки, можно организовать многостраничную структуру, состоящую из нескольких таблиц на отдельных страницах, причем пересчет таблиц нужно производить параллельно. Так как параллельная обработка страниц выполняется циклически, то она не приведет к появлению ошибок, связанных с синхронизацией. Выходные данные от одной страницы по мере готовности могут участвовать в расчетах на другой странице. Если какие-либо данные с параллельной страницы не были готовы в этом цикле пересчета таблицы, то они могут быть готовы в одном из следующих. Программы на отдельных страницах можно рассматривать как программы, работающие в отдельных контроллерах. Так как подобные виртуальные контроллеры используют одну память, то практически нет ограничения скорости передачи данных между ними. Но чтобы не потерять прозрачность общего алгоритма, при многостраничной организации программы следует минимизировать связи между страницами.
1.2. Основы табличного программирования
Для начала рассмотрим таблицу, показанную на рис. 1. В левый столбец таблицы вводятся логические состояния входов контроллера, а в ячейках верхнего заголовка рассчитываются выходные значения. Состояние каждого выхода будем определять как логическое И по столбцу под ним.
Рис. 1. Пример таблицы
Чтобы таблица стала программой, внесем в нее некоторые изменения. Ячейки в теле таблицы, участвующие в расчете выходных значений, будем называть активными ячейками. Для обозначения активной ячейки используется символ «&», который в электронике и программировании обычно является символом битовой операции «логическое И». Чтобы увеличить наглядность таблицы, активные ячейки, состояние которых равно нолю, выделим синим цветом, а ячейки, состояние которых равно единице, — зеленым цветом. Таким же образом обозначим результат логического И по столбцу. Простая табличная программа представлена на рис. 2.