Tag 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

Подключение модуля МВ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 и т.д.