PDA

Просмотр полной версии : ПЛК110-32 + МВ110-8АС



myles
27.01.2012, 10:55
Здравствуйте. Я новичок в этом деле, поэтому вопрос может показаться глупым, но всё же)
Как подключить ПЛК110-32 и модуль ввода МВ110-8АС. Читал инструкцию, и понял, что их нужно соединять через выходы А и В. Сделал это, но всё равно ничего не произошло, RS-485 на модуле не загорелся. Может его как - то по другому к ПЛК надо подключать? Может посоветуете какой - то пример программы для ПЛК для опроса модуля?

capzap
27.01.2012, 11:16
http://kipshop.ru/Primeri/Modules/05._Samples_MX110+PLC.zip посмотрите такой пример

myles
01.02.2012, 11:09
Спасибо, попробую!

myles
01.02.2012, 11:34
При запуске примера пишет "Файл описания модуля Module.Root не найден". Я так понимаю это из - за отсутствия какой - то из библиотек? Библиотеки качал отсюда - http://www.owen.ru/catalog/67395347
И ещё, должны - ли гореть лампочки RS 485 если модуль соединён с ПЛК, но не был соединён с ПК?

capzap
01.02.2012, 12:28
у Вас таргеты не совпадают, если отсутсвуют какие либо библиотеки, КДС выдает дополнительное окошко, где перечисляет каких библиотек нехватает

myles
02.02.2012, 18:14
Стоит таргет 2.10, это получается, что мне нужно опустить его до нужного примера, у которого 2-02-4?
И тогда ещё один вопрос. Нужно написать программу, по которой бы ПЛК считывал информацию о напряжении с модуля ввода, и в соответствии поднимал и опускал или бы просто держал на заданном уровне значения механизм вертикального перемещения. С помощью каких команд это можно выполнить? Подключение самого модуля к ПЛК вроде бы прочитал как осуществить. Осталось программу)
Спасибо заранее!

capzap
02.02.2012, 18:25
нет, конкретный ПЛК используемый в примере у Вас не установлен
То что Вы описали по второму вопросу, это обычное регулирование, ищите в поиске и в документации все что связано со словом PID

myles
06.02.2012, 12:31
А с помощью обычного IF ELSE и т.д. такое выполнить не возможно?

capzap
06.02.2012, 16:51
можно, именно из таких простых команд и состоят ФБ ПИД-регуляторов

myles
12.02.2012, 23:32
Спасибо, с модулем ввода разобрался.
Чтобы отдельную тему не создавать, задам вопрос про модуль вывода. С какой частотой могут включаться и выключаться выходы? И можно - ли задавать не скважность, а именно частоту?

Александр Приходько
13.02.2012, 12:49
Зависит от конкретного модуля. У всех модулей серии мх есть возможнось управления битовой маской. В этом случае вы просто отправляете маску состояний (включено/выключено).
Частота зависит от типа выхода (реле, транзисторный или что-то другое) и конкретного блока.

myles
22.02.2012, 10:57
Спасибо, разобрался!
Теперь такой вопрос)
Можно - ли каким - то образом в Кодесисе задать запоминание значения измерения в первую секунду измерения например? Т.е., чтобы в самом начале процесса ПЛК запоминал результат измерения, а потом, в дальнейшем процессе, изменял положение механизма относительно этого измерения?

swerder
22.02.2012, 11:04
можно
var
хранимое_значение : real :=0.0;
in_real : real; (*значение из модуля ввода*)
end_var
_________
if хранимое_значение = 0.0 then
хранимое_значение := in_real;
end_if;
...

capzap
22.02.2012, 11:16
IF flag AND flag<>oldFlaf THEN
(* запоминание чего либо или инициализация *)

END_IF
oldFlag:=flag;
новое запоминание или инициализацию можно совершить следующим кодом где то в программе flag:=NOT flag;

