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

Рис. 46. Пример аналогового мультиплексора


Так как программа пересчета таблицы обрабатывает строки сверху вниз, то с помощью указателя вычисленный результат по строке может быть присвоен любому операнду в строках ниже. Указатель — это номер строки, результат которой может быть использован в битовых и аналоговых операциях других строк. На рис. 47 приведены операции с указателем. Номер одной строки, находящейся выше, результат операции которой уже посчитан, обозначен как «p».


Рис. 47. Операции с указателем


Тип получаемого операнда будет зависеть от типа результата, на который указывает указатель. Если указатель равен номеру строки с аналоговым результатом, то будет подставлено аналоговое значение. Если результат строки, на которую ссылается указатель, битовый, то будет подставлено битовое значение. Пример использования указателя для аналогового или битового значений показан на рис. 48, где A1 — аналоговый результат входной операции в строке с номером, равным p, а b1 — битовый результат входной операции в строке с номером, равным p.


Рис. 48. Пример использования указателя


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

4. Примеры табличного программирования

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

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

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

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

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

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