Category Archives: CDS3

Опрос МВА 8 ПЛК с программной средой CoDeSys 3.5

Пример на языке ST реализует работу по интерфейсу RS-485: чтение 8 входов из прибора МВА8 с адресом 16. Для работы примера в PLC Configuration должны быть подключены библиотеки SisLibCom, OwenNet, ComService.

PROGRAM PLC_PRG

VAR

get_fl_owen:OWEN_GET_REAL; (*Чтение параметра типа Real*)

COM_SERVICE1: COM_SERVICE;

cmpl: BOOL; (* признак завершения операции *)

err: INT; (*номер ошибки*)

port_opened: BYTE := 0; (*состояние порта*)

Settings: COMSETTINGS;(* настройки последовательного порта *)

com_num: PORTS:=0 (*0 — RS-485, 1 — RS-232*);

TimeOut: TIME:=T#50ms;(*таймаут*)

Enabl: BOOL:=TRUE; (*состояние работы блока*)

wTime: WORD; (*значение времени для измери-теля*)

A: REAL; (*считанное значение*)

addres: INT:=16; (*адрес МВА8*)

B: ARRAY [0..7] OF REAL; (*массив для хранения значений входов МВА8*)

i: INT; (*номер входа МВА**)

END_VAR

(*Устанавливаем настройки COM-порта*)

IF port_opened=0 THEN

Settings.Port:=com_num; (*номер COM-порта*)

Settings.dwBaudRate:=115200; (*скорость*)

Settings.byParity:=0;

Settings.dwTimeout:=0;

Settings.byStopBits:=0;

Settings.dwBufferSize:=0;

Settings.dwScan:=0;

END_IF

COM_SERVICE1(Enable:=(port_opened=0) , Settings:=Settings , Task:=OPEN_TSK );

(*Если COM-порт открыт, то переходим к приему и передачи данных *)

IF COM_SERVICE1.ready THEN

port_opened:=2;

END_IF

IF port_opened=2 THEN (*Удачно проинициализировали*)

(*чтение 8 входов из прибора МВА8 с адресом 16 *)

