Просмотр полной версии : ПЛК110-32 + МВ110-8АС
Здравствуйте. Я новичок в этом деле, поэтому вопрос может показаться глупым, но всё же)
Как подключить ПЛК110-32 и модуль ввода МВ110-8АС. Читал инструкцию, и понял, что их нужно соединять через выходы А и В. Сделал это, но всё равно ничего не произошло, RS-485 на модуле не загорелся. Может его как - то по другому к ПЛК надо подключать? Может посоветуете какой - то пример программы для ПЛК для опроса модуля?
http://kipshop.ru/Primeri/Modules/05._Samples_MX110+PLC.zip посмотрите такой пример
При запуске примера пишет "Файл описания модуля Module.Root не найден". Я так понимаю это из - за отсутствия какой - то из библиотек? Библиотеки качал отсюда - http://www.owen.ru/catalog/67395347
И ещё, должны - ли гореть лампочки RS 485 если модуль соединён с ПЛК, но не был соединён с ПК?
у Вас таргеты не совпадают, если отсутсвуют какие либо библиотеки, КДС выдает дополнительное окошко, где перечисляет каких библиотек нехватает
Стоит таргет 2.10, это получается, что мне нужно опустить его до нужного примера, у которого 2-02-4?
И тогда ещё один вопрос. Нужно написать программу, по которой бы ПЛК считывал информацию о напряжении с модуля ввода, и в соответствии поднимал и опускал или бы просто держал на заданном уровне значения механизм вертикального перемещения. С помощью каких команд это можно выполнить? Подключение самого модуля к ПЛК вроде бы прочитал как осуществить. Осталось программу)
Спасибо заранее!
нет, конкретный ПЛК используемый в примере у Вас не установлен
То что Вы описали по второму вопросу, это обычное регулирование, ищите в поиске и в документации все что связано со словом PID
А с помощью обычного IF ELSE и т.д. такое выполнить не возможно?
можно, именно из таких простых команд и состоят ФБ ПИД-регуляторов
Спасибо, с модулем ввода разобрался.
Чтобы отдельную тему не создавать, задам вопрос про модуль вывода. С какой частотой могут включаться и выключаться выходы? И можно - ли задавать не скважность, а именно частоту?
Александр Приходько
13.02.2012, 12:49
Зависит от конкретного модуля. У всех модулей серии мх есть возможнось управления битовой маской. В этом случае вы просто отправляете маску состояний (включено/выключено).
Частота зависит от типа выхода (реле, транзисторный или что-то другое) и конкретного блока.
Спасибо, разобрался!
Теперь такой вопрос)
Можно - ли каким - то образом в Кодесисе задать запоминание значения измерения в первую секунду измерения например? Т.е., чтобы в самом начале процесса ПЛК запоминал результат измерения, а потом, в дальнейшем процессе, изменял положение механизма относительно этого измерения?
можно
var
хранимое_значение : real :=0.0;
in_real : real; (*значение из модуля ввода*)
end_var
_________
if хранимое_значение = 0.0 then
хранимое_значение := in_real;
end_if;
...
IF flag AND flag<>oldFlaf THEN
(* запоминание чего либо или инициализация *)
END_IF
oldFlag:=flag;
новое запоминание или инициализацию можно совершить следующим кодом где то в программе flag:=NOT flag;
С 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
Правильно?
условие по сути булевая переменная, добавте
...
oldFlag:BOOL;
flag:BOOL
END_VAR
flag:= какое нибудь условие, например сравнение температур
IF flag AND flag<>oldFlag THEN
(* запоминание чего либо или инициализация *)
END_IF
oldFlag:=flag;
если это значение у вас из модуля ввода
izm1 AT %QD7.1.1: REAL;
то неправильно. входному значению нельзя присваивать другое значение.
Да, значение из модуля ввода. А как тогда правильно? Я подозреваю вот здесь if izm1 = 0.0 then нужно вместо 0.0 другое значение поставить? или вообще никакого значения не ставить?
я бы вам посоветовал все же определиться с тем, что вы хотите в итоге;)
если вам надо это
Можно - ли каким - то образом в Кодесисе задать запоминание значения измерения в первую секунду измерения например? Т.е., чтобы в самом начале процесса ПЛК запоминал результат измерения, а потом, в дальнейшем процессе, изменял положение механизма относительно этого измерения?
то смотрите пост #13 этой темы. идея там описана, нужна точная задержка по времени - привяжите в условие таймер.
а это, извините, полная бессмыслица
var
izm1 AT %QD7.1.1: REAL;
in_real : REAL;
end_var
if izm1 = 0.0 then
izm1 := in_real;
end_if
Да, именно это и надо)
Я согласен, что бессмыслица, потому что ещё не разобрался... Мне нужно, чтобы хранимое значение = измерение с модуля ввода. Чтобы оно записывалось в первую секунду измерения, а затем полученные измерения сравнивались с ним, и уже относительно разницы между измерениями включался механизм. Так вот какую переменную нужно задать для записи этого значения?
если вы про тип переменной, то тип должен совпадать с типом входной от модуля ввода, если вы про retain / не retain - решайте сами, зависит от ее функциональности.
это что за такие механизмы, которые должны раз в секунду запоминать значение, а в течении остальных 999 миллисекунд, включатся и выключатся в зависимости от условий? :) Поставте повторяющийся таймер или блинк на одну секунду и по фронту сигнала от него запоминайте значение, которое будете сравнивать с текущими значениями
я так понял, что контроллер вообще лишь 1 раз перед началом процесса запоминает значение, а потом пляшет от него:)
Да, в самом начале процесса он запоминает значение, а уже в течении оставшегося процесса оно отталкивается от того одного значения, которое оно запомнило.
С переменной я догадывался, что должна совпадать с той, которую я назначил в модуле ввода.
А с помощью какой команды значение этой перемены запоминается? Именно в первую секунду измерения?
либо так
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;
Powered by vBulletin® Version 4.2.3 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot