Tag Archives: библиотека в CoDeSys

Библиотека SysLibShm.lib

Данная библиотека включает функции размещения и доступа к разделяемой памяти процессов (Shared-Memory, сокращенно ShM) по физическим адресам.

Если данная функциональность поддержана в целевой системе, то функции данной библиотеки могут быть использованы для открытия, закрытия, чтения и записи разделяемой памяти. Операции чтения и записи используют дескриптор, получаемый при открытии ShM. Выполнение синхронное.

  • SysShmOpen
  • SysShmClose
  • SysShmRead
  • SysShmWrite

SysShmOpen

Функция типа DWORD, открывает разделяемую память.

Возвращает дескриптор ShM, который можно применять как указатель. Дескриптор используется другими функциями данной библиотеки.

Переменная Тип данных Описание

stName                                STRING         Имя Shared Memory, может быть произвольным

dwPhysicalAddress       DWORD        Либо:

— необходимый значимый физический адрес ShM;

— 0, для произвольной области ShM

pdwSize                            DWORD          Указатель на размер области ShM

— если ShM уже существует, то здесь возвращается ее текущий размер.

— иначе создается ShM заданного размера. Задание здесь «0»

приведет к ошибке создания. Данную функцию можно

применить для проверки существования ShM.

SysShmClose

Функция типа BOOL закрывает ShM, которая идентифицируется соответствующим дескриптором. Возвращает TRUE при успешном завершении, иначе FALSE.

Переменная Тип данных Описание

hShm                               DWORD                       Дескриптор ShM (См. SysShmOpen)

SysShmRead

Функция типа DWORD, читает указанное число байт из разделяемой памяти, начиная с указанной позиции. Возвращает число считанных байтов.

Переменная Тип данных Описание

hShm                                            DWORD                     Дескриптор ShM (См. SysShmOpen)

dwOffset                                      DWORD                    Смещение от начала области данных

pData                                           DWORD                      Адрес буфера данных для чтения

dwSize                                         DWORD                                      Число байт

SysShmWrite

Функция типа DWORD, записывает указанное число байт в разделяемую память, начиная с указанной позиции. Возвращает число записанных байтов.

Переменная Тип данных Описание

hShm                                                   DWORD                                   Дескриптор ShM

dwOffset                                             DWORD                 Смещение от начала области данных

pData                                                  DWORD                     Адрес буфера данных для записи

dwSize                                                DWORD                                              Число байт

 

Библиотека SysLibDir.lib

Данная библиотека позволяет работать с директориями файловой системы, если это поддержано в

системе исполнения. Выполнение функций библиотеки синхронное.

Библиотека содержит следующие функции:

  • SysDirCreate
  • SysDirOpen
  • SysDirRead
  • SysDirRemove
  • SysDirRename

SysDirCreate

Функция типа BOOL, создает новую директорию. Функция возвращает TRUE, если директория успешно создана, иначе FALSE.

SysDirOpen

Функция типа DWORD, открывает указанную директорию. Она возвращает дескриптор, типа DWORD, который можно использовать для чтения состава директории (файлы, поддиректории) функцией SysDirRead.

SysDirRead

Функция типа UDINT, используется для чтения списка элементов открытой функцией SysDirOpen директории.

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

Входныепеременные Тип данных Описание
hDir DWORD Дескриптор директории
stDirEntry STRING Имя элемента директории (файл или директория), не более 80символов.
pDirInfo POINTER TODIRECTORY_INFO Указатель на структуру DIRECTORY_INFO, которая будетзаполнена информацией об элементе. Можно задать нулевой

указатель (0) если данная информация не требуется.

SysDirRemove

Функция типа BOOL, удаляет указанную директорию. Возвращает TRUE при успешном удалении директории, иначе FALSE.

SysDirRename

Функция типа BOOL, переименовывает указанную директорию. Возвращает TRUE при успешном переименовании директории, иначе FALSE.