get_fl_owen(

Enable:=Enabl , (* разрешение работы блока *)

Addr:=addres , (*адрес прибора*)

AddrLen:=A8BIT , (*длина адреса*)

Name:=’read’ , (*имя параметра, значение которого считываем*)

Index:=65535 , (*индекс параметра*)

RealType:=FLOAT32T , (*тип параметра, значение которого считываем*)

ComHandle:= Settings.Port, (*номер COM-порта*)

TimeOut:=TimeOut , (*Таймаут T#50ms*)

Complete=>cmpl , (* скопировать признак завершения операции *)

Value=>a , (*считанное значение*)

wTime=>wTime , (*значение времени для измерителя*)

Error=> err ); (* скопировать регистр ошибок *)

(*если установлен признак завершения операции, то *)

IF Enabl = FALSE THEN

Enabl := TRUE;

END_IF

(*Если завершен обмен и нет ошибок*)

IF cmpl THEN

IF (err=0) THEN

B[i]:=a; (*присваиваем массиву значение на входе*)

ELSE

Enabl := FALSE;

END_IF;

i:=i+1; (*увеличиваем номер входа*)

addres:=16+i; (*увеличиваем адрес*)

IF (i=8) THEN (*если номер входа меньше 8*)

addres:=16;

i:=0;

END_IF

END_IF

END_IF

Опрос ТРМ 201 по сети RS-485 с использованием ПЛК со средой программирования CoDeSys 3.5

Пример на языке ST реализует работу по интерфейсу RS-485: Чтение и за-пись двух параметров с одного прибора ТРМ201. Для работы примера в PLC Con-figuration должны быть подключены библиотеки SisLibCom, OwenNet, ComService.

PROGRAM PLC_PRG

VAR

get_fl_owen:OWEN_GET_REAL; (*Чтение параметра типа Real*)

send_fl_owen:OWEN_SET_REAL; (*Запись параметра типа Real*)

COM_SERVICE1: COM_SERVICE; (*открытие COM-порта*)

cmpl: BOOL; (* признак завершения операции *)

err: INT; (*номер ошибки*)

port_opened: BYTE := 0; (*состояние порта*)

Settings: COMSETTINGS; (* настройки последова-тельного порта *)

com_num: PORTS:=0; (*0 — RS-485, 1 — RS-232*)

TimeOut: TIME:=T#50ms; (*таймаут*)

Enabl: BOOL:=TRUE; (*состояние работы блока*)

wTime: WORD; (*значение времени для измери-теля*)

master1: BYTE := 0;

A: REAL; (*считанное значение из ТРМ201*)

b: REAL:=30;

END_VAR

(*Устанавливаем настройки COM-порта*)

IF port_opened=0 THEN

Settings.Port:=com_num; (*номер COM-порта*)

Settings.dwBaudRate:=115200; (*скорость*)

Settings.byParity:=0;

Settings.dwTimeout:=0;

Settings.byStopBits:=0;

Settings.dwBufferSize:=0;

Settings.dwScan:=0;

END_IF Описание интерфейса библиотек ФБ для работы с протоколом ОВЕН 19

COM_SERVICE1(Enable:=(port_opened=0) , Settings:=Settings , Task:=OPEN_TSK );

(*Если COM-порт открыт, то переходим к приему и передачи данных *)

IF COM_SERVICE1.ready THEN

port_opened:=2;

END_IF

IF port_opened=2 THEN (*Удачно проинициализировали*)

CASE master1 OF

(*чтение параметра типа Real из прибора ТРМ201 с адресом 8 из параметр с именем PV и индексом 0*)

0: get_fl_owen(

Enable:=Enabl , (* разрешение работы блока *)

Addr:=8 , (*адрес прибора*)

AddrLen:=A8BIT , (*длина адреса*)

Name:=’pv’ , (*имя параметра, значение которого считываем*)

Index:=65535 , (*индекс параметра*)

RealType:=FLOAT24 , (*тип параметра, значение которого считываем*)

ComHandle:= Settings.Port, (*номер COM-порта*)

TimeOut:=TimeOut , (*Таймаут T#50ms*)

Complete=>cmpl , (* скопировать признак готовности результата *)

Value=>a , (*считанное значение*)

wTime=>wTime , (*значение времени для измерителя*)

Error=> err ); (* скопировать регистр ошибок *)

(*если установлен признак завершения операции, то *)

IF cmpl THEN

master1:=1;(*переходим к выполнению следующего блока*)

END_IF

1:(*Запись параметра типа Real в прибор ТРМ201 с адресом 8 в параметр с именем SP и индексом 0*)

send_fl_owen(

Enable:=Enabl , (* разрешение работы блока *)

Addr:= 8, (*адрес прибора*)

AddrLen:=A8BIT, (*длина адреса*)

Name:= ‘sp’, (*имя параметра, значение которого записываем в ТРМ201*)

Index:= 0, (*индекс параметра*) Описание интерфейса библиотек ФБ для работы с протоколом ОВЕН 20

RealType:= FLOAT24, (*тип параметра, значение которого записываем*)

Value:=b , (*параметр, значение значение которого записываем в TPM201*)

ComHandle:=Settings.Port, (*номер COM-порта*)

TimeOut:=TimeOut , (* время тайм-аута [мс] — макс. за-держка на обработку запроса *)

Complete=>cmpl , (* скопировать признак готовности результата *)

Error=> err); (* скопировать регистр ошибок *)

(*если установлен признак завершения операции, то *)

IF cmpl THEN

master1:=0;(*переходим к выполнению следующего блока*)

END_IF

END_CASE

IF Enabl = FALSE THEN

Enabl := TRUE;

END_IF

IF err <> 0 THEN

Enabl := FALSE;

END_IF

END_IF

Пример работы по Modbus в режиме Slave для CoDeSys 3.5

Пример на языке ST реализует работу по интерфейсу RS-485: настройку модуля ModBus-Slave для трансляции в сеть массива переменных MB_Buffer.

Объявление переменных:

PROGRAM PLC_PRG

VAR

MB_func: MB_SLAVE;

MB_Buffer: ARRAY[0..3] OF WORD; (* буфер данных для обмена по ModBus *)

MB_NewData: BOOL; (* данные обновились *)

MB_Error: MB_ERROR_TYPE; (* ошибка обработки запроса *)

port_opened: BYTE := 0;

Settings: ComSerice.SysCom.COM_Settings; (*настройки последовательного порта *)

SettingsEx: ComSerice.SysCom.COM_SettingsEx;

COM_SERVICE1: COM_SERVICE;

END_VAR

Тело программы:

IF port_opened=0 THEN

Settings.sPort:=ComSerice.SysCom.SYS_COMPORT2; (*номер COM-порта*)

Settings.ulBaudrate:=9600; (*скорость*)

Settings.byParity:=0;

Settings.ulTimeout:=0;

Settings.byStopBits:=1;

Settings.ulBufferSize:=0;

SettingsEx.byByteSize:=8;

SettingsEx.bBinary:=TRUE;

COM_SERVICE1(Enable:=(port_opened=0) , Settings:=Settings,sets_ex:=SettingsEx , Task:=OPEN_TSK );

(*Если COM-порт открыт, то переходим к приему и передачи данных *)

IF COM_SERVICE1.ready THEN

port_opened:=2;

END_IF

MB_Buffer[0] := 16#1234;

MB_Buffer[1] := 16#5678;

MB_Buffer[2] := 16#ABCD;

MB_Buffer[3] := 16#5555;

END_IF

IF port_opened=2 THEN (*Удачно проинициализировали*)

MB_func(

ComHandle:=COM_SERVICE1.handle, (*номер COM-порта*)

DevAddr := 16,

pBuffer := ADR(MB_Buffer),

BufSize := SIZEOF(MB_Buffer),

NewData => MB_NewData,

Error => MB_Error

);

IF MB_Error <> MB_OK THEN

MB_NewData := FALSE;

END_IF

IF MB_NewData = TRUE THEN

MB_Error := MB_OK;

END_IF

END_IF

Пример записи переменных по Modbus для CoDeSys 3

Пример на языке ST реализует работу по интерфейсу RS-485: запись параметров типа Int (функция Modbus 06 — MB_WR_SNG_REG) и записи параметра типа Float (функция Modbus 16 — MB_WR_REGS). Для работы примера в PLC Configuration должны быть подключены библиотеки SisLibCom, Modbus, ComService.

PROGRAM PLC_PRG

VAR

send1_modbus:MB_WR_SNG_REG; (*функция 06 — запись параметра*)

send2_modbus: MB_WR_REGS; (*функция 16 — запись параметров*)

COM_SERVICE1: COM_SERVICE; (*ФБ открытия порта*)

Buffer: ARRAY[0..255] OF BYTE; (* байтовый буфер данных *)

cmpl: BOOL; (* признак завершения операции *)

port_opened: BYTE := 0; (*состояние порта*)

Init: BOOL; (* признак инициализации пользовательской программы *)

Settings:COMSETTINGS; (* настройки последовательного порта *)

com_num: PORTS:=1; (*0 — RS-485, 1 — RS-232*)

enabl: BOOL; (*состояние работы блока*)

err: INT; (*номер ошибки*)

TimeOut: TIME:=T#50ms; (*таймаут*)

Exception: BYTE;

DataSize: WORD;

master1: BYTE;

t: DWORD; (*переменная для организации счетчика*)

A: WORD := 0; (*счетчик*)

f1:DINT:=65; (*Записываемый параметр типа DINT*)

f2:REAL:=12.7; (*Записываемый параметр типа REAL*)

ptr_f2:POINTER TO BYTE;

END_VAR

(*Организуем счетчик, что бы передавать эти данные по сети*)

t:=t+1;

IF (t MOD 1000)=0 THEN

A := A + 1;

IF A > 9999 THEN

A := 0;

END_IF

(*Устанавливаем настройки COM-порта*)

IF port_opened=0 THEN

Settings.Port:=com_num; (*номер COM-порта*) Описание интерфейса библиотеки ФБ для работы с протоколом Modbus

Settings.dwBaudRate:=115200; (*скорость*)

Settings.byParity:=0;

Settings.dwTimeout:=0;

Settings.byStopBits:=0;

Settings.dwBufferSize:=0;

Settings.dwScan:=0;

END_IF

(*Открываем COM-порт*)

COM_SERVICE1(Enable:=(port_opened=0) , Settings:=Settings , Task:=OPEN_TSK );

(*Если COM-порт открыт, то переходим к приему и передачи данных *)

IF COM_SERVICE1.ready THEN

port_opened:=2;

END_IF

IF port_opened=2 THEN (*Удачно проинициализировали*)

CASE master1 OF

0: (* функция 06 — запись параметра типа Int в прибор с адресом 1 в регистр 0*)

send1_modbus(

Enable:=enabl , (* разрешение работы блока *)

Mode:=MB_ASCII , (*режим передачи*)

DevAddr:=1 , (*адрес*)

RegAddr:=0 , (*регистр*)

Value:=A, (*значение переменной, которое надо передать*)

ComHandle:= Settings.Port, (*номер сом-порта*)

TimeOut:=TimeOut , (*таймаут T#50ms*)

Complete=>cmpl , (* скопировать признак завершения операции *)

Exception=>err ); (* скопировать регистр ошибок *)

(*если установлен признак завершения операции, то *)

IF cmpl THEN

master1:=1; (*переходим к выполнению следующего блока*)

END_IF

1: (* функция 16 — запись параметров типа Int (регистр 4) и Real (регистр 6) в прибор с адресом 2 *)

(*запись в буффер параметра типа INT*)

Buffer[1] := DINT_TO_BYTE(f1);

Buffer[0] := DINT_TO_BYTE( SHR(f1,8));

Buffer[3] := DINT_TO_BYTE( SHR(f1,16));

Buffer[2] := DINT_TO_BYTE( SHR(f1,24));

(*запись в буффер параметра типа Float*)

ptr_f2:=ADR(f2);

buffer[5] := ptr_f2^;

ptr_f2:=ptr_f2+1;

21 Описание интерфейса библиотеки ФБ для работы с протоколом Modbus 22

buffer[4] := ptr_f2^;

ptr_f2:=ptr_f2+1;

buffer[7] := ptr_f2^;

ptr_f2:=ptr_f2+1;

buffer[6] := ptr_f2^;

send2_modbus(

Enable:= enabl, (* разрешение работы блока *)

Mode:=MB_ASCII , (*режим передачи*)

DevAddr:=2 , (*адрес*)

FirstAddr:= 4, (*номер регистра*)

Quantity:= 4, (*количество записываемых регистров*)

ComHandle:=Settings.Port ,(*номер сом-порта*)

TimeOut:=TimeOut , (*таймаут T#50ms*)

Buffer:=Buffer , (* буфер данных *)

Complete=>cmpl , (* скопировать признак завершения операции *)

Exception=>err , (* скопировать регистр ошибок *)

RegCnt=> DataSize); (*кол-во считанных байтов *)

(*если установлен признак завершения операции, то *)

IF cmpl THEN

master1:=0;(*переходим к выполнению следующего блока*)

END_IF

END_CASE

IF enabl = FALSE THEN

enabl := TRUE;

END_IF

IF err <> 0 THEN

enabl := FALSE;

END_IF

END_IF

Пример опроса параметров по RS-485

Пример на языке ST реализует работу по интерфейсу RS-485: чтение параметров типа Int и типа Real (Float) (функция Modbus 03 — MB_RD_HOLD_REGS), а также считывания трех параметров типа Int (функция Modbus 04 — MB_RD_INP_REGS). Для работы примера в PLC Configuration должны быть подключены библиотеки SisLibCom, Modbus, ComService.

PROGRAM PLC_PRG

VAR

get1_modbus: MB_RD_HOLD_REGS; (*функция 03 — чтение параметра типа INT*)

get2_modbus: MB_RD_INP_REGS; (*функция 04 — чтение трех параметров типа INT*)

get3_modbus: MB_RD_HOLD_REGS; (*функция 03 — чтение параметра типа Float*)

Buffer: ARRAY[0..255] OF BYTE; (* байтовый буфер данных *)

cmpl: BOOL;

port_opened: BYTE := 0;

Init: BOOL; (* признак инициализации пользовательской программы *)

Settings:COMSETTINGS;(* настройки последовательного порта *)

com_num: PORTS:=0; (*0 — RS-485, 1 — RS-232*)

enabl: BOOL; (*состояние работы блока*)

err: INT; (*номер ошибки*)

TimeOut: TIME:=T#50ms;(*таймаут*)

Exception: BYTE;

DataSize: WORD;

master1: BYTE:= 1;

t: DWORD; (*переменная для организации счетчика*)

A: WORD := 0; (*счетчик*)

x:WORD; (*считанное значение*)

x1: WORD; (*переменная для записи по сети*)

x2: WORD; (*переменная для записи по сети*)

x3: WORD; (*переменная для записи по сети*)

d: REAL; (*считанное значение*)

ptr_D:POINTER TO BYTE;

COM_SERVICE1: COM_SERVICE;

END_VAR

(*Организуем счетчик, что бы передавать эти данные по сети*)

t:=t+1;

IF (t MOD 1000)=0 THEN

A := A + 1;

IF A > 9999 THEN

A := 0;

END_IF

(*Устанавливаем настройки COM-порта*)

IF port_opened=0 THEN

Settings.Port:=com_num; (*номер COM-порта*)

Settings.dwBaudRate:=115200; (*скорость*)

Settings.byParity:=0;

Settings.dwTimeout:=0;

Settings.byStopBits:=0;

Settings.dwBufferSize:=0;

Settings.dwScan:=0;

END_IF

COM_SERVICE1(Enable:=(port_opened=0) , Settings:=Settings , Task:=OPEN_TSK );

(*Если COM-порт открыт, то переходим к приему и передачи данных *)

IF COM_SERVICE1.ready THEN

port_opened:=2;

END_IF

IF port_opened=2 THEN (*Удачно проинициализировали*)

CASE master1 OF

0: (* функция 03 инт — ФБ считывает значение параметра типа int из прибора с адресом 2 в регистр с номером 8 по протоколу Modbus-ASCII*)

get1_modbus(

Enable:=enabl , (* разрешение работы блока *)

Mode:=MB_ASCII , (*режим передачи*)

DevAddr:=2 , (*адрес*)

FirstAddr:=8 , (*номер регистра*)

Quantity:=1, (*количество регистров*)

ComHandle:=Settings.Port ,(*номер COM-порта*)

TimeOut:=TimeOut , (*Таймаут T#50ms*)

Buffer:=Buffer , (* буфер данных *)

Complete=>cmpl , (* скопировать признак завершения операции *)

Exception=>err , (* скопировать регистр ошибок *)

ByteCnt=>DataSize ); (*кол-во считанных байтов *)

(*если установлен признак завершения операции, то *)

IF cmpl THEN

IF err=0 THEN (*Если нет ошибок, то получаем данные из буфера типа INT*)

x:=BYTE_TO_WORD(BUFFER[1]) OR SHL(BYTE_TO_WORD(BUFFER[0]),8);

END_IF

master1:=1; (*переходим к выполнению следующего ФБ*)

END_IF

1: (* функция 03 флоат — ФБ считывает значение параметра типа

int из прибора с адресом 2 в регистр с номаром 10 по протоколу Modbus-ASCII *)

get3_modbus(

Enable:=enabl , (* разрешение работы блока *)

Mode:=MB_ASCII , (*режим передачи*)

DevAddr:=2 , (*адрес*)

FirstAddr:=10 , (*номер регистра*)

Quantity:=2, (*количество регистров*)

ComHandle:=Settings.Port ,(*номер COM-порта*)

TimeOut:=TimeOut , (*Таймаут T#50ms*)

Buffer:=Buffer , (* буфер данных *)

Complete=>cmpl , (* скопировать признак завершения операции *)

Exception=>err , (* скопировать регистр ошибок *)

ByteCnt=>DataSize ); (*кол-во считанных байтов *)

(*если установлен признак завершения операции, то *)

IF cmpl THEN

master1:=2;(*переходим к выполнению следующего ФБ*)

IF err=0 THEN (*Если нет ошибок, то получаем данные из буфера типа FLOAT*)

ptr_D:=ADR(d);

ptr_D^:=buffer[1];

ptr_D:=ptr_D+1;

ptr_D^:=buffer[0];

ptr_D:=ptr_D+1;

ptr_D^:=buffer[3];

ptr_D:=ptr_D+1;

ptr_D^:=buffer[2];

END_IF

END_IF

2: (* функция 04 инт — ФБ считывает значения трех параметров типа Int из прибора с адресом 2 начиная с регистра с номeром 12*)

get2_modbus(

Enable:= enabl, (* разрешение работы блока *)

Mode:=MB_ASCII , (*режим передачи*)

DevAddr:=2 , (*адрес*)

FirstAddr:=12 , (*номер регистра*)

Quantity:=6 , (*количество регистров*)

ComHandle:= Settings.Port,(*номер COM-порта*)

TimeOut:=TimeOut , (*Таймаут T#50ms*)

Buffer:=Buffer , (* буфер данных *)

Complete=>cmpl , (* скопировать признак завершения операции *)

Exception=>err , (* скопировать регистр ошибок *)

ByteCnt=> DataSize); (*кол-во считанных байтов *)

(*если установлен признак завершения операции, то *)

IF cmpl THEN

IF err=0 THEN (*Если нет ошибок, то получаем данные из буфера типа INT*)

x1:=BYTE_TO_WORD(BUFFER[1]) OR SHL(BYTE_TO_WORD(BUFFER[0]),8);

x2:=BYTE_TO_WORD(BUFFER[5]) OR SHL(BYTE_TO_WORD(BUFFER[4]),8);

x3:=BYTE_TO_WORD(BUFFER[9]) OR SHL(BYTE_TO_WORD(BUFFER[8]),8);

END_IF

master1:=0;(*переходим к выполнению следующего ФБ*)

END_IF

END_CASE

IF enabl = FALSE THEN

enabl := TRUE;

END_IF

IF err <> 0 THEN

enabl := FALSE;

END_IF

END_IF

Подключение модуля МВ110-224.8ДФ к СПК -207 (часть 2)

Создание программы опроса модуля в СПК 207

 

Программа СПК 207 создается в программном обеспечении CoDeSys версии 3.4. С порядком программирования СПК 207 можно ознакомиться в документе «СПК 207. Руководство по эксплуатации».

Создадим новый проект выбором команды Пуск | Программы | 3S CoDeSys | CoDeSys.3.4 запустить CoDeSys. Откроется главное окно программы (см. рисунок 6).

Рисунок 6 Главное окно CoDeSys 3.4

Выбором команды File | New Project или нажатием кнопки «New Project» () панели инструментов главного окна CoDeSys – открыть окно создания нового проекта «New Project».

В окне создания нового проекта «New Project» – в поле «Name» задать наименование нового проекта и выбрать размещение файла проекта (в поле «Location»; выбор папки производится в стандартном окне выбора каталога «Обзор папок», открывающемся при нажатии кнопки с тремя точками, расположенной у правого края поля). В этом же окне, в поле «Categories» – указать категорию нового проекта («General»), в поле «Templates» – указать шаблон нового проекта («Standard Project»). Нажать кнопку «OK» окна. Окно «New Project» закроется, откроется окно задания характеристик проекта «Standart Project».

В окне задания характеристик проекта «Standard Project» (см. рисунок 7) в поле «Device» – выбрать требуемый целевой файл, в рассматриваемом случае – «OWEN SPC2xx.03.tw (Owen)». Целевой файл должен быть предварительно инсталлирован в CoDeSys. В поле «PLC_PRG in:» необходимо выбрать требуемый язык программирования (в данном случае – Continuous Function Chart, CFC).

Для принятия выбранных настроек нажать кнопку «OK» окна. Окно «Standard Project» закроется, откроется главное окно CoDeSys с деревом нового проекта, отображающимся в левой части окна.

Рисунок 7. Окно задания характеристик проекта «Standard Project»

В главном окно CoDeSys с деревом нового проекта необходимо добавить в проект библиотеки функциональных блоков «ModulsOwenLib» (файл «ModulsOwenLib.library») и ModBus (файл «ModBus.library»). Результат операции представлен на рисунке 8.

 

Рисунок 8. Окно Library Manager после добавления служебных библиотек Modbus и ModusOwenLib

Из добавленной библиотеки «ModulsOwenLib» в программу включаются 3 функциональных блока: блоки «МV110_8D_inputs» и «МV110_8D_counter» для опроса модуля, а также блок «ComConn» для открытия COM-порта. Для включения требуемого функционального блока в текст программы необходимо выделить в дереве проекта строку PLC_PRG, перейти на вкладку «PLC_PRG» и добавить в текст программы модуль типа «Box» (см. рисунок 9, а, б). После этого – выделить строку «???» в изображении блока (см. рисунок 9, в). Справа от строки активируется белая кнопка. По нажатию этой кнопки открывается окно «Input Assistant» (см. рисунок 8).

а) б) в)

Рисунок 9.  Добавление функционального блока в проект

 

В окне «Input Assistant» (см. рисунок 10) следует выделить требуемый блок, и нажать кнопку «OK» окна (операция проводится индивидуально для каждого блока).

Рисунок 10 Выбор функционального блока в окне «Input Assistant»

Результат выбора блока «ComConn» отображен на рисунке 11.

Рисунок 11 Блок «ComConn» в тексте PLC_PRG

Для использования в программе блокам необходимо присвоить имена и задать переменные блока в области определения переменных программы. Для этого следует выделить строчку «???» (наименование блока), задать наименование блока (например, «CON») и нажать клавишу «Enter». Откроется окно определения переменных «Auto Declare» (см. рисунок 12). В этом окне, не производя изменений, следует нажать кнопку «OK». Окно «Auto Declare» закроется, а в области определения переменных отобразится применяемый блок (см. рисунок 13).

Для использования в программе модуля МВ110-8ДФ используется блоки  MV110_8D_INPUTS и MV110_8D_COUNTER, отображающие входы и счетчики модуля соответственно. Их добавление в программу  и определение их переменных производится аналогично блоку ComConn.

 

Рисунок 12 Окно определения параметров блока «Auto Declare»

 

Рисунок 13 Блок «ComConn» в программе PLC_PRG после задания имени

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

Структура блока «ComConn» приведена на рисунке 13.

Входы блока «ComConn»( значения по умолчанию выделены подчеркиванием[1]):

«Enable» – разрешение работы (TRUE, FALSE);

«PortNum» – номер порта на ПЛК[2];

«PortBaudrate» – скорость (2400, 4800, 9600, 19200, 38400, 57600, 115200);

«PortParity» – четность (0 – нет, 1 – нечет, 2 – чет; значение по умолчанию – 0);

«PortStopBits» – число стоп-бит (1 – 1 бит, 2 – 1,5 бита, 3 – 2 бита);

«PortByteSize» – размер посылки (8 бит, 11 бит).

«Port_Mode» — выбор режима работы порта СПК (2- RS-485; 0 – RS-232);

«Port_ModeOn» — включение функции открытия порта (TRUE, FALSE)

«Port_CloseOn» — включение функции закрытия порта (TRUE, FALSE)

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

«Handle» – идентификатор открытого порта (если распознается ошибка — порт занят-  то на выход подается сигнал «FFFFFFFF»);

«Done» – флаг завершения операции;

«ErrCode» – код ошибки.

 

Структура блока MV110_8D_INPUTS приведена на рис.14.

Рисунок 14 Структура блока MV110_8D_INPUTS

Входы блока «MV110_8D_INPUTS» (значения по умолчанию выделены подчеркиванием):

«Handle» – идентификатор порта;

«Enable» – разрешение работы (TRUE, FALSE);

«Modd» — режим работы ModBus (MB_RTU, MB_ASCII);

«Addr» — адрес прибора в сети (0-127, по умолчанию 16);

«TimeOut» — таймаут при опросе по сети (по умолчанию 100мс);

«ErCl» — число перезапусков (по умолчанию 3);

 

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

«inp1-8» — состояние входов 1-8;

«wErrCode» — код ошибки;

«Done» — флаг завершения операции.

Структура блока MV110_8D_INPUTS приведена на рис.14.

 

Рисунок 15 Структура блока MV110_8D_counter

Входы блока «MV110_8D_counter» (значения по умолчанию выделены подчеркиванием):

«Handle» – идентификатор порта;

«Enable» – разрешение работы (TRUE, FALSE);

«Modd» — режим работы ModBus (MB_RTU, MB_ASCII);

«Addr» — адрес прибора в сети (0-127, по умолчанию 16);

«TimeOut» — таймаут при опросе по сети (по умолчанию 100мс);

«ErCl» — число перезапусков (по умолчанию 3);

 

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

«cnt1-8» — состояние счетчиков входов 1-8;

«wErrCode» — код ошибки;

«Done» — флаг завершения операции.

Программа опроса входов блока МВ110-8ДФ приведена на рис. 14. В ней используется обратная связь (Done→And) для организации непрерывного опроса состояния входов прибора.

Рисунок 16 Программа опроса входов модуля МВ110-8ДФ

Программа  в режиме работы с включенным 4 входом прибора приведена на рис.17.

Рисунок 17. Кадр работы программы опроса модуля МВ110-8ДФ – включен 4 вход.

 

Программа для отображения значения счетчиков приведена на рис.18.

Рисунок 18. Программа опроса счетчиков входов модуля МВ110-8ДФ

Рисунок 19 Кадр работы программы опроса модуля МВ110-8ДФ – подключен 4 вход.

 

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

Рисунок 20 Программа опроса входов и счетчиков МВ110-8ДФ в одном проекте

Рисунок 21 Кадр работы программы опроса входов и счетчиков модуля МВ110-8ДФ

 

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

[2] По умолчанию порт№1 – debug, порт№2 – com1 и т.д.

 

    Подключение модуля МВ110-224.8ДФ к СПК -207 (часть 1)

    Конфигурация модуля в программе «Конфигуратор М110»

     

    Перед подключением прибора Мх110 к СПК 207 необходимо произвести настройку модуля. Для этого подключим Мх110 к ПК с использованием преобразователя интерфейса. В этом примере использовался преобразователь интерфейса ОВЕН АС4. После установки соответствующего программного обеспечения преобразователь интерфейса должен отображаться в Диспетчере устройств (рис.1).

    Рисунок 1 Диспетчер устройств ПК (выделен преобразователь интерфейса ОВЕН АС-4)

    Считывание, изменение и запись параметров прибора осуществляется с помощью программы «Конфигуратор М110». Информация о работе с программой «Конфигуратор М110» представлена в руководстве пользователя на диске, поставляемом в комплекте с прибором.

    Перед конфигурированием необходимо определить настройки связи в окне, вид которого представлен на рис.2.

    Рисунок 2 Настройки связи

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

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

    • отключить питание МВ110;
    • открыть заглушку на лицевой панели прибора;
    • установить перемычку JP2 в положение «Замкнуто»; при этом прибор работает с заводскими значениями сетевых параметров, но в его памяти сохраняются установленные ранее значения сетевых параметров;
    • включить питание;
    • запустить программу «Конфигуратор М110»;
    • в окне установки связи задать значения заводских сетевых параметров (в соответствии с данными табл. 4.2) или нажать кнопку «Заводские сетевые настройки». Связь с прибором установится с заводскими значениями сетевых параметров;
    • считать значения сетевых параметров прибора, выбрав команду Прибор | Считать все параметры или открыв папку Сетевые параметры;
    • зафиксировать на бумаге значения сетевых параметров прибора, которые были считаны;
    • закрыть программу «Конфигуратор М110»;
    • отключить питание прибора;
    • снять перемычку JP2;
    • закрыть заглушку на лицевой панели прибора;
    • подключить питание прибора и запустить программу «Конфигуратор М110»;
    • установить зафиксированные ранее значения параметров в Окне установки связи с прибором;
    • нажать кнопку Установить связь и проверить наличие связи с прибором, выбрав команду Прибор | Проверить связь с прибором.

     

    Заводские настройки связи для модуля МВ110-224.8ДФ приведены в табл.1, перемычка JP2 показана на рис.3.

     

    Таблица 1. Заводские значения сетевых параметров прибора

    Параметр Описание Заводская установка
    bPS Скорость обмена данными, бит/с 9600
    LEn Длина слова данных, бит 8
    PrtY Тип контроля четности слова данных отсутствует
    Sbit Количество стоп-битов в посылке 1
    A.Len Длина сетевого адреса, бит 8
    Addг Базовый адрес прибора 16
    Prot Протокол обмена ОВЕН
    Rs.dl Задержка ответа по сети RS-485, мсек 2

     

    Рисунок 3 Общий вид МВ 110-224.8ДФ (обведено положение перемычки JP2)

    В случае успешного соединения ПК с модулем Мх110 открывается основное окно конфигуратора (рис.4). Измененные параметры подсвечены зеленым. Для записи их в прибор используйте кнопку  Записать измененные или кнопку  Записать.

    Рисунок 4 Конфигурация модуля МВ 110-224.8ДФ

    В режиме реального времени можно проверить работоспособность входов и просмотреть значения счетчиков, нажав кнопку (рис.5).

    Рисунок 5 Состояние входов и счетчики модуля в конфигураторе

    На этом конфигурация модуля завершена.

     

      Подключение модуля МВА 8 к СПК -207(часть 2)

      Создание программы опроса модуля в СПК 207

       

      Программа СПК 207 создается в программном обеспечении CoDeSys версии 3.4. С порядком программирования СПК 207 можно ознакомиться в документе «СПК 207. Руководство по эксплуатации».

      Создадим новый проект выбором команды Пуск | Программы | 3S CoDeSys | CoDeSys.3.4 запустить CoDeSys. Откроется главное окно программы (см. рисунок 3).

      Рисунок 3 Главное окно CoDeSys 3.4

      Выбором команды File | New Project или нажатием кнопки «New Project» () панели инструментов главного окна CoDeSys – открыть окно создания нового проекта «New Project».

      В окне создания нового проекта «New Project» – в поле «Name» задать наименование нового проекта и выбрать размещение файла проекта (в поле «Location»; выбор папки производится в стандартном окне выбора каталога «Обзор папок», открывающемся при нажатии кнопки с тремя точками, расположенной у правого края поля). В этом же окне, в поле «Categories» – указать категорию нового проекта («General»), в поле «Templates» – указать шаблон нового проекта («Standard Project»). Нажать кнопку «OK» окна. Окно «New Project» закроется, откроется окно задания характеристик проекта «Standart Project».

      В окне задания характеристик проекта «Standard Project» (см. рисунок 4) в поле «Device» – выбрать требуемый целевой файл, в рассматриваемом случае – «OWEN SPC2xx.03.tw (Owen)». Целевой файл должен быть предварительно инсталлирован в CoDeSys. В поле «PLC_PRG in:» необходимо выбрать требуемый язык программирования (в данном случае – Continuous Function Chart, CFC).

      Для принятия выбранных настроек нажать кнопку «OK» окна. Окно «Standard Project» закроется, откроется главное окно CoDeSys с деревом нового проекта, отображающимся в левой части окна.

      Рисунок 4. Окно задания характеристик проекта «Standard Project»

      В главном окно CoDeSys с деревом нового проекта необходимо добавить в проект библиотеки функциональных блоков «ModulsOwenLib» (файл «ModulsOwenLib.library») и ModBus (файл «ModBus.library»). Результат операции представлен на рисунке 5.

      Рисунок 5. Окно Library Manager после добавления служебных библиотек Modbus и ModusOwenLib

      Из добавленной библиотеки «ModulsOwenLib» в программу включаются 2 функциональных блока: блок «МVA8_inputs» для опроса модуля, а также блок «ComConn» для открытия COM-порта. Для включения требуемого функционального блока в текст программы необходимо выделить в дереве проекта строку PLC_PRG, перейти на вкладку «PLC_PRG» и добавить в текст программы модуль типа «Box» (см. рисунок 6, а, б). После этого – выделить строку «???» в изображении блока (см. рисунок 6, в). Справа от строки активируется белая кнопка. По нажатию этой кнопки открывается окно «Input Assistant» (см. рисунок 7).

       

      а)  б) в)

      Рисунок 6.  Добавление функционального блока в проект

       

      В окне «Input Assistant» (см. рисунок 7) следует выделить требуемый блок, и нажать кнопку «OK» окна (операция проводится индивидуально для каждого блока).

       

      Рисунок 7 Выбор функционального блока в окне «Input Assistant»

      Результат выбора блока «ComConn» отображен на рисунке 8.

      Рисунок 8 Блок «ComConn» в тексте PLC_PRG

      Для использования в программе блокам необходимо присвоить имена и задать переменные блока в области определения переменных программы. Для этого следует выделить строчку «???» (наименование блока), задать наименование блока (например, «CON») и нажать клавишу «Enter». Откроется окно определения переменных «Auto Declare» (см. рисунок 9). В этом окне, не производя изменений, следует нажать кнопку «OK». Окно «Auto Declare» закроется, а в области определения переменных отобразится применяемый блок (см. рисунок 10).

      Для использования в программе модуля МВА8 используется блок  MVA8_INPUTS, отображающие входы модуля. Его добавление в программу  и определение его переменных производится аналогично блоку ComConn.

      Рисунок 9 Окно определения параметров блока «Auto Declare»

      Рисунок 10 Блок «ComConn» в программе PLC_PRG после задания имени

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

      Структура блока «ComConn» приведена на рисунке 10.

      Входы блока «ComConn»( значения по умолчанию выделены подчеркиванием[1]):

      «Enable» – разрешение работы (TRUE, FALSE);

      «PortNum» – номер порта на ПЛК[2];

      «PortBaudrate» – скорость (2400, 4800, 9600, 19200, 38400, 57600, 115200);

      «PortParity» – четность (0 – нет, 1 – нечет, 2 – чет; значение по умолчанию – 0);

      «PortStopBits» – число стоп-бит (1 – 1 бит, 2 – 1,5 бита, 3 – 2 бита);

      «PortByteSize» – размер посылки (8 бит, 11 бит).

      «Port_Mode» — выбор режима работы порта СПК (2- RS-485; 0 – RS-232);

      «Port_ModeOn» — включение функции открытия порта (TRUE, FALSE)

      «Port_CloseOn» — включение функции закрытия порта (TRUE, FALSE)

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

      «Handle» – идентификатор открытого порта (если распознается ошибка — порт занят-  то на выход подается сигнал «FFFFFFFF»);

      «Done» – флаг завершения операции;

      «ErrCode» – код ошибки.

       

      Структура блока MVA8_INPUTS приведена на рис.11.

      Рисунок 11 Структура блока MVA8_INPUTS

      Входы блока «MVA8_INPUTS» (значения по умолчанию выделены подчеркиванием):

      «Handle» – идентификатор порта;

      «Enable» – разрешение работы (TRUE, FALSE);

      «Modd» — режим работы ModBus (MB_RTU, MB_ASCII);

      «Addr» — адрес прибора в сети (0-127, по умолчанию 16);

      «TimeOut» — таймаут при опросе по сети (по умолчанию 100мс);

      «ErCl» — число перезапусков (по умолчанию 3);

       

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

      «inp1-8» — состояние входов 1-8;

      «inpExcSCode1-8» – код исключительной ситуации 1-8 канала;

      «wErrCode» — код ошибки;

      «Done» — флаг завершения операции.

      Создадим программу опроса входов модуля МВА8 с периодом опроса входов в 5 секунд.

      В программу для этого следует добавить таймером ТР (генератор импульса заданной продолжительности) и несколькими логическими операторами. Вид готовой программы опроса приведен на рисунке 12.

      Рисунок 12 Программа опроса модуля МВА8 для СПК 207

      Кадр запущенной программы представлен на рис.13

      Рисунок 13 Кадр программы опроса модуля МВА8 для СПК 207

       

       

       


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

      [2] По умолчанию порт№1 – debug, порт№2 – com1 и т.д.

       

        Подключение модуля МВА 8 к СПК -207(часть 1)

        Конфигурирование модуля МВА8

        Конфигурирование модуля ввода аналогового измерительного МВА8 (задание значений параметров, определяющих работу МВА8) производится с помощью программы «Конфигуратор МВА8» и включает настройку сетевых параметров и сетевого интерфейса модуля.

        Подробно процедура конфигурирования МВА8 описана в документе «РЭ МВА8».

        Для конфигурирования МВА8 следует:

        1) подключить МВА8 через адаптер интерфейса RS-485 ОВЕН АС3 (или аналогичный) к ПК;

        2) подключить к МВА8 питание;

        3) запустить на ПК программу «Конфигуратор МВА8» (см. п. 6.1.1 РЭ МВА8);

        4) установить связь программы с МВА8 (см. п. 6.1.2 РЭ МВА8).

        5) открыть конфигурацию из файла (см. п. 6.2.2 РЭ МВА8) или создать новую (см. п. 6.2.1 РЭ МВА8);

        6) задать для каждого используемого входа тип датчика, период опроса и другие характеристики (см. п. 3.1 РЭ МВА8);

        7) для активных датчиков – задать верхнюю и нижнюю границы измеряемого диапазона (см. п. 3.2 РЭ МВА8);

        8) при использовании термопар, – включить режим компенсации ЭДС холодного спая термопары (см. п. 3.2 РЭ МВА8);

        9) записать конфигурацию в прибор (см. п. 6.2.5 РЭ МВА8); при необходимости – сохранить конфигурацию в файл (см. п. 6.2.6 РЭ МВА8).

        Сетевые настройки МВА8, используемого для опроса программируемым логическим контроллером СПК 207, приведены на рис. 1.

        Рисунок 1 Сетевые настройки прибора МВА8

        Конфигурация модуля в рассматриваемой задаче осуществлялась следующим образом:

        1) подключить к входу №1 прибора датчик температуры типа ТХК (L);

        2) задать для параметра «Тип датчика» входа №1 значение ТХК (L); остальные входы прибора в примере не используются, и для параметров «Тип датчика» входов №№2-8 следует задать значение «Датчик отключен» (см. рисунок 2);

        3) записать в прибор заданные значения параметров;

        4) выйти из программы — конфигуратора;

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

        На рисунке 2 показаны значения основных параметров прибора.

        Рисунок 2. Конфигурация МВА8

         

         

        P.S. Электронные сигареты — незаменимая вещь для тех, кто решил навсегда «завязать» травить себя ядовитым дымом.  С помощью данного удивительного «девайса» — вы перестанете травить свой организм и сохраните здоровье.

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

          Пример программы работы с архивом.

          Рассмотрим простейшую программу архивирования на СПК 207. Создадим программу инкрементации и декрементации переменных, как показано на рис.1.

          Рисунок 1 Программа преобразования переменных для архивации

          Для организации данных, записываемых в архив, добавим в программу элемент GetData. Наиболее удобным способом добавления блока является использование инструмента Ассистента ввода, как это показано на рис.2

          Рисунок 2 Добавление в проект функционального блока GetData

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

          Рисунок 3 Добавление функционального блока GetData в раздел переменных проекта

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

          Рисунок 4 Добавление в проект функционального блока GetData

          Для добавленного экземпляра функционального блока WriteData необходимо назначить имя экземпляра. Пример такого назначения показан на рис.5.

          Рисунок 5 Добавление функционального блока GetData в раздел переменных проекта

          Создадим архив с именем ar1, размещенный по адресу var/log, в котором будут содержаться данные об изменении переменной ink. Необходимая для этого комбинация входных сигналов приведена на рис.6. Запись производится по переходу в True переменной zap.

          Рисунок 6 Организация архивирования переменной Ink в архив с адресом /var/log/

          На рис.7 приведен кадр работы программы архивирования после загрузки проекта в СПК 207. После ее остановки можно просмотреть содержимое архива.

          Рисунок 7 Кадр работы программы архивирования переменной Ink в архив с адресом /var/log/

          Для просмотра архивов на СПК 207 можно использовать бесплатное программное обеспечение WinSCP . Для организации связи окна программы WinSCP необходимо задать настройки связи так, как показано на рис.8. В пункте меню Host name задается IP-адрес СПК, в пункте User name вводится root[1]. В качестве файлового протокола обязательно выбрать SCP.

          Рисунок 8 Настройки подключения для связи СПК и WinSCP

          Для соединения с СПК 207 нажмите кнопку Login и в появившемся диалоговом окне введите пароль, который был задан в настройках связи (рис.8). После этих действий открывается окно внутренней памяти СПК 207. В этом окне можно выбрать папку var/log, как это показано на рис.9. В этой папке будет размещен архив, созданный в процессе выполнения программы.

          Рисунок 9 Размещение архива во внутренней памяти СПК 207

          При просмотре архива в случае больших его размеров может быть отображено окно рис.10, в котором показаны примерные сроки завершения операции открытия архива.

          Рисунок 10 Окно времени открытия архива

          Вид архива представлен на рис.11. Обратите внимание на то, что отображение числовых переменных производится в 16-ричной системе нумерации. Каждая запись в архиве состоит из даты (в формате год: месяц: день), времени (в формате час: мин: сек) и значения переменной ink. В рассмотренном примере производится запись каждый цикл работы СПК с момента включения записи с помощью переменной zap. Допустимо использовать временные задержки для записи переменных в архив.

          Рисунок 11 Архив переменной ink

          В одном архиве можно хранить значения сразу нескольких переменных разного типа. На рис.12.  приведен пример проекта для архивации 3 переменных – ink и dec типа Word и переменной Stroka типа String. Последняя переменная добавлена в проект с присвоением начального значения var ink,dec’ и используется только в процедуре архивирования. Обратите внимание на то, что для сохранения данных в одном архиве используется для всех 3 переменных один и тот же экземпляр функционального блока GetData с именем data1.

          Рисунок 12 Проект архивирования значений 3 переменных

          Результатом работы проекта будет создание архива с именем ar13 по адресу var/log, который будет содержать значения 3 переменных. Вид такого архива показан на рис.13.

          Рисунок 13 Отображение переменных в архиве (столбцы архива подписаны)

          Переменные в архиве размещены в соответствии с очередностью записи в архив: #000 – ink, #001 – dec, #002 – stroka.


          [1] Изменение этой настройки и ввод любого другого имени недопустим и приведет к невозможности установления связи СПК и программы WinSCP.