Codesys (824048), страница 59

Файл №824048 Codesys (Руководство пользователя по программированию ПЛК в Codesys) 59 страницаCodesys (824048) страница 592021-01-15СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 59)

Для обращения через указатель необходимо добавить оператор "^" (content)после его имени.Обратите внимание: Указатели инкрементируются побайтно! Для увеличения указателя, как это принято в Cкомпиляторах, используйте инструкцию p=p+SIZEOF(p^);.Пример:pt:POINTER TO INT;var_int1:INT := 5;var_int2:INT;pt := ADR(var_int1);var_int2 := pt^;(* var_int2 теперь равна 5 *)Функция CheckPointer:Данная функция позволяет контролировать обращение к допустимой области памяти через указатели.Если определена функция CheckPointer, то она будет автоматически вызываться при любом обращениичерез указатель. Функция должна быть определена в проекте (непосредственно или в библиотеке). Ееимя (CheckPointer) изменять нельзя. Функция имеет следующие параметры:Для систем с 32-х битными указателями:FUNCTION CheckPointer : DWORDVAR_INPUTdwAddress : DWORD;iSize : INT;bWrite: BOOL;END_VARДля систем с 16-и битными указателями:FUNCTION CheckPointer : WORDVAR_INPUTdwAddress : WORD;iSize : INT;bWrite: BOOL;END_VARCoDeSys V2.310-39Приложение С: Типы данных CoDeSysФункция возвращает адрес, который будет использоваться как указатель.

Если все хорошо то, это будет входной параметр – dwAddress.ПеречислениеПеречисление - это определяемый пользователем тип данных, задающий несколько строковых псевдонимов для числовых констант. Перечисление доступно в любой части проекта, даже при локальномего объявлении внутри POU. Поэтому наиболее разумно создавать все перечисления на вкладке типыданных (Data types) «Организатора Объектов»(Object Organizer). Объявление должно начинатьсяс ключевого слова TYPE и заканчиваться строкой END_TYPE.Синтаксис:TYPE <Имя_перечисления>:(<Элемент_0> ,< Элемент _1>, ...< Элемент _n>);END_TYPEПеременная типа <Имя_перечисления> может принимать только перечисленные значения.

При инициализации переменная получает первое из списка значение. Если числовые значения элементов перечисления не указаны явно, им присваиваются последовательно возрастающие числа, начиная с 0.Фактически элемент перечисления - это число типа INT и работать с ними можно точно также. Можнонапрямую присвоить число переменной типа перечисление.Пример:TYPE TRAFFIC_SIGNAL: (Red, Yellow, Green:=10);(*Каждому цветусоответствует свое значение, для red - это 0, для yellow - 1 и для green - 10 *)END_TYPETRAFFIC_SIGNAL1 : TRAFFIC_SIGNAL;TRAFFIC_SIGNAL1:=0;(*Переменная получила значение red*)FOR i:= Red TO Green DOi := i + 1;END_FORЭлемент, уже включенный в перечисление, нельзя повторно включать в другое перечисление.Пример:TRAFFIC_SIGNAL: (red, yellow, green);COLOR: (blue, white, red);Ошибка: попытка повторного использования элемента TRAFFIC_SIGNAL red в COLOR.СтруктурыСтруктуры создаются на вкладке типы данных (Data types) «Организатора Объектов»(Object Organizer).

Объявление должно начинаться с ключевых слов TYPE и STRUCT и заканчиваться строкамиEND_STRUCT и END_TYPE.Синтаксис:TYPE <Имя _структуры>:STRUCT<Объявление переменной 1>..CoDeSys V2.310-40Приложение С: Типы данных CoDeSys<Объявление переменной n>END_STRUCTEND_TYPE<Имя _структуры> образует новый тип данных, который может быть использован в любой части проекта наряду с базовыми типами.Вложенные структуры допускаются. Единственное ограничение заключается в запрете размещенияэлементов структуры по прямым адресам (AT объявления недопустимы!).Пример объявления структуры по имени Polygonline:TYPE Polygonline:STRUCTStart:ARRAY [1..2] OF INT;Point1:ARRAY [1..2] OF INT;Point2:ARRAY [1..2] OF INT;Point3:ARRAY [1..2] OF INT;Point4:ARRAY [1..2] OF INT;End:ARRAY [1..2] OF INT;END_STRUCTEND_TYPEПример инициализации структуры:Poly_1:polygonline := ( Start:=3,3, Point1 =5,2, Point2:=7,3, Point3:=8,5,Point4:=5,7, End := 3,5);Для доступа к элементам структуры используется следующий синтаксис:<Имя_структуры>.<Имя_компонента>Например, структура "Week" содержит компонент "Monday", обращение к которому будет выглядетьтак:Week.MondayПсевдонимы типовПсевдонимы типов нужны для создания альтернативных пользовательских наименований типов данных.