myles
27.02.2012, 12:39
С flag немного не разобрался( Пишет ошибку неизвестный тип flag


можно
var
хранимое_значение : real :=0.0;
in_real : real; (*значение из модуля ввода*)
end_var
_________
if хранимое_значение = 0.0 then
хранимое_значение := in_real;
end_if;
...

А поэтому примеру написал следующее:

var
izm1 AT %QD7.1.1: REAL;
in_real : REAL;
end_var

if izm1 = 0.0 then
izm1 := in_real;
end_if

if izm1>in_real THEN
DO1:=TRUE; (*включение механизма*)
END_IF

Правильно?

capzap
27.02.2012, 12:43
условие по сути булевая переменная, добавте

...
oldFlag:BOOL;
flag:BOOL
END_VAR

flag:= какое нибудь условие, например сравнение температур
IF flag AND flag<>oldFlag THEN
(* запоминание чего либо или инициализация *)

END_IF
oldFlag:=flag;

swerder
27.02.2012, 14:31
если это значение у вас из модуля ввода

izm1 AT %QD7.1.1: REAL;


то неправильно. входному значению нельзя присваивать другое значение.

myles
28.02.2012, 10:51
Да, значение из модуля ввода. А как тогда правильно? Я подозреваю вот здесь if izm1 = 0.0 then нужно вместо 0.0 другое значение поставить? или вообще никакого значения не ставить?

swerder
28.02.2012, 11:38
я бы вам посоветовал все же определиться с тем, что вы хотите в итоге;)
если вам надо это


Можно - ли каким - то образом в Кодесисе задать запоминание значения измерения в первую секунду измерения например? Т.е., чтобы в самом начале процесса ПЛК запоминал результат измерения, а потом, в дальнейшем процессе, изменял положение механизма относительно этого измерения?
то смотрите пост #13 этой темы. идея там описана, нужна точная задержка по времени - привяжите в условие таймер.
а это, извините, полная бессмыслица

var
izm1 AT %QD7.1.1: REAL;
in_real : REAL;
end_var

if izm1 = 0.0 then
izm1 := in_real;
end_if

myles
29.02.2012, 11:38
Да, именно это и надо)
Я согласен, что бессмыслица, потому что ещё не разобрался... Мне нужно, чтобы хранимое значение = измерение с модуля ввода. Чтобы оно записывалось в первую секунду измерения, а затем полученные измерения сравнивались с ним, и уже относительно разницы между измерениями включался механизм. Так вот какую переменную нужно задать для записи этого значения?

swerder
29.02.2012, 11:56
если вы про тип переменной, то тип должен совпадать с типом входной от модуля ввода, если вы про retain / не retain - решайте сами, зависит от ее функциональности.

capzap
29.02.2012, 12:22
это что за такие механизмы, которые должны раз в секунду запоминать значение, а в течении остальных 999 миллисекунд, включатся и выключатся в зависимости от условий? :) Поставте повторяющийся таймер или блинк на одну секунду и по фронту сигнала от него запоминайте значение, которое будете сравнивать с текущими значениями

swerder
29.02.2012, 12:24
я так понял, что контроллер вообще лишь 1 раз перед началом процесса запоминает значение, а потом пляшет от него:)

myles
03.03.2012, 15:29
Да, в самом начале процесса он запоминает значение, а уже в течении оставшегося процесса оно отталкивается от того одного значения, которое оно запомнило.
С переменной я догадывался, что должна совпадать с той, которую я назначил в модуле ввода.
А с помощью какой команды значение этой перемены запоминается? Именно в первую секунду измерения?

swerder
05.03.2012, 09:15
либо так

var
хранимое_значение : real :=0.0;
in_real : real; (*значение из модуля ввода*)
end_var
_________
if хранимое_значение = 0.0 then
хранимое_значение := in_real;
end_if;
либо так

var
запоминание_было : bool := false;
хранимое_значение : real;
in_real : real; (*значение из модуля ввода*)
end_var
_________
if not запоминание_было then
хранимое_значение := in_real;
запоминание_было := true; (* произошло запоминание, больше запоминаться не будет до перезагрузки ПЛК *)
end_if;