Category Archives: CDS_LIB

Библиотека 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. Используется для внутренней автоматической проверки версии. В прикладных программах ее вызывать ненужно.

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

Данная библиотека позволяет активировать пользовательские функции обратного вызова для событий системы исполнения. Она содержит функции SysCallbackRegister и SysCallbackUnregister.

Обе функции имеют тип BOOL и возвращают TRUE, если соответствующая функция обратного вызова успешно зарегистрирована или отключена, соответственно. Функции выполняются синхронно.

Прототип функции обратного вызова должен выглядеть так:

FUNCTION Callback : DWORD

VAR_INPUT

dwEvent:DWORD; // (* Событие *)

dwFilter:DWORD; // (* Фильтр *)

dwOwner:DWORD; // (* Источник *)

END_VAR

 

Внимание:  в целевых платформах RISC и Motorola 68K имя функции обратного вызова должны начинаться с „callback“!

 

Библиотечные функции SysCallbackRegister и SysCallbackUnregister имеют одинаковый набор параметров:

 

Входные 

переменные

Тип данных Описание
iPOUIndex INT POU индекс функции обратного вызова, может быть получен при помощи оператора INDEXOF(<имя функции >).
Event RTS_EVENT Событие в системе исполнения, по которому должна вызываться callback-функция. Определяется значением перечисления RTS_EVENT, определенного в данной библиотеке (см. ниже).

 

Перечисление RTS_EVENT определено следующим образом:

TYPE RTS_EVENT :

(

EVENT_ALL,
(* Общие события *)
EVENT_START,
EVENT_STOP,
EVENT_BEFORE_RESET,
EVENT_AFTER_RESET,
EVENT_SHUTDOWN,
(* Исключения системы исполнения *)
EVENT_EXCPT_CYCLETIME_OVERFLOW, (* Переполнение времени цикла *)
EVENT_EXCPT_WATCHDOG, (* Сработал программный сторожевой таймер МЭК задачи *)
EVENT_EXCPT_HARDWARE_WATCHDOG, (* Сработал аппаратный сторожевой таймер. Фатальная ошибка. *)
EVENT_EXCPT_FIELDBUS, (* Ошибка Fieldbus *)
EVENT_EXCPT_IOUPDATE, (* Ошибка обновления входов-выходов *)
(*Исключения выполнения *)
EVENT_EXCPT_ILLEGAL_INSTRUCTION, (* Недопустимая инструкция *)
EVENT_EXCPT_ACCESS_VIOLATION, (* Ошибка доступа *)
EVENT_EXCPT_PRIV_INSTRUCTION, (* Привилегированная операция *)
EVENT_EXCPT_IN_PAGE_ERROR, (* Ошибочная страница *)
EVENT_EXCPT_STACK_OVERFLOW, (* Переполнение стека *)
EVENT_EXCPT_MISALIGNMENT, (* Ошибка размещения по типу данных *)
EVENT_EXCPT_ARRAYBOUNDS, (* Выход за границы массива *)
EVENT_EXCPT_DIVIDEBYZERO, (* Деление на 0 *)
EVENT_EXCPT_OVERFLOW, (* Переполнение *)
EVENT_EXCPT_NONCONTINUABLE, (* Авария системы, продолжение работы невозможно *)
EVENT_EXCPT_NO_FPU_AVAILABLE, (* Мат. сопроцессор (FPU) недоступен *)
EVENT_EXCPT_FPU_ERROR, (* FPU: Неопределенная ошибка *)
EVENT_EXCPT_FPU_DENORMAL_OPERAND, (* FPU: Ошибочный операнд *)
EVENT_EXCPT_FPU_DIVIDEBYZERO, (* FPU: Деление на 0 *)
EVENT_EXCPT_FPU_INVALID_OPERATION, (* FPU: Ошибочная операция *)
EVENT_EXCPT_FPU_OVERFLOW, (* FPU: Переполнение*)
EVENT_EXCPT_FPU_STACK_CHECK, (* FPU: Перегрузка стека *)
(* События входов-выходов *)
EVENT_AFTER_READING_INPUTS,
EVENT_BEFORE_WRITING_OUTPUTS,
(* Прочие события *)
EVENT_TIMER, (* Прерывание по таймеру*)
EVENT_DEBUG_LOOP, (* Отладка по точке останова *)
(* Онлайн сервисы *)
EVENT_ONLINE_SERVICES_BEGIN := 500,
EVENT_LOGIN,
EVENT_CUSTOM_SERVICES,
(* Прерывания *)
EVENT_INT_0:=1000,
EVENT_INT_1,
EVENT_INT_2,
EVENT_INT_3,
EVENT_INT_4,
EVENT_INT_5,
EVENT_INT_6,
EVENT_INT_7,
EVENT_INT_8,
EVENT_INT_9,
EVENT_INT_10,
EVENT_INT_11,
EVENT_INT_12,
EVENT_INT_13,
EVENT_INT_14,
EVENT_INT_15,
EVENT_INT_255:=1255,
EVENT_MAX

);