Структура DIRECTORY_INFO

Элементы данной структуры служат для представления информации о файлах (директориях). Структура используется в функции SysDirRead.

Элементы структуры:

Структура DIRFILETIME

Элементы данной структуры служат для представления времени и даты создания, доступа и последнего изменения файла (директории). Используется в структуре DIRECTORY_INFO.

Элементы структуры:

Библиотека SysLibCom.lib

Данная библиотека поддерживает работу с последовательным портом. Реализуется в системе исполнения (опционально). Библиотека содержит следующие функции (выполнение синхронное):

  • SysComOpen
  • SysComSetSettings
  • SysComSetSettingsEx
  • SysComClose
  • SysComRead
  • SysComWrite
  • SysComGetVersion2300

SysComOpen

Данная функция типа DWORD открывает последовательный порт. Она возвращает дескриптор порта, который используется при вызове других функций библиотеки.В случае ошибки,возвращается 0xFFFFFFFF.

Перечисление PORTS:

TYPE PORTS : (COM1:=1, COM2, COM3, COM4, COM5, COM6, COM7, COM8);

END_TYPE

SysComSetSettings

Данная функция типа BOOL, устанавливает скорость, число стоповых бит, контроль паритета, таймаут, размер буфера и период опроса для последовательного порта. Требуемые параметры передаются посредством указателя на структуру COMSETTINGS. Возвращает TRUE при успешной установке параметров, иначе FALSE.

Элементы структуры COMSETTINGS, определены следующим образом:

Port:PORTS; Порт (См. PORTS).

dwBaudRate:DWORD; Скорость: 4800, 9600, 19200, 38400, 57600, 115200

byStopBits:BYTE; 0 = один стоп бит, 1=полтора, 2=два

byParity:BYTE; 0 = нет бита контроля, 1 = нечетность, 2 = четность

dwTimeout:DWORD; Таймаут интерфейса в мс, по умолчанию 0

dwBufferSize:DWORD; Размер встроенного буфера, по умолчанию 0

dwScan:DWORD; Время полинга последовательного интерфейса; должно быть 0

Перечисление PORTS:

TYPE PORTS : (COM1:=1, COM2, COM3, COM4, COM5, COM6, COM7, COM8);

END_TYPE

SysComSetSettingsEx

Данная функция типа BOOL, применяется для установки расширенных параметров порта. В дополнение к параметрам, определяемым SysComOpen, она задает управление потоком и размер символов. Требуемые параметры передаются посредством указателя на структуру

COMSETTINGSEX.

Возвращает TRUE при успешной установке параметров, иначе FALSE. В зависимости от аппаратной реализации, не всегда возможно многократно менять параметры открытого порта. В этом случае, закройте его и откройте заново.

Элементы структуры COMSETTINGSEX определены следующим образом:

Size:INT; Размер структуры в байтах. Используйте sizeof() для заполнения этого поля. Необходимо для совместимости с пред. версиями.

Port:PORTS; Порт (См. PORTS).

dwBaudRate:DWORD; Скорость: 4800, 9600, 19200, 38400, 57600, 115200

byStopBits:BYTE; 0 = один стоп бит, 1=полтора, 2=два

byParity:BYTE; 0 = нет бита контроля, 1 = нечетность, 2 = четность

dwTimeout:DWORD; Таймаут интерфейса в мс, по умолчанию 0

dwBufferSize:DWORD; Размер встроенного буфера, по умолчанию 0

dwScan:DWORD; Время полинга последовательного интерфейса; должно быть 0, если в документации изготовителя аппаратуры нет иных указаний.

cByteSize : BYTE; 4…8: размер символа в битах

fOutxCtsFlow : BOOL; TRUE означает контроль потока передачи по сигналу CTS.

fDtrControl : BYTE; 0: DTR всегда 0 для открытого порта.

1: DTR

2: Управление по DTR