Это удобно при работе с большим числом однотипных констант, переменных и функциональныхблоков.Псевдонимы типов определены на вкладке типы данных (Data types) «Организатора Объектов»(Object Organizer). Объявление должно начинаться с ключевого слова TYPE и заканчиваться строкойEND_TYPE.Синтаксис:TYPE <Имя псевдонима>: <Исходное имя>;END_TYPEПример:TYPE message: STRING[50];END_TYPE;CoDeSys V2.310-41Приложение С: Типы данных CoDeSysОграничение диапазона значенийОграничение диапазона позволяет объявить переменную, значения которой ограничены в определенных пределах. Существует возможность создать в проекте новые типы данных с ограниченным диапазоном значений либо задать диапазон непосредственно при объявлении переменной.Создание нового типа выглядит так:TYPE < Имя > : < Целый тип > (<от>..<до>) END_TYPE;< Имя> любой допустимый МЭК идентификатор,<Целый тип> один из типов SINT, USINT, INT, UINT, DINT, UDINT, BYTE, WORD,DWORD (LINT, ULINT, LWORD).< от> константа, определяющая начало диапазона значений включительно.< до> константа, определяющая конец диапазона значений включительно.Пример:TYPESubInt : INT (-4095..4095);END_TYPEОграничение диапазона при объявлении переменной:VARi : INT (-4095..4095);ui : UINT (0..10000);END_VARПри попытке присвоить переменной с ограниченным диапазоном константы, не попадающей в заданный диапазон (например i := 5000;), CoDeSys даст сообщение об ошибке.Для контроля значений «ограниченных» переменных в процессе исполнения применяются функцииCheckRangeSigned или CheckRangeUnsigned.

Они позволяют обрабатывать ошибки произвольнымобразом. Например, ограничить присваиваемое значение или сформировать флаги ошибки. Перваяфункция работает для переменных со знаком, вторая для переменных без знака (unsigned). Изменятьидентификаторы этих функций нельзя.Пример:Здесь применяется функция CheckRangeSigned, контролирующая переменные со знаком (как, например, объявленная выше i). Функция «обрезает» присваиваемые значения по границам диапазона.FUNCTION CheckRangeSigned : DINTVAR_INPUTvalue, lower, upper: DINT;END_VARIF (value < lower) THENCheckRangeSigned := lower;ELSIF(value > upper) THENCoDeSys V2.310-42Приложение С: Типы данных CoDeSysCheckRangeSigned := upper;ELSECheckRangeSigned := value;END_IFФункция вызывается автоматически при соответствующих операциях присваивания.

Она получает трипараметра: присваиваемое значение (value) и обе границы диапазона (lower, upper). Фактическиприсваивается возвращаемое CheckRangeSigned значение.Например, при присваивании i:=10*y происходит неявный вызов:i := CheckRangeSigned(10*y, -4095, 4095);В результате, даже если y > 1000, i не получит значение более 4095.Аналогично объявляется и функция CheckRangeUnsigned:FUNCTION CheckRangeUnsigned : UDINTVAR_INPUTvalue, lower, upper: UDINT;END_VARЗамечание: Если функции CheckRangeSigned или CheckRangeUnsigned не включены в проект, ограничениеграниц диапазонов во время исполнения работать не будет.Внимание: Если функции «обрезают» значения, как в вышеописанном примере существует опасность получитьбесконечный цикл.

Это может случиться, если условие окончания итераций цикла не достигается изза искусственного ограничения значений переменной!Пример. Переменная ui не превысит 10000, и цикл FOR ни когда не закончится:VARui : UINT (0..10000);END_VARFOR ui:=0 TO 10000 DO...END_FORВнимание: Функции CheckRange…, содержащащиеся в библиотеке Check.Lib, представляют собой пример реализации. Прежде чем использовать эту библиотеку, убедитесь, что данные функции работает так, какнужно в вашем случае, либо создайте собственные функции непосредственно в вашем проекте.CoDeSys V2.310-43Приложение D: Библиотеки CoDeSysПриложение D: Библиотеки CoDeSys10.16 Стандартная библиотека Standard.lib10.16.1 Строковые функцииВнимание: В многозадачных проектах необходимо сосредоточить всю работу со строками в одной задаче.

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6294
Авторов
на СтудИзбе
314
Средний доход
с одного платного файла
Обучение Подробнее