Читаем Табличный ПЛК.Табличное программирование контроллеров полностью

Если табличная программа становится слишком большой и состоит из программных блоков, слабо связанных между собой, то такую таблицу логично было бы разделить на несколько таблиц, каждая из которых может размещаться на отдельной странице. При многостраничной организации программы возможен параллельный пересчет таблиц на отдельных страницах. Так как пересчет таблицы выполняется циклически, то выходные данные от одной страницы по мере готовности могут участвовать в расчетах на другой странице. Для каждой страницы можно выделить некоторое количество внутренних переменных, которые не являются ни входными, ни выходными. По сути, это глобальные переменные, и они будут доступны из любого места программы. Поэтому для каждой страницы самостоятельно придется определять необходимое количество переменных и следить за их использованием только в пределах той страницы, для которой они выделены. Для таблиц на отдельных страницах можно организовать набор локальных переменных. Такие переменные будут предназначены для хранения данных на конкретной странице и не будут доступны с других страниц.

Чтобы не потерять прозрачность алгоритма программы, нужно ввести некоторые правила. Для предотвращения перезаписывания выходных переменных в разных местах введено ограничение: значение выходной переменной может быть записано только в одном месте. Программа проверки таблицы выдаст соответствующую ошибку при нахождении двух столбцов с одинаковыми адресами выходных переменных, независимо от того, находятся они на одной странице или на разных. Указатели на результаты операций в строках должны использоваться только в пределах одной страницы. Для передачи вычисленных значений с одной страницы на другую необходимо использовать глобальные переменные.

Так как мы рассматриваем табличные программы в плане управления оборудованием, то для того, чтобы уменьшить количество передаваемых между страницами данных, нужно на отдельной странице производить максимально полную обработку входных переменных от какого-либо механизма или процесса и передавать только окончательные результаты. Несмотря на то, что таблицы на страницах равнозначны и могут пересчитываться параллельно, стоит использовать главную страницу для сбора результатов и выдачи разрешений. Введение подобной иерархии упростит работу с программой в дальнейшем. При таком подходе любая неисправность или нештатное состояние отразится на главной странице, где будет указана страница, являющаяся источником данных о сбое.

4.9. Модули-прототипы и их клоны

Одинаковые или почти одинаковые часто повторяющиеся блоки программ и наборы блоков можно сохранять как отдельные модули и использовать в дальнейшем. Для того чтобы использовать в программе проверенные и отлаженные блоки, нужно сначала сохранить табличную программу на странице как модуль-прототип, затем загрузить прототип на отдельную страницу и подключить его, изменив при необходимости адреса переменных. После сохранения модуля-клона в файл с новым именем данная копия становится самостоятельной и при необходимости может быть изменена. Например, для управления грузоподъемной техникой используются два джойстика с двумя степенями свободы каждый. Для обработки сигналов с джойстиков в таком случае потребуется четыре одинаковых табличных модуля, которые можно вынести в четыре дополнительные таблицы на отдельных страницах. Так как сигналы от джойстиков будут иметь свои, отличные друг от друга адреса, а выходные переменные будут управлять разными преобразователями частоты, то программы в таблицах будут независимы друг от друга.

Большое количество переменных, использующихся в разных местах программного модуля, усложнит подключение таких модулей с помощью дополнительных страниц. Чтобы упростить подключение модулей на отдельных страницах программы, в верхних строках таблицы модуля пропишем переменные с адресами, а в теле модуля будем пользоваться указателями на строки с этими переменными. Для примера переделаем программу обработки сигнала от аналогового джойстика, чтобы глобальные переменные были только в верхних строках таблицы, а внутри программного алгоритма переменных не было.

Программа обработки сигнала с аналогового джойстика, адаптированная для сохранения в качестве модуля-прототипа, показана на рис. 65. В первых восьми строках с помощью переменных определяются входные значения, необходимые для вычисления скорости и сигналов пуска влево и вправо. Далее идут четыре программных блока, аналогичные представленным в программе на рис. 63. Только теперь внутри этих блоков вместо адресов переменных введены указатели на значения переменных, прописанных в первых восьми строках.



Рис. 65. Модульный вариант программы управления частотным приводом с помощью аналогового джойстика


Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
C++
C++

С++ – это универсальный язык программирования, задуманный так, чтобы сделать программирование более приятным для серьезного программиста. За исключением второстепенных деталей С++ является надмножеством языка программирования C. Помимо возможностей, которые дает C, С++ предоставляет гибкие и эффективные средства определения новых типов. Используя определения новых типов, точно отвечающих концепциям приложения, программист может разделять разрабатываемую программу на легко поддающиеся контролю части. Такой метод построения программ часто называют абстракцией данных. Информация о типах содержится в некоторых объектах типов, определенных пользователем. Такие объекты просты и надежны в использовании в тех ситуациях, когда их тип нельзя установить на стадии компиляции. Программирование с применением таких объектов часто называют объектно-ориентированным. При правильном использовании этот метод дает более короткие, проще понимаемые и легче контролируемые программы. Ключевым понятием С++ является класс. Класс – это тип, определяемый пользователем. Классы обеспечивают сокрытие данных, гарантированную инициализацию данных, неявное преобразование типов для типов, определенных пользователем, динамическое задание типа, контролируемое пользователем управление памятью и механизмы перегрузки операций. С++ предоставляет гораздо лучшие, чем в C, средства выражения модульности программы и проверки типов. В языке есть также усовершенствования, не связанные непосредственно с классами, включающие в себя символические константы, inline-подстановку функций, параметры функции по умолчанию, перегруженные имена функций, операции управления свободной памятью и ссылочный тип. В С++ сохранены возможности языка C по работе с основными объектами аппаратного обеспечения (биты, байты, слова, адреса и т.п.). Это позволяет весьма эффективно реализовывать типы, определяемые пользователем. С++ и его стандартные библиотеки спроектированы так, чтобы обеспечивать переносимость. Имеющаяся на текущий момент реализация языка будет идти в большинстве систем, поддерживающих C. Из С++ программ можно использовать C библиотеки, и с С++ можно использовать большую часть инструментальных средств, поддерживающих программирование на C. Эта книга предназначена главным образом для того, чтобы помочь серьезным программистам изучить язык и применять его в нетривиальных проектах. В ней дано полное описание С++, много примеров и еще больше фрагментов программ.

Бьёрн Страуструп , Бьярн Страустрап , Мюррей Хилл

Программирование, программы, базы данных / Программирование / Книги по IT
Разработка ядра Linux
Разработка ядра Linux

В книге детально рассмотрены основные подсистемы и функции ядер Linux серии 2.6, включая особенности построения, реализации и соответствующие программны интерфейсы. Рассмотренные вопросы включают: планирование выполнения процессов, управление временем и таймеры ядра, интерфейс системных вызовов, особенности адресации и управления памятью, страничный кэш, подсистему VFS, механизмы синхронизации, проблемы переносимости и особенности отладки. Автор книги является разработчиком основных подсистем ядра Linux. Ядро рассматривается как с теоретической, так и с прикладной точек зрения, что может привлечь читателей различными интересами и потребностями.Книга может быть рекомендована как начинающим, так и опытным разработчикам программного обеспечения, а также в качестве дополнительных учебных материалов.

Роберт Лав

Программирование, программы, базы данных / Программирование / Книги по IT