fDsrSensitivity : BOOL; При TRUE запрещен прием при отсутствии сигнала DSR.

fRtsControl : BYTE; 0: RTS всегда 0 для открытого порта.

1: RTS всегда 1 для открытого порта.

2: драйвер держит RTS пока буфер приемника заполнен менее чем на половину. Драйвер снимает RTS, если буфер заполнен более чем на три четверти.

3: Управление по RTS: Драйвер устанавливает RTS на время передачи. После передачи всех данных из буфера, RTS снимается.

fOutxDsrFlow : BOOL; Разрешает управление по DSR. При переходе DSR в ноль, передача приостанавливается.

Перечисление PORTS:

TYPE PORTS : (COM1:=1, COM2, COM3, COM4, COM5, COM6, COM7, COM8);

END_TYPE

Пример настройки параметров для аппаратного хендшекинга:

dwHandle: DWORD;

pt_comsettingsex:COMSETTINGSEX:=(Port:=COM1,

dwBaudRate:=38400,

byStopBits:=0,

dwTimeout:=5000,

cByteSize:=7,

byParity := 2,

fOutxCtsFlow := FALSE,

fOutxDsrFlow:=TRUE,

DtrControl := 2,

fRtsControl := 2);

Реализация:

pt_comsettingsex.Size := sizeof(pt_comsettingsex);

SysComSetSettingsEx(dwHandle := Handle, ComSettingsExt :=ADR(pt_comsettingsex));

Где Handle есть значение, полученное вызовом SysComOpen(COM1).

SysComClose

Функция типа BOOL, закрывает COM порт. Возвращает TRUE при успешном завершении, иначе FALSE.

SysComWrite

Функция типа DWORD, записывает данные в порта на передачу. Возвращает число реально записанных байт.

SysComRead

Функция типа DWORD, читает принятые данные из порта. Возвращает число считанных байтов.

SysComGetVersion2300

Функция типа DWORD, всегда возвращает 0. Используется для внутренней автоматической проверки версии. В прикладных программах ее вызывать ненужно.

Установка дополнительных библиотек для проекта CoDeSys

В CoDeSys все файлы библиотек дополнительных программных компонентов имеют расширения  *.lib (Library) и находятся в папке Library. Она расположена по месту размещения основной программы на диске компьютера (по умолчанию – C:Program Files3S SoftwareCoDeSys V2.3Library).

По умолчанию подключен (доступен) стандартный набор библиотек. Дополнительные библиотеки добавляются пользователем по мере необходимости в папку к уже имеющимся библиотекам. Для подключения новых библиотек к проекту соответствующие файлы переписываются пользователем в ту же папку, где находятся все используемые библиотеки.

Чтобы увидеть, какие библиотеки уже подключены к проекту, и подключить дополнительные библиотеки, используется «Менеджер библиотек (Library Manager)», – его можно открыть из главного меню CoDeSys командами «Окно (Window)4Менеджер библиотек (Library Manager)» или выбором на вкладке организатора объектов «Ресурсы (Resources)» режима работы «Менеджер библиотек (Library Manager)», см. рисунок 1.1. В средней верхней части появившегося окна отображается список установленных библиотек.

Рисунок 1.1 – Окно вкладки организатора объектов «Ресурсы (Resources)» с режимом работы «Менеджер библиотек (Library Manager)»

Установка дополнительных библиотек выполняется из главного меню последовательным выбором команд: Вставка (Insert) 4 Добавить библиотеку (Additional Library) 4 в открывшемся окне папки Library (рисунок 1.2) выделяется файл c именем нужной библиотеки (например, sound.lib) и дается команда Открыть.

Рисунок 1.2 – Окно выбора подключаемой к проекту дополнительной библиотеки

Теперь в перечне библиотек, доступных в проекте, появится вновь установленная библиотека.