END_TYPE

 

    Установка дополнительных библиотек для проекта 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 с русским интерфейсом

      Библиотека sound

      Формирование звукового сигнала (BeepForTimeUser)

      Структурная схема

       

      Таблица 1

      Имя программного компонента BeepForTimeUser
      Тип программного компонента Функциональный блок   Функция  Программа
      Особенности работы Для работы не требуется установка в проекте дополнительных библиотек
      Применение на контроллерах ПЛК63, ПЛК73, ПЛК410
      Входные переменные: Тип данных Пояснения
      Time_ms WORD Время в миллисекундах, на которое необходимо включить зуммер. Диапазон значений от 1 до 5000 (задается пользователем)
      freq WORD Частота зуммера в герцах. Диапазон значений от 21 до 15000 (задается пользователем)
      Выходная переменная: Тип данных Пояснения
      BeepForTimeUser INT Функция ничего не возвращает

       

      Описание работы

      Функция включает встроенный в ПЛК звуковой излучатель на заданное в параметре Time_ms время с частотой, указанной в параметре freq.

      На время, когда включен звуковой излучатель, блокируется изменение его состояния как системными звуками (например, подтверждение нажатия клавиш), так и из программного кода (функцией BeepForTimeUser). Это значит, что:

      – если в течение времени звучания звукового излучателя происходит нажатие клавиш, то звукового подтверждения их нажатия не будет;

      – если в момент звукового подтверждения нажатия клавиши происходит вызов функции BeepForTimeUser, то этот вызов будет проигнорирован;

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

       

      Пример вызова данной функции в составе программы, которая на встроенный в ПЛК звуковой излучатель (зуммер) выводит сигнал с частотой 2 кГц на интервал времени 1000 мс, выглядит следующим образом (на языке ST):

       

      BeepForTimeUser(1000,2000);

       

        Описание библиотеки UNM контроллеров ОВЕН ПЛК1хх

        Библиотека Universal Network Module (далее UNM) предназначена для приема/передачи последовательности байт через встроенные порты контроллера (RS232/RS485/Ethernet).

        Для использования библиотеки нужно создать в конфигурации контроллера один (или несколько)  модулей Universal Network Module. Внутри каждого модуля нужно настроить параметры порта передачи данных. Для последовательных портов это скорость, четность, биты данных, биты стопа, время задержки. Для Ethernet это порт TCP/IP протокола.

        Особенностью данной библиотеки является возможность работать одновременно с модулями протоколов Modbus, DCON и ОВЕН на одном физическом интерфейсе. Это позволяет создать модуль опроса устройства стандартными командами и в то же время выдавать в интерфейс и получать из интерфейса в нужное время произвольную последовательность байт. Например – в случае, если на порт RS232 установлен модем, до начала работы стандартного модуля опроса программа пользователя позволяет уставить связь с удаленным устройством используя “AT” последовательности. После чего начинает работать модуль опроса устройства через стандартный протокол.

        Описания функций

        1)      LockDevice:DWORD – функция захвата интерфейса.

        До начала передачи/приема в интерфейс данных из программы CoDeSys нужно «захватить» интерфейс и приостановить работу с этим интерфейсом модулей протоколов, подключенных в PLC Configuration.

        Параметры:

        DeviceNumber:DWORD – номер модуля UNM – нумерация идет с 0 по порядку сверху вниз как расположены модули UNM в конфигурации. Первый сверху модуль UNM имеет номер 0, следующий номер UNM – 1, и так далее.

        Возвращаемое значение:

        1 – интерфейс захвачен

        (-1) – неверный номер интерфейса

        2)      ReleaseDevice:DWORD – функция освобождения захваченного ранее интерфейса. Все прочие модули PLC Configuration на данном физическом интерфейсе возобновляют свою работу.

        Параметры:

        DeviceNumber:DWORD – номер модуля UNM

        Возвращаемое значение:

        1 – интерфейс высвобожден

        (-1) – неверный номер интерфейса

        3)      SetByte:DWORD – передать в интерфейс строку байт данных.

        Параметры:

        DeviceNumber:DWORD – номер модуля UNM;

        Line: STRING — строка содержащая массив байтов для последовательной передачи (до 256 байт);

        Len: DWORD — длина массива данных.

        Возвращаемое значение:

        (-1) – неверный номер интерфейса

        N   — количество переданных байт.

        4)      GetByte: POINTER TO RBDATA – получение данных из интерфейса

        Параметры:

        DeviceNumber:DWORD – номер модуля UNM;

        Возвращаемое значение:

        Указатель на структуру  RBDATA. Если неверно указан номер интерфейса – возращает NULL. Если нет принятых данных то так же передается NULL.

        Описание структуры RBDATA

        STRUCT

        data:  BYTE;               —  Принятый байт

        flags: BYTE;                —  Флаги

        Флаги

        unsigned char    reserved:                     1;         Не используется

        unsigned char    noktime:          1;         Время между байтами >1.5 символов

        unsigned char    new_frame:                 1;         Для внутреннего использования

        unsigned char    end_frame:     1;         Время между байтами >3.5 символов

        unsigned char    temp_el_full:    1;         Для внутреннего использования

        unsigned char    overrun:                      1;         Ошибка переполнения буфера

        unsigned char    frame_error:   1;         Ошибка стоп бита

        unsigned char    parity_error:    1;         Ошибка четности

        5)      RBDATA_TO_STRING:STRING – преобразовать принятый байт (из структуры RBDATA) в строку.

        Параметры:

        Указатель на структуру  RBDATA

        Возвращаемое значение:

        Строка содержащая один символ с кодом ASCII который соответствует значению поля data указателя на структуру RBDATA.

        6)      BYTETOSTRING:STRING — преобразование байта в строку. Выходная строка содержит значение в шестнадцатеричном коде. Например InByte=16  возврат “0F”

        Параметры:

        InByte:BYTE – значение для перекодирования

        Возвращаемое значение:

        Строка с шестнадцатеричным кодом символа

        7)      POLINOM_SUMM – функция расчета 8-бит контрольной суммы по алгоритму Dallas Semiconductors (исп. также в DCON)

        Параметры

        Line: STRING; — массив для расчета контрольной суммы

        LineSize: DWORD; — длина массива

        Возвращаемое значение:

        байт с рассчитанной контрольной суммы.

        8)      SUMMFORMOD256 –функция расчета суммы по модулю 256 (суммирование байтов без учета переполнения)

        Параметры

        Line: STRING; — массив для расчета суммы по модулю 256

        LineSize: DWORD; — длина массива

        Возвращаемое значение:

        байт с рассчитанной суммы по модулю 256

        9)      INITCOM : DWORD* – инициализация модуля  параметрами, заданными в структуре COM_INI. Функция позволяет инициализировать последовательный порт новыми параметрами, например, изменить скорость передачи данных.

        Параметры:

        DeviceNumber:DWORD – номер модуля UNM

        INI: POINTER TO COM_INI;

        Описание структуры COM_INI

        STRUCT

        unsigned char speed;                                 //Скорость  бит/с

        115200 = 0,

        57600 = 1,

        38400=2,

        28800=3,

        19200=4,

        14400=5,

        9600=6,

        4800=7,

        2400=8,

        1200=9

        unsigned char parity;                                //Четность

        EVEN = 0,

        ODD=1,

        SPACE=2,

        MARK=3,

        NO_PARITY=4,

        MULTY_DROP = 6

        unsigned char bit_lenght;                            // Биты данных

        BITS_5=0,

        BITS_6=1,

        BITS_7=2,

        BITS_8=3

        unsigned char stop_lenght;                           //Бит стоп

        STOP_1=0,

        STOP_1_5=1,

        STOP_2=2

        Остальные поля структуры не используются т.к. изменение параметров возможно только для последовательных портов (не Ethernet)

         

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

          Создание архива на СПК-207 (часть2)

          Функциональные блоки библиотеки ArchivatorOwenLib

           

          Для ведения архива данных и записи его в энергонезависимую память контроллера (внутреннюю или внешнюю) предпочтительно использовать библиотеку ArchivatorOwenLib. Для этого используется два функциональных блока:

          • «GetData» для формирования строки для записи;
          • «WriteData» для записи сформированной строки в архив.

           

          Блок «GetData»

          Вид функционального блока GetData представлен на рис.1.

          Рисунок 1 Функциональный блок GetData

          Входы блока GetData:

          • Name — имя переменной, максимальная длина 15 символов, используется при формирование заголовка архива, если включен режим формирования заголовка (об этом будет сказано подробнее ниже)
          • Tip – тип записываемой переменной: 0-REAL, 1-Byte, 2-Word, 3-DWord, 4-String (максимальная длина такая же, как у имени – 15 сиволов )
          • Znachenie -значение переменной

           

          Выходы блока GetData:

          • ErrCode -код ошибки (255-переполнение строки данных, 254-переполнение заголовка, 253-переполнение и строки данных и заголовка, 0-ошибок нет); если ошибка случилось, то блок продолжает работать, только новые данные не будут добавлены в конечную строку данных или заголовка.
          • StrOut – сформированная строка данных определенного формата (номер переменной в виде #xxx и значение в шеснадцатеричной форме записи, например #005=00A1, «#»Номер переменной ПРОБЕЛ «=»Значение переменной в зависимости от типа)
          • StrOutHead –сформированная строка заголовка определенного формата ( «#»Номер переменной ПРОБЕЛ «size=»Размер в байтах ПРОБЕЛ«name=» имя переменнойПРОБЕЛ)

           

          Внутренние методы и функции блока GetData:

          • ACTION «Clean» — очистка внутренних переменных ФБ, выполнять перед повторным формирование строки, вызывается в смежном блоке «WriteData» из этой же библиотеке
          • ACTION «SetHead» — при вызове разрешает формирование строки заголовка(т.к. в связи с форматом заголовка и строки данных, первый получается гораздо длиннее, а длина строки для обоих одинакова и равна 255 символов, то иногда целесообразно не создавать заголовка); заголовок формируется один раз за первый цикл и далее не меняется

           

          Блок «WriteData»

          Вид функционального блока WriteData представлен на рис.2.2.

          Рисунок 2 Блок WriteData библиотеки ArchivatorOwenLib

          Входы блока «WriteData»:

          Enable – разрешение на работу;

          ArcPnt – ссылка на ФБ формирования заголовка и строки данных «GetData»;

          NameArc – имя архива (максимум 15 символов);

          Path – путь к папке, в которой будет храниться архив (в конце должна стоять косая черта, например: /var/log/).

          Для записи данных на флеш-карту или SD-карту памяти у контролеров СПК2хх путь выглядит следующим образом:

          SD: « /mnt/mmc/».

          USB: «/mnt/usb1(2)/».

          Mode – режим работы (0-каждый день создается новый файл архива, дата добавляется в имя архива).

           

          Выходы блока «WriteData»:

          ErrCode –код ошибки (0-ошибок нет, 1-не удалось создать файл, 2-не удалось открыть или файл занят, 3- не удалось записать), если ошибка случилось, то происходит выход из ФБ.

           

          Внутренние методы и функции блока «WriteData»:

          ACTION «CloseArc» — закрывает файл архива (для более красивого кода)

          METHOD «CreateArc» — создает новый архив, при успешном завершение выдает «TRUE».

          METHOD «IsBeArc» — проверяет на существование файла архива, если существует выдает «TRUE».

          METHOD «OpenArc» — открывает файл архива, возвращает ссылку на открытый файл (SysFile.RTS_IEC_HANDLE).

          METHOD «WriteInArc» — запись данных в файл архива, в случае успеха возвращает TRUE.

            Библиотека SysLibSocketsAsync.lib CoDeSys 2.3

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

            Внимание:

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

            — операции открытия/закрытия сокетов могут быть длительными, если несколько сокетов

            открываются/закрываются одновременно.

            — рекомендуется использовать асинхронные операции.

            Соответствующие параметры функций SysLibSockets.lib однозначно отражены на функциональные блоки SysLibSocketsAsync.lib.

            Возвращаемые значения функций SysLibSockets.lib отражены выходами функциональных

            блоков SysLibSocketsAsync.lib.

            В дополнение, функциональные блоки имеют следующие входы и выходы:

            Вход:

            bEnable BOOL Запуск операции по переднему фронту

            Выходы:

            bDone BOOL TRUE указывает на окончание работы функционального блока

            bBusy BOOL TRUE указывает на то что работа функционального блока не

            закончена

            bError BOOL TRUE является признаком ошибки

            wErrorId WORD Код ошибки

            Все функциональные блоки начинают свою работу по переднему фронту bEnable. Далее их необходимо вызывать циклически пока bDone не примет значение TRUE. Тогда по значению выходов bError, wErrorId и соответствующим выходным значениям можно будет определить результат выполнения.

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

            • SysSockAcceptAsync
            • SysSockBindAsync
            • SysSockCloseAllOpenAsync
            • SysSockConnectAsync
            • SysSockCreateAsync
            • SysSockGetHostByNameAsync
            • SysSockGetHostNameAsync
            • SysSockGetOptionAsync
            • SysSockHtonIAsync
            • SysSockHtonsAsync
            • SysSockInetAddrAsync
            • SysSockInetNtoaAsync
            • SysSockloctlAsync
            • SysSockListenAsync
            • SysSockNtohIAsync
            • SysSockNtohsAsync
            • SysSockSelectAsync
            • SysSockSetIPAddressAsync
            • SysSockSetOptionAsync
            • SysSockShutdownAsync

            Для TCP/IP:

            • SysSockRecvAsync
            • SysSockSendAsync

            Для UDP:

            • SysSockRecvFromAsync
            • SysSockSendToAsyn

             

              Библиотека SysLibRtc.lib CoDeSys 2.3

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

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

              Используйте функциональный блок RTC, включенный в стандартную библиотеку

              CoDeSys. RTC отсчитывает дату и время на основании явно заданного при егоинициализации значения. Здесь удобно использовать функцию SysRtcGetTime (см. ниже) обращающуюся к системным часам реального времени. Обращение к функциональному блоку RTC не вызывают задержек.

               

              SysRtcCheckBattery

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

              Переменная bDummy

              Тип данных BOOL

              Описание TRUE запускает функцию

               

              SysRtcGetHourMode

              Данная функция имеет тип BOOL. Она возвращает режим работы часов реального времени. Возврат FALSE соответствует 12-и часовому режиму, TRUE соответствует 24-му режиму.

              Переменная bDummy

              Тип данных BOOL

              Описание TRUE запускает функцию

               

              SysRtcGetTime

              Данная функция имеет тип DATE_AND_TIME. Она возвращает текущее значение времени часов системы.

              Переменная bDummy

              Тип данных BOOL

              Описание TRUE запускает функцию

               

              SysRtcSetTime

              Данная функция имеет тип BOOL. Она имеет один параметр: дату и время (тип

              DATE_AND_TIME) для установки часов реального времени. Функция возвращает TRUE при успешном завершении, иначе FALSE.

              Переменная ActDateAndTime

              Тип данных DATE_AND_TIME

              Описание Дата и время для установки часов реального времени