Tag Archives: UNM

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

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

 

VAR

Error:BYTE;

P:POINTER TO RBDATA;

itsOK:STRING:=’OK$N$R’;

itsCONNCT:=’CONNECT$N$R’;

iter:INT;

END_IF

 

If(LockDevice(0)!=1) then

Error:=1;

Return;

End_if

 

If SetByte(0,‘ATZ$N$R’,5) !=1 then

Error:=1;

Return;

End_IF

 

(* Здесь задержка которая зависит от модема времени инициализации модема.

После этого мы должны получить ‘OK’ *)

For iter:=1 to len(itsOK) do

P:=GetByte(0);

If p=0 then

Error:=1;

return

else

if RBDATA_TO_STRING(p)<> MID (itsOK,1,iter); then

error:=1;

return;

end_if

End_if

END_FOR

(*Набор заданного номера*)

If SetByte(0,‘ATDT89161234567$N$R’,5) !=1 then

Error:=1;

Return;

End_IF

 

For iter:=1 to len(itsConnect) do

P:=GetByte(0);

If p=0 then

Error:=1;

return

else

if RBDATA_TO_STRING(p)<> MID (itsCONNECT,1,iter); then

error:=1;

return;

end_if

End_if

END_FOR

(*набор заданного номера – закончен – соединение прошло – остановим модуль UNM *)

ReleaseDevice(0);

 

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

    Описание библиотеки 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. Всегда самые свежие цветы, самые красивые букеты, доставка цветов по москве бесплатно и очень приятные цены! Закажите цветы для своих любимых, друзей и коллег прямо сейчас…