Для просмотра состава и свойств программных компонентов курсором выбирается нужная библиотека, – при этом появится папка с программными компонентами, в которой выделяется конкретный программный компонент (на рисунке 1.1 справа дана краткая справочная информация по его использованию).

Примечания.

1.  Рекомендуется размещать все библиотеки, которые планируется подключать, в папке для хранения библиотек, создаваемой CoDeSys автоматически.

2.  Для каждого нового проекта добавление новых библиотек проводится индивидуально, при необходимости их применения.

 

Удаление выделенной библиотеки выполняется из контекстного меню командой Удалить (Delete) (или из главного меню командой  Правка (Edit) 4 Удалить (Delete), рисунок 1.3 (или нажатием клавиши <Delete>).

 

 

 

а)  

 

 

в)

Рисунок 1.3 – Удаление дополнительной библиотеки:  а) для CoDeSys с английским интерфейсом; в) для CoDeSys с русским интерфейсом

    Создание пользовательских библиотек в CoDeSys 3 (часть 2)

    Далее необходимо задать информацию о библиотеке во вкладке Project/ Project information.

    Рисунок 10 Меню задания информации о проекте

    Рисунок 11 Информация о проекте (пример заполнения)

    После этого можно сразу добавить библиотеку в менеджер библиотек CoDeSys 3. Для этого можно использовать меню File/ Save Project And Install Into Library Repository. Если библиотека запаролена, потребуется ввод пароля (рис.13).

    Рисунок 12 Добавление библиотеки в раздел библиотек CoDeSys 3

     

    Рисунок 13 Окно запроса пароля на добавление библиотеки

    Теперь в новых проектах вы можете, открыв Library Manager, добавить эту библиотеку в проект как показано на рис.14

    Рисунок 14 Добавление библиотеки в проект и выбор версии

    Добавленная библиотека появится в Library Manager (рис.15).

    Рисунок 15 Вид добавленной библиотеки в Library Manager

    Для каждого блока библиотеки можно просмотреть наименование и типы входов / выходов (рис.16-18).

    Рисунок 16 Входы/выходы элементов библиотеки в табличном формате

    Рисунок 17 Входы/выходы элементов библиотеки в графическом формате

    Рисунок 18 Входы/выходы элементов библиотеки в формате документа

    Функциональные блоки добавленной библиотеки можно использовать в проекте, например как показано на рис.19. Там же показан пример обращения к элементам ФБД на языке ST.

    Рисунок 19 Пример использования в программе функции и функционального блока

    В CoDeSys 3 есть возможность сохранить проект как библиотеку типа compiled-library (рис.20). Эта команда используется для сохранения проекта-библиотеки в закодированном формате. Это значит, что реализации модулей библиотек не будут доступны и видны.

    При использовании команды открывается стандартный диалог сохранения файла. В качестве типа файла автоматически устанавливается «CoDeSys compiled library files». Имя файла, заданное по умолчанию, при желании можно изменить. Расширение файла «.compiled-library».

    Далее с этими библиотеками можно работать так же, как и с обычными файлами *.library.

    Рисунок 20 Создание библиотеки типа Compiled Library

     

      Создание пользовательских библиотек в CoDeSys 3 (часть 1))

      Пользователи CoDeSys 3 могут разрабатывать собственные библиотеки и в дальнейшем использовать их в своей работе.

      Для создания пользовательской библиотеки необходимо после запуска CoDeSys 3 выбрать пункт меню Empty Library, как показано на рис.1.

      Рисунок 1 Добавление библиотеки CoDeSys 3

      В разделе Name необходимо ввести имя библиотеки, в разделе Location – ее размещение на ПК. По умолчанию библиотека не предназначена для конкретного ПЛК, поэтому в разделе Device не будет указано конкретное устройство (см. рис.2). Раздел POU также не будет содержать никаких элементов, кроме Project Settings (см. рис.3).

      Рисунок 2 Раздел Device новой библиотеки
      Рисунок 3 Раздел POU новой библиотеки

      В пункте настроек проекта (Project Settings) пункт Security можно задать пароль доступа к библиотеке, как показано на рис.4.

      Рисунок 4 Задание пароля для библиотеки

      Создадим простую библиотеку из функции инкремента переменной и функционального блока декремента.

      Для этого  в разделе POU добавим объекты функция и функциональный блок, следуя рис.5-8.

      Рисунок 5 Добавление элемента библиотеки
      Рисунок 6 Добавление функции инкремента
      Рисунок 7 Текст функции Ink
      Рисунок 8 Настройки функционального блока dec
      Рисунок 9 Функциональный блок Dec

      Пункты Extends и Implements позволяют реализовать возможности объектно-ориентированного программирования. При использовании этих свойств функциональный блок может быть получен из другого функционального блока. Это значит, что один функциональный блок может использоваться для расширения другого функционального блока, автоматически перенимая все свойства исходного блока вдобавок к своим.

      Также можно использовать опцию «extends» при добавлении функционального блока в проект в диалоге.

        Компоненты проекта CoDeSys

        Проект

        Проект включает следующие объекты: POU, типы данных, визуализации, ресурсы, библиотеки. Каждый проект сохраняется в отдельном файле.

        POU (Program Organization Unit)

        К программным компонентам (POU) относятся функциональные блоки, функции и программы. Отдельные POU могут включать действия (подпрограммы). Каждый программный компонент состоит из раздела объявлений и кода. Для написания всего кода POU используется только один из МЭК языков программирования (IL, ST, FBD, SFC, LD или CFC). CoDeSys поддерживает все описанные стандартом МЭК компоненты. Для их использования достаточно включить в свой проект библиотеку standard.lib. POU могут вызывать другие POU, но рекурсии недопустимы.

        Функция

        Функция – это POU, который возвращает только единственное значение (которое может состоять из нескольких элементов, если это битовое поле или структура). В текстовых языках функция вызывается как оператор и может входить в выражения.При объявлении функции необходимо указать тип возвращаемого значения. Для этого после имени функции нужно написать двоеточие и тип.

        Имя функции используется как выходная переменная, которой присваивается результат вычислений.

        Объявление функции должно начинаться с ключевого слова FUNCTION и заканчиваться ключевым словом END_FUNCTION.

        В языке ST вызов функции может присутствовать в выражениях как операнд.

        В SFC функция вызывается только из шага или перехода.

        Функция не имеет внутренней памяти. Это означает, что функция с одними и теми же значениями входных переменных всегда возвращает одно и то же значение.

         

        Функциональный блок

        Функциональный блок — это POU, который принимает и возвращает произвольное число значений. В отличие от функции функциональный блок не формирует возвращаемое значение. Объявление функционального блока начинается с ключевого слова FUNCTION_BLOCK и заканчивается ключевым словом END_FUNCTION_BLOCK.

        Ниже приведен пример функционального блока, написанного на IL, который имеет две входных и две выходных переменных. Значение выходной переменной MULERG равно произведению значений двух входных переменных, а значение VERGL определяется в результате сравнения значений входных переменных.

        Экземпляры функционального блока

        Определение функционального блока подобно определению типа данных. Для работы с функциональным блоком необходимо объявить (создать) его экземпляр. Один функциональный блок может иметь произвольное число экземпляров, каждый из которых имеет собственные независимые данные (память). Каждый экземпляр функционального блока получает свой собственный идентификатор (имя экземпляра) и свои данные, содержащие входные, выходные и внутренние переменные. Экземпляры функционального блока объявляются глобально или локально как переменные, имеющие тип соответствующего функционального блока.

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

        Экземпляры функционального блока могут быть объявлены в другом функциональном блоке или в программе. Объявлять экземпляр функционального блока в теле функции нельзя. Экземпляры функционального блока доступны в том POU, в котором они объявлены, если они не объявлены глобально.

        Экземпляры функциональных блоков могут быть использованы в качестве входных переменных других функциональных блоков или функций.

         

        Вызов функционального блока

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

        <Имя экземпляра>.<Имя переменной >

        Присваивание параметров при вызове:

        В текстовых языках (IL, ST) задать актуальные параметры и считать значения выходов можно непосредственно при вызове экземпляра функционального блока. Для входных переменных применяется присваивание «:=», выходы считываются при помощи «=>». Этот процесс упрощается, если использовать ассистент ввода (<F2>) с включенной опцией вставки с аргументами (With arguments).

         

        Программа

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

        Если вызвать программу, которая изменит значения своих переменных, то при следующем вызове ее переменные будут иметь те же значения, даже если она вызвана из другого POU.

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

        Объявление программы начинается ключевым словом PROGRAM и заканчивается ключевым словом END_PROGRAM.

        Так же, как и для экземпляров функциональных блоков, в текстовых языках (IL, ST) задать актуальные параметры и считать значения выходов можно непосредственно при вызове программы. Для входных переменных применяется присваивание «:=», выходы считываются при помощи «=>».

         

        PLC_PRG

        Программа PLC_PRG – это специальный POU, который должен быть в каждом проекте. Эта программа вызывается один раз за цикл управления.

        При создании нового проекта автоматически открывается диалог «Project» «Object Add», предлагающий создать новый POU — программу с именем PLC_PRG.

        Не следует менять предложенные установки. Если определить последовательность выполнения задач в Task Configuration, то проект может не содержать PLC_PRG.

        Действие

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

        Вызов действия:

        Действие вызывается с помощью идентификатора:

        <Имя_программы>.<Имя_действия> или <Имя_экземпляра>.<Имя_действия >.

        Если нужно вызвать действие из POU, к которому оно принадлежит, то в текстовых языках используется имя действия, а в графических – функциональный блок без указания имени экземпляра.

        Ресурсы

        Ресурсы отвечают за конфигурацию проекта, включая:

        • Глобальные переменные, используемые во всем проекте.
        • Менеджер библиотек (Library manager) для подключения необходимых библиотек к проекту
        • Журнал записи действий во время исполнения
        • Конфигуратор тревог (Alarm Configuration) для конфигурирования обработки тревог в проекте
        • Конфигуратор ПЛК (PLC Configuration) для конфигурирования аппаратуры контроллера.
        • Конфигуратор задач (Task Configuration) для управления задачами
        • Менеджер рецептов (Watch and Receipt Manager) для просмотра и заказа наборов значений переменных
        • Опции целевой системы (Target Settings)
        • Рабочая область для отображения опций проекта

        В зависимости от системы исполнения и ее опций могут подключаться дополнительные объекты:

        Sampling Trace — для задания графической трассировки значений переменных.

        ParameterManager — для взаимодействия с другими контроллерами в сети

        PLC-Browser — монитор ПЛК

        Tools – для вызова внешних, специфичных для каждой платформы инструментов

        SoftMotion – компоненты системы управления движением (в соответствии с лицензией), редакторы CNC и CAM

        Библиотеки

        Проект может использовать несколько библиотек, в которые входят POU, необходимые им типы данных и глобальные переменные. Библиотечные POU можно использовать точно так же, как и определенные пользователем.

        Библиотеки «standard.lib» и «util.lib» обязательно входят в стандартный комплект поставки.

         

        Типы данных

        Кроме стандартных типов данных, вы можете использовать определяемые пользователем типы данных. Ими могут быть структуры, перечисления и ссылки.

         

        Визуализация

        С помощью визуализации пользователь может создать графическое представление проекта. Форма и цвет графических элементов будут изменяться при работе программы в зависимости от значений переменных. Визуализация может исполнятся в системе программирования, в отдельном приложении CoDeSys HMI или как Web или целевая (в ПЛК) визуализация.

         

        Мой блог находят по следующим фразам