Tag Archives: ПЛК 63

Опрос модуля МВА 8 с ПЛК63

Пример на языке 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 по протоколу ОВЕН

Пример на языке 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

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, (*индекс параметра*)

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

 

 

Конфигурация ОВЕН ПЛК 63 для связи с модулем МДВВ

В отличие от своих старших братьев – линейки ОВЕН ПЛК 1ХХ, ПЛК 63 не имеет такого замечательного инструмента подключения дополнительных модулей как Univercal modbus device. Это вызывает некоторые проблемы с расширением числа входов-выходов этого устройства. Есть конечно модуль МР1 и в большинстве приложений набора ПЛК63+МР1 достаточно, но отнюдь не везде и не всегда.

Решением задачи является написание специализированного программного модуля позволяющего через работу с  портами опрашивать и управлять модулем дискретного ввода-вывода МДВВ программно. Основные этапы создания этой программы Вы можете наблюдать ниже.

Итак, этап 1. Создадим подпрограмму для модуля МДВВ и назовем ее например PLC_Modbus.

Входами программы будут параметры связи (№ slave- устройства и скорость обмена) и параметры входов устройства

Выходными переменными будут счетчики и собственно входы устройства

Для реализации алгоритма нам понадобятся специализированные функции Modbus для работы с портом.

На этом завершим описание области переменных.

Программа открытия Com-порта представлена ниже.

Производим запись значений ШИМ программно.

Читаем состояние входов:

Опрашиваем счетчики по входам.

Ну и обязательная проверка на ошибки

Ну и наконец ниже показано как этот монстр выглядит при использовании в программе на языке LD.