PDA

Просмотр полной версии : ВОПРОС-ОТВЕТ (отвечаем на простые вопросы от новичков)



Страницы : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [19] 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42

ASo
08.12.2015, 17:51
Почитайте инструкцию.
Этот бит - полный аналог переключателя РУЧН-АВТО для других битов командного слова.
Источники задания частоты (до 3 штук) выбираются другими параметрами

Barabus
08.12.2015, 20:02
Помогите подключить ПЛК110 к ПК по USB. Драйвер поставил, подключение определилось как COM4.

Теперь необходимо наладить связь с CoDeSys. Собстно, делаю все по инструкции: Онлайн -> Параметры связи... -> New... -> Serial RS232 driver -> OK.

Теперь необходимо поменять дефолтный COM1 на фактический COM4.

Вопрос: как это сделать. Делаю даблклик на надписи COM1, пытаюсь править, не получается...

Barabus
08.12.2015, 20:16
Отбой. COM-порты переключаются стрелочками. Ну о-очень интуитивно, блин.

grenz
09.12.2015, 12:13
Aso. Благодарю. Разобрался с Вашей помощью.

Evgenyi
10.12.2015, 17:40
Здравствуйте!
Очень глупый вопрос наверно, но я не могу найти решение:(
часть программы выглядит так

IF V1>=100 THEN OV1:=TRUE;
timV1(IN:=OV1, PT:=T#10s);
IV1:=timV1.Q;
ELSE OV1:=FALSE;
IV1:=FALSE;
END_IF
Вопрос в следующем как timV1.Q сделать FALSE после того как V1 сова станет меньше 100

energvk
10.12.2015, 17:49
Как вариант в ELSE добавить
timV1(IN:=FALSE);

Yegor
10.12.2015, 19:30
timV1(IN := V1 >= 100, PT := T#10s, Q => IV1);
Остальное убрать.

Evgenyi
11.12.2015, 10:48
energvk и Yegor Спасибо Вам! работает!

energvk
11.12.2015, 11:58
Вариант Yegor`a конечно идеальный

zDRONz
11.12.2015, 14:49
Доброго времени суток! Первый раз столкнулся с Codesys. задача такая: есть генератор который выдает синусоиду. нужно значения выхода генератора записать в массив [1..n], который должен постоянно динамически обновляться. как это можно реализовать?

Maxsvell
11.12.2015, 16:42
Всем привет! Столкнулся с таким вопросом.Есть панель СП270(slave) и плк 110-60(master).В плк программанапмсана,где имеется таймер, который отсчитывает время в сек.(двоичн).Время задается с панели. Возникла необходимость с панели задать время в 190сек.В панели время вводится, но в плк таймер отсчитывает время 99 сек и все!!Как повысить разрядность в таймере на плк? Думаю что надо в таймере при объявлении, писать T#0m0s.Язык CFC.

petera
11.12.2015, 17:04
Всем привет! Столкнулся с таким вопросом.Есть панель СП270(slave) и плк 110-60(master).В плк программанапмсана,где имеется таймер, который отсчитывает время в сек.(двоичн).Время задается с панели. Возникла необходимость с панели задать время в 190сек.В панели время вводится, но в плк таймер отсчитывает время 99 сек и все!!Как повысить разрядность в таймере на плк? Думаю что надо в таймере при объявлении, писать T#0m0s.Язык CFC.
"T#0m0s" это только начальные значение, которые никак не влияют на "емкость" таймера в 49d17h2m47s295ms.
Т.к. из панели Вы читаете не время таймера, а число, которое затем в программе преобразуете в переменную время (TIME), то ищите ошибку в этом преобразовании.

Maxsvell
11.12.2015, 18:01
Спасибо! Вы как всегда на подмоге,чем премного благодарен за помощь! Буду искать.

НММ
11.12.2015, 18:30
Добрый вечер. Owen Logic версия: 1.8.5 build 110 beta обновился и не грузит макросы, вернее не отображает их в окне библиотеки компонентов??

petera
11.12.2015, 18:40
Добрый вечер. Owen Logic версия: 1.8.5 build 110 beta обновился и не грузит макросы, вернее не отображает их в окне библиотеки компонентов??
Вам сюда http://www.owen.ru/forum/forumdisplay.php?f=34

zDRONz
11.12.2015, 20:24
Доброго времени суток! Первый раз столкнулся с Codesys. задача такая: есть генератор который выдает синусоиду. нужно значения выхода генератора записать в массив [1..n], который должен постоянно динамически обновляться. как это можно реализовать?

Помогите люди добрые. весь гугл перекопал. мануалы перечитал. не могу решить проблему.
уже есть алгоритмы для дальнейших действий. нужно только записать значения сигналов генератора в массив. язык программирования ST.

amn
11.12.2015, 23:14
Помогите люди добрые. весь гугл перекопал. мануалы перечитал. не могу решить проблему.
уже есть алгоритмы для дальнейших действий. нужно только записать значения сигналов генератора в массив. язык программирования ST.


IF event THEN (*если изменилось текущее значение*)
FOR i:= 0 TO N-1 DO
mas[i]:=mas[i+1]; (*сдвигаем предыдущие значения элементов массива влево, самый первый при этом теряется *)
END_FOR
mas[N]:=current_val; (*записываем в последний элемент массива новое значение*)
END_IF

Yegor
12.12.2015, 09:03
IF event THEN (*если изменилось текущее значение*)
FOR i:= 0 TO N-1 DO
mas[i]:=mas[i+1]; (*сдвигаем предыдущие значения элементов массива влево, самый первый при этом теряется *)
END_FOR
mas[N]:=current_val; (*записываем в последний элемент массива новое значение*)
END_IFНаивно. Есть же кольцевой буфер (https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BB%D1%8C%D1%86%D0%B5%D0%B2%D0%BE%D 0%B9_%D0%B1%D1%83%D1%84%D0%B5%D1%80).

amn
12.12.2015, 09:13
Yegor, спасибо за полезную ссылку.

Vitorgan
13.12.2015, 12:03
Уважаемые форумчане, подскажите начинающему, версия CODESYS V3.5 SP4 Patch 5, при попытке соединить СПК с ЧП Веспер, создаю каналы с нужными мне регистрами, и встречаюсь с такой проблемой, что не могу добавить их больше 10, т.к. кнопка "добавить канал" становиться "каменной". Подскажите что делать. Заранее благодарен за помощь.

Maxsvell
13.12.2015, 15:43
"T#0m0s" это только начальные значение, которые никак не влияют на "емкость" таймера в 49d17h2m47s295ms.
Т.к. из панели Вы читаете не время таймера, а число, которое затем в программе преобразуете в переменную время (TIME), то ищите ошибку в этом преобразовании.

Доброго дня всем! Команда MUL преобразовывает только 99 сек. А если забиваешь 180 сек(=3 мин) то получается какая то неразбериха!!21300

petera
13.12.2015, 16:56
Доброго дня всем! Команда MUL преобразовывает только 99 сек. А если забиваешь 180 сек(=3 мин) то получается какая то неразбериха!!21300
Элементарно, Ватсон...
Я полагаю, что hmi_t9 это переменная из панели. Скорей всего тип у неё WORD.
Тогда 180*1000=180 000, а в переменную WORD "помещается" всего 65 535, или после преобразования 65,535 сек = 1мин 5сек с хвостиком.:rolleyes:
Происходит переполнение разрядной сетки, и от 180 000 (2BF20hex) остается только BF20hex=48928dec.
Так, что в начале нужно hmi_t9 преобразовать в DWORD, а уж затем умножать на 1000, а уж тем более на 10 000.:p
21303

Maxsvell
20.12.2015, 14:01
Все работает!!Спасибо ОГРОМНОЕ ЧЕЛОВЕЧЕСКОЕ за помощь!!

kvr15
21.12.2015, 11:58
Вопросик такой появился.
А можно ли в языке ST в CodeSys использовать фиксацию выходов?
Set/Reset имею ввиду. Не могу разобраться с синтаксисом.
Подскажите

vooodooo22
21.12.2015, 12:03
Доброго времени суток всем!

Люди добрые, помогите пожалуйста разобраться.

Есть задача, организовать SNMP-протокол, ПЛК 110-30 (менеджер - обрабатывает Trap`ы) <-> Коммутатор (агент - кидает Trap`ы). С работой сокетов пока не знаком. Думаю начать работу с изучения библиотека SysLibSockets.lib. Есть документ описывающий данную библиотеку, но не могу найти последовательность действий работы передачи данных.

Например (чисто мое представление на данный момент):
1. Инициализация порта/сокета (вызов функций: ... , пример);
2. Создание соединения (функция... , пример);
3. Посылка пакета (функция... , пример);
4. Прием пакета (функция... , пример);
5. Закрытие соединения (функция... , пример).

Возможно:
1. Функция: SysSockAccept, пример: ?
2. Функция: SysSockConnect, пример: ?
3. Функция: SysSockSend, пример: ?
4. Функция: SysSockRecv, пример: ?
5. Функция: SysSockClose, пример: ?


Подкиньте пожалуйста пример простенький приема передачи с применением библиотеки SysLibSockets.lib.

Заранее очень благодарен!

Валенок
21.12.2015, 12:09
Вопросик такой появился.
А можно ли в языке ST в CodeSys использовать фиксацию выходов?
Set/Reset имею ввиду. Не могу разобраться с синтаксисом.
Подскажите

ф.блоки SR/RS (приоритет вкл/выкл соотв)
var
sr : sr; rs : rs;

sr(set1:=вкл,reset:=выкл,q1=>выход) // выход:=вкл or (выход and not выкл)
rs(set:=вкл,reset1:=выкл,q1=>выход) // выход:=not выкл and (выход or вкл)

ООО "БЛС инжинеринг"
21.12.2015, 19:42
Добрый вечер! Я написал проект в CoDeSys V2.3 для ПЛК 110-60, сразу заливаю программу в ПЛК нажимая на кнопки "Подключение" потом жму "Создание загрузочного проекта" и "Загрузка исходных текстов" вот что показывает сразу Statistic 21452Это нормальное время цыкала 5мс. но как перезагрузишь ПЛК время показывает совсем другое 21453 это уже критично, я менял разное время цыкла но нечего не меняется...
Почему так получается?
Как это можно исправит?
Что я не так делаю?

petera
21.12.2015, 20:32
Добрый вечер! Я написал проект в CoDeSys V2.3 для ПЛК 110-60, сразу заливаю программу в ПЛК нажимая на кнопки "Подключение" потом жму "Создание загрузочного проекта" и "Загрузка исходных текстов" вот что показывает сразу Statistic 21452Это нормальное время цыкала 5мс. но как перезагрузишь ПЛК время показывает совсем другое 21453 это уже критично, я менял разное время цыкла но нечего не меняется...
Почему так получается?
Как это можно исправит?
Что я не так делаю?
В первом случае в конце отсутствует "жму Старт(F5)" по этому ПЛК просто "курит", программа-то не запущена.
Во втором случае программа автоматически стартует после включения ПЛК. Тут уже можно и на статистику посмотреть. И что мы видим 52х100=5200 мкс= 5,2 мс. Для Вас 5 мс уже критично? Не верю.
А на счет "я менял разное время цыкла но нечего не меняется...". Посмотрите на "CPU is overloaded, optimize your programm or increase PLC cycle", у Вас же перегрузка процессора. И свободного времени у процессора, следующая переменная "Free processor resourse mks in 1 cycle", всего 1 мкс.
Не знаю куда Вы там меняли время цикла, но его(MinCycleLenght) нужно увеличивать, до тех пор, пока не погаснет "CPU is overloaded, optimize your programm or increase PLC cycle". Или задать MinCycleLenght равным 0.

ООО "БЛС инжинеринг"
21.12.2015, 21:03
В первом случае в конце отсутствует "жму Старт(F5)" по этому ПЛК просто "курит", программа-то не запущена.
Во втором случае программа автоматически стартует после включения ПЛК. Тут уже можно и на статистику посмотреть. И что мы видим 52х100=5200 мкс= 5,2 мс. Для Вас 5 мс уже критично? Не верю.
А на счет "я менял разное время цыкла но нечего не меняется...". Посмотрите на "CPU is overloaded, optimize your programm or increase PLC cycle", у Вас же перегрузка процессора. И свободного времени у процессора, следующая переменная "Free processor resourse mks in 1 cycle", всего 1 мкс.
Не знаю куда Вы там меняли время цикла, но его(MinCycleLenght) нужно увеличивать, до тех пор, пока не погаснет "CPU is overloaded, optimize your programm or increase PLC cycle". Или задать MinCycleLenght равным 0.

Старт F5 В первом случаи был нажат :)
А время цыкла было указанно в (MinCycleLenght) там у меня стоит 5ms. 21455
Время цыклы важно так как ситоят 11счётчиков и они считают примерно около 100Гц. Это расходомеры жидкости (Линия розлива жидкости) http://liniirozliva.ru

capzap
22.12.2015, 07:51
Старт F5 В первом случаи был нажат :)

обратите внимание на нижние поля среды разработки, в первом случае ЗАПУЩЕНО не активно, так что старт вряд ли был нажат, то что модбас и физические входы в это время принимают информацию не показатель, они живут своей жизнью и старт программы им "параллельно"

ООО "БЛС инжинеринг"
22.12.2015, 09:01
обратите внимание на нижние поля среды разработки, в первом случае ЗАПУЩЕНО не активно, так что старт вряд ли был нажат, то что модбас и физические входы в это время принимают информацию не показатель, они живут своей жизнью и старт программы им "параллельно"

Насколько я понимаю если будет цыкл 5 мс. то ПЛК сможет считать только до 100 Гц.?

capzap
22.12.2015, 09:16
Насколько я понимаю если будет цыкл 5 мс. то ПЛК сможет считать только до 100 Гц.?

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

Sing1
22.12.2015, 12:36
Есть вопрос по реализации многоконтурных ПИД регуляторов. Не знаю в какую тему написать или создать новую,хочется донести данный вопрос до нужных людей. Задача в общем такая: поддержание определенной температуры воды,путем смешивания холодной-горячей. Проблема в том, что давление,то есть расход холодной воды часто скачкообразно меняется, в результате один ПИД следящий за параметром температуры не справляется, большие отклонения +-10 и перерегулирования. Мысль ввести стабилизирующий контур следящий за параметром давления. Один ПИД (стабилизирующий) следит за давлением, управляет задвижкой и получает задание от 2го ПИДа (корректирующего) следящего за параметром температуры. И собственно сам вопрос: как стыковать два ПИДа, как рассчитать диапозон выходного значения для 2го регулятора, задающего уставку 1му? Сборку хочу сделать на регуляторах из библиотеки Util.lib Codesys 2

ООО "БЛС инжинеринг"
22.12.2015, 14:34
5мс это время нижней границы временного диапазона одного скана плк, какой он на самом деле, с учетом обработки кода программы, прерываний и т.п. косвенно показывает модуль статиистики, если код выполняется за меньшее время, то плк будет в холостую ждать окончания интервала 5мс, чтоб начать следующий цикл. Уже давали совет поставить минималку ноль, но к этому надо привыкнуть

Вот что у меня получается 21457 это время не желательное для нас, мы используем расходомеры жидкости они дают около 100Гц. и программу не обрежешь... Вот вопрос я написал программу на CFC а если я её напишу на LD время цыкла уменьшится?

ООО "БЛС инжинеринг"
22.12.2015, 18:36
Вот что у меня получается 21457 это время не желательное для нас, мы используем расходомеры жидкости они дают около 100Гц. и программу не обрежешь... Вот вопрос я написал программу на CFC а если я её напишу на LD время цыкла уменьшится?

Может кто-то подскажет

YuriBel
22.12.2015, 19:14
Совершенно не факт, что при переходе с CFC на LD получится достичь желаемого. В любом случае предстоит разбираться, на что тратится время, и если хотите, чтобы кто-либо что-либо дельное посоветовал, выкладывайте свой проект. Ну и про ваши расходомеры поподробнее, как вы их читаете, что они передают 100 раз в секунду, и т.д. вполне возможно, что выбораный ПЛК для данной задачи не подходит.

ООО "БЛС инжинеринг"
22.12.2015, 19:21
Совершенно не факт, что при переходе с CFC на LD получится достичь желаемого. В любом случае предстоит разбираться, на что тратится время, и если хотите, чтобы кто-либо что-либо дельное посоветовал, выкладывайте свой проект. Ну и про ваши расходомеры поподробнее, как вы их читаете, что они передают 100 раз в секунду, и т.д. вполне возможно, что выбораный ПЛК для данной задачи не подходит.

Расходомер даёт количество импульсов это он https://www.youtube.com/watch?v=3IkWNq7UPFE с нашей пропускаемой способностью это примерно он даёт около 100Гц. и таких может быть до 11шт.
Расходомеры подключаются не посредственно на дискретные входа в программе считывает импульсы CTU b и таких CTU 2 шт. на один расходомер, но при этом там в программе есть куча разных манипуляций (это автоматическая линия розлива) пытаюсь всы это сделать на ПЛК110-60 Р-М и МУ110-224

ПЛК110-60 Р-М
1) In1 Счётчик №1
2) In2 Счётчик №2
3) In3 Счётчик №3
4) In4 Счётчик №4
5) In5 Счётчик №5
6) In6 Счётчик №6
7) In7 Счётчик №7
8) In8 Счётчик №8
9) In9 Счётчик № 9
10) In10 Счётчик №10
11) In11 Счётчик №11
12) In12
13) In13
14) In14 Дат. Входной Линия №1
15) In15 Дат. Шибер входной Линия №1
16) In16 Дат. Выходной Линия №1
17) In17 Дат. Шибер выходной Линия №1
18) In18 Дат. Центратора Линия №1
19) In19 Дат. Траверсы верх Линия №1
20) In20 Дат. Траверсы промежуточный Линия №1
21) In21 Дат. Траверсы низ Линия №1
22) In22 Дат. Входной Линия №2
23) In23 Дат. Шибер входной Линия №2
24) In24 Дат. Выходной Линия №2
25) In25 Дат. Шибер выходной Линия №2
26) In26 Дат. Центратора Линия №2
27) In27 Дат. Траверсы верх Линия №2
28) In28 Дат. Траверсы промежуточный Линия №2
29) In29 Дат. Траверсы низ Линия №2
30) In30
31) In31 Кнопка Пауза Общая (ОПЦИЯ)
32) In32 Пуск Линия №1
33) In33 Стоп Линия №1
34) In34 Пуск Линия№2
35) In35 Стоп Линия №2
36) In36 Авария Общая

1) Qut1 Клапан налива 1.1
2) Qut2 Клапан налива 1.2
3) Qut3 Клапан налива 1.3
4) Qut4 Клапан налива 1.4
5) Qut5 Клапан налива 1.5
6) Qut6 Клапан налива 1.6
7) Qut7 Клапан налива 1.7
8) Qut8 Клапан налива 1.8
9) Qut9 Клапан налива 1.9
10) Qut10 Клапан налива 1.10
11) Qut11 Клапан налива 1.11
12) Qut12 Клапан налива 2.1
13) Qut13 Клапан налива 2.2
14) Qut14 Клапан налива 2.3
15) Qut15 Клапан налива 2.4
16) Qut16 Клапан налива 2.5
17) Qut17 Клапан налива 2.6
18) Qut18 Клапан налива 2.7
19) Qut19 Клапан налива 2.8
20) Qut20 Клапан налива 2.9
21) Qut21 Клапан налива 2.10
22) Qut22 Клапан налива 2.11
23) Qut23 Индикатор Пуска Линия №1
24) Qut24 Индикатор Пуска Линия №2
25) Qut25 Насос 1
26) Qut26 Насос 2
27) Qut27 Насос 3
28) Qut28 Байпас

МУ110-224.16Р
1) Шибер входной Линия №1
2) Шибер выходной Линия №1
3) Центратор Линия №1
4) Траверса вверх Линия №1
5) Траверса вниз Линия №1
6) Быстрый сброс Линия №1
7) Конвейер Линия №1
8)
9) Шибер входной Линия №2
10) Шибер выходной Линия №2
11) Центратор Линия №2
12) Траверса вверх Линия №2
13) Траверса вниз Линия №2
14) Быстрый сброс Линия №2
15) Конвейер Линия №2
16) Конвейер Общий

А какой самый быстрый ПЛК с дискретными входами есть у ОВЕНА ???

YuriBel
22.12.2015, 19:37
Самый быстрый-обновленный ПЛК110, но не факт, что это вас спасет. Нужно разбираться, на что тратится время.

capzap
22.12.2015, 21:17
а мне думается, что уже можно не разбираться на что тратится время, пока не станет известна ширина импульса, а уж про последовательный канал передачи данных с модуля вобще промолчу

YuriBel
23.12.2015, 12:35
В продолжение слов коллеги CAPZAP. Обратите внимание на такие характеристики контроллера, как быстродействие входов и выходов. Соотнесите это с шириной импульса, который выдает ваш расходометр. Поймёте, можно ли в принципе поймать этот импульс входом. Попробуйте оценить потери времени на обмен с перферией. После этого возможно появится мысль отделить мух от котлет, поручив счет импульсов другому устройству. И еще один маленький секрет. У контроллера 24 выхода, и то, что в конфигурацию удалось запихнуть 28, не делает жизнь легче. Так что просится еще один МУ100 со всеми вытекающими.

kvr15
24.12.2015, 17:06
Подскажите пожалуйста,как настроить ПИД-регулятор и какой ФБ лучше взять для этого,чтобы реализовать следующую задачу:
Нужно регулировать температуру воды во внутреннем контуре,который охлаждается внешним контуром воды через теплообменник.
Управляем регулирующим клапаном подачи воды во внешний контур.
Клапан управляется сигналом 0..10В.

kvr15
24.12.2015, 17:26
Если у Вас два контура (два датчика) и один управляющий привод, то здесь лучше пойдет каскадная схема.
Сам использую PID из библиотеки UTIL.
Автонастройку коэффициентов делал сам (http://lapshinvr.ru/avtotyuning.html). Долго, но работает

Что вы подразумеваете под каскадной схемой?

Умар
24.12.2015, 17:51
Здравствуйте, помогите пожалуйста написать программу на языке ST или CFC в CoDesys v2.3 На контраллера плк 150., я учусь в ггнту на факультете автоматизации и прикладной информатики, если я не напишу программу мне зачет не поставят)) . Буду очень благодарен.
имеется: емкости для воды, датчик уровня ,насос..

1. При нажатие кнопки "РЕЖИМ 1" работа установки происходит следующим образом:
* Открывается клапан 1, и емкость наполняется водой до заданного уровня.(вода наполняется с помощью насоса)
* Открывается клапан 2, и выполняется слив воды до достижения нижнего уровня в емкости, после чего закрывает клапан 2.
* открывается клапан 1: запускается насос и е емкость наполняется водой заданной уровни.
2.при нажатие кнопки” Режим 2 ” работа установки происходит следующим образом:
*Открывается клапан 1 и емкость наполняется водой до заданного уровня.(вода наполняется с помощью насоса) и открывается клапан 2(слив) короче одновременно открыты две клапаны т.е насос для наполнение емкости водой и клапан для слива воды и должна программа держать воду на заданном уровне при открытом клапане 2 (слив) и насоса.
*программа должна быть в аналоговой а не дискретной.
3. Если не нажата кнопка "СТОП", продолжить работу, начиная с п.1., Иначе - завершить работу программы.

yadro
24.12.2015, 18:56
Как запустить параллельно две программы на ST и SFC?
ps код на st для визуализации, а sfc - логика

Валенок
24.12.2015, 19:06
Вызови их где-нить. Можно последовательно
Ps
Зачем грузить чела диспетчером задач когда он просто вызвать программу ещё не научился

yadro
24.12.2015, 19:11
Нашел "конфигурацию задач", ругается на событийную переменную. скрин (https://www.dropbox.com/s/tg5fqpfyon0q3fc/%D0%A1%D0%BA%D1%80%D0%B8%D0%BD%D1%88%D0%BE%D1%82%2 02015-12-24%2019.08.38.png?dl=0)

petera
24.12.2015, 19:20
Как запустить параллельно две программы на ST и SFC?
ps код на st для визуализации, а sfc - логика

Вызови их где-нить. Можно последовательно
Ps
Зачем грузить чела диспетчером задач когда он просто вызвать программу ещё не научился
21496
....................

petera
24.12.2015, 19:26
Нашел "конфигурацию задач", ругается на событийную переменную. скрин (https://www.dropbox.com/s/tg5fqpfyon0q3fc/%D0%A1%D0%BA%D1%80%D0%B8%D0%BD%D1%88%D0%BE%D1%82%2 02015-12-24%2019.08.38.png?dl=0)
Скрины можно вставлять в сообщения
21500 21501

yadro
24.12.2015, 19:41
В примере у препода именно через диспетчер, не знаю как побороть эту ошибку.
Событийная переменная CURRENTCLIENTID в задаче должна быть типа bool.

\21502

Pagan
26.12.2015, 18:27
Подскажите пожалуйста при помощи какого блока в CFC можно реализовать вот такой переключатель - http://vent-house.ru/image/cache/data/Avtomatik/SP/shema-regul-500x500.jpg

Сергей0308
26.12.2015, 19:03
Подскажите пожалуйста при помощи какого блока в CFC можно реализовать вот такой переключатель - http://vent-house.ru/image/cache/data/Avtomatik/SP/shema-regul-500x500.jpg

Наверно логично заменить переключатели на кнопки без фиксации и применить Т-триггер, хоть с 1000 мест можно управлять! Если я правильно понял!

Pagan
26.12.2015, 19:13
Наверно логично заменить переключатели на кнопки без фиксации и применить Т-триггер, хоть с 1000 мест можно управлять!

Да, Вы правы...правильнее наверное будет использовать кнопку с таким функционалом.
Это управление скоростью вентилятора. Фаза должна подаваться на один из выходов, но не на оба одновременно. Т.е получается нажатием на кнопку мне нужно отключить одно реле и включить другое, и при этом предотвратить ситуацию при которой будут включены оба реле. Какой из библиотечных можно использовать? ( использую стандартную и оскат база и здание)

melky
26.12.2015, 19:21
Pagan обычный переключатель использовать не судьба ? или необходимо еще и отключать ? хотя все равно выключатель + переключатель будут стоить дешевле

Pagan
26.12.2015, 19:31
Pagan обычный переключатель использовать не судьба ? или необходимо еще и отключать ? хотя все равно выключатель + переключатель будут стоить дешевле

Ну при таком подходе можно и ПЛК заменить набором выключателей :) Да и программный переключатель не стоит ничего...что может быть дешевле? :)

саня89
27.12.2015, 15:37
доброго времени суток. помогите пожалуйста подружить мк110-220.4к.4р с плк 100 по протоколу овен, не получается управлять выходами мк110. настроил входы : unsignet variadle (listen) - 8 bits (address- 24, hasn name- r.cn) через кодесис видет все работает, а вот с выходами как управлять разобратся не могу. делал так: первый выход- float variable (listen) (address- 24, hash name- S.do [такое имя в параметрах в документах], float type- float pic), второй выход адрес 24+1. что я не так делаю?

Владислав Г.
29.12.2015, 11:13
ПЛК-150. Как перезагрузить проект при использовании RS-232? Комбинация кнопок СТАРТ и СБРОС, потом создание загрузочного проекта? Нужен ли при этом ПЛК-браузер? Проделовал перезагрузку несколько раз (как-то получалось), но так и не понял четкого алгоритма действий.

Валенок
29.12.2015, 12:07
Браузер не нужен. Порт не имеет значения. Алгоритм запомнить просто :

1.Привез на этаж новый диван. Приготовил проект
2.Зашел в квартиру. Выкинул старый диван в окно. Вышел на лестницу. Соединение, сброс заводской, отключение
3.Освободить новый диван от упаковки.Проект/очистить все
4.Занес новый диван. Соединится, загрузится
5.Быстренько занял место на диване. Создать загрузочный проект

Для ПЛК73/63 п.5. - лишний. Типа грузчики заносят диван, а ты уже на нем. С пивом.

Владислав Г.
30.12.2015, 09:13
Браузер не нужен. Порт не имеет значения. Алгоритм запомнить просто :

1.Привез на этаж новый диван. Приготовил проект
2.Зашел в квартиру. Выкинул старый диван в окно. Вышел на лестницу. Соединение, сброс заводской, отключение
3.Освободить новый диван от упаковки.Проект/очистить все
4.Занес новый диван. Соединится, загрузится
5.Быстренько занял место на диване. Создать загрузочный проект

Для ПЛК73/63 п.5. - лишний. Типа грузчики заносят диван, а ты уже на нем. С пивом.
Чувствуется предновогоднее настроение ). Спасибо за ответ, с наступающим!

Evgenyi
04.01.2016, 11:53
Вопрос Новичка!
Есть ПЛК, в нем программ, работает по протоколу Modbas(master), через TCP/IP. В плк приходят данные с приборов через RS-485.
бывает что плк выходит из строя(сгорает, нет напряжения, дядя кузнец молоток уронил на него и др варианты как вероятные так и не очень)
Хотим сделать так, один вышел из строя автоматически включился второй, та же программа, ток же IP-address. Таже марка плк
С RS-485 хотим вывести линию связи сразу в 2 плк?
Переключение плк Как это можно организовать? (реле или что то по современнее есть)
Будет ли вообще работать?
Если где то ошибаюсь поправьте.

Newcomer
04.01.2016, 12:20
Можно сделать так. В исходном состоянии на ПЛК-1 напряжение подано и он работает, на ПЛК-2 напряжение не подано и он не работает. Если ПЛК-1 вышел из строя, то его надо обесточить, а на ПЛК-2 подать напряжение. Надо поставить внешнее реле с катушкой на ~220 В (1НО, 1НЗ контакты) с управлением через дискретный выход ПЛК-1 и кнопки начального запуска. Горячего резерва не получится, но система будет работать.

Evgenyi
04.01.2016, 12:32
А параллельно 2 плк(с разными ip-address но одинаковой программой) работать будут?

Newcomer
04.01.2016, 12:38
А параллельно 2 плк(с разными ip-address но одинаковой программой) работать будут?

А ПЛК по Ethernet к чему подключены ?

Evgenyi
04.01.2016, 12:49
А ПЛК по Ethernet к чему подключены ?

пока только 1 плк, а вообще через управляемый коммутатор.

Newcomer
04.01.2016, 12:52
Ну тогда еще один вопрос. :D К чему будут подключаться ПЛК через управляемый коммутатор ?

Evgenyi
04.01.2016, 12:58
сервер, на котором настроен OPC-server iis служба, и веб-scada.

Evgenyi
04.01.2016, 13:11
ясно, спасибо всем
С Новым Годом!

Newcomer
04.01.2016, 13:12
Резервирования автоматического так не сделать. В ручную переключать питание еще пол беды, так как один мастер будет слать в сеть по Ethernet пакеты, но что Вы будете делать с RS485? Там вы должны будете сделать дубль всего, модулей, проводов, датчиков.

В теме речь идет о резервировании только ПЛК. Оба ПЛК будут Master сети RS-485.


Как сломанный ПЛК поймет что он сломан и переключется на соседа? Никак. Он просто умрет тихонечко. Для определения кто Primary, а кто Secondary потребуется третий ПЛК - арбитр. Он и должен питание переключать.

Еще вопрос, а чем все это управляет? Ведь при таком переключении не достичь безударного управления (без отключения)

ПЛК-1 через свой дискретный выход будет управлять внешним реле.


Еще вопрос, а чем все это управляет? Ведь при таком переключении не достичь безударного управления (без отключения)

Речь не идет о горячем резервировании.

Newcomer
04.01.2016, 13:14
ясно, спасибо всем
С Новым Годом!

Рано ты руки опустил.

Evgenyi
04.01.2016, 13:28
Рано ты руки опустил.

я не руки опустил, я от НГ еще не отошел

Newcomer
04.01.2016, 13:38
Если в твоей задаче не требуется горячее резервирование, то все легко делается подручными средствами.

Newcomer
04.01.2016, 13:48
Соглашусь с тем, что идея все закупить, все соединить и при этом держать отключенным - хорошая идея. Однозначно будет действием сокращающим время ремонта.
Два подключенных мастера в сети RS485 - не будет работать до тех пор, пока Вы один из мастеров проводами не отключите или питание не снимите..

Если один Master обесточен, то никакого влияния на сеть RS-485 он оказывать не будет.

В качестве арбитра можно использовать ПР110-220.8ДФ.4Р. которое стоит 2 832,00 руб.

Для холодного резервирования дополнительно понадобятся один ПЛК и одно ПР.

Дорого это или дешево решать автору темы.

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

Evgenyi
04.01.2016, 13:57
пока первый работает второй обесточен.
первый сгорел, напряжение на нем пропало! второй включился, напряжение появилось заработало!
я больше переживаю за opc-server как он отреагирует на это! поймет ли он что это все тоже или нет!
Резервирование горячие пока не нужно, пока все на стадии разработки и хотим сделать систему которая будет работать не только в плк, а и брать значения с архива данных при срабатывании, ну в данном случае реле
но я раньше не работал с плк, вот и советуюсь с умными людьми

Evgenyi
04.01.2016, 14:00
а вот про ПР110-220.8ДФ.4Р интересно, но вряд ли руководство выделит деньги. скорее скажут ставьте реле и пишите прогу для архивирования и при срабатывании плк передать переменные в плк

Newcomer
04.01.2016, 14:03
Он может переключать реле. Понятно.
Можете предположить как он будет понимать что живо, а что нет?

Может ли выйти так, что он будет переключать это реле туда-сюда, если увидит (или ошибочно увидит) неработоспособность у резервного?

ПЛК-1 формирует на одном из своих дискретных выходов импульсы и это фиксирует ПР. Если ПЛК-1 вышел из строя, то импульсы прекратятся. ПР это зафиксирует, выключит ПЛК-1 и включит ПЛК-2. ПЛК-2 начнет формировать на одном из своих дискретных выходов импульсы.
Что делать если ПЛК-2 прекратит формировать импульсы можно подумать. Можно отключить ПЛК-2 и выдать сообщение о выходе из строя обоих ПЛК. Можно что-то похитрее придумать.

Система управления с двумя ПЛК будет дороже, но более надежна.

Newcomer
04.01.2016, 14:13
я больше переживаю за opc-server как он отреагирует на это! поймет ли он что это все тоже или нет!

Если клиенты совершенно одинаковы, то сервер ничего и не почувствует. Может на короткое время пропасть связь, вот и все.

Newcomer
04.01.2016, 14:20
Evgenyi, а что значит "сгорел"? У меня за всю историю около трех "сгорело" и то, связано с импульсными помехами, ошибками монтажа или злым умыслом.
ПЛК довольно надежны. Скорее "сглючит", но питание не снимет. Так что если быть честным - не будет так работать.

Что конкретно не будет так работать. Тут все раэжевано, где что не так ? Зачем делать голословные заявления ?

Люди на ПР делают АВР и все прекрасно работает.

Evgenyi
04.01.2016, 14:23
Evgenyi, а что значит "сгорел"? У меня за всю историю около трех "сгорело" и то, связано с импульсными помехами, ошибками монтажа или злым умыслом.
ПЛК довольно надежны. Скорее "сглючит", но питание не снимет. Так что если быть честным - не будет так работать.

Я писал, бывает всякое, было что порвали водопровод и затопили плк, СБ, и еще кучу всего, один раз на каморку где узел связи( так коммуникации разные были) уронили бетонную плиту! в одном цеху не было места, и плк поставили(отдельный шкаф под замок, красиво, ново, там же коммуникации сети и телефонии) в комнате и тетенька вытянула вылку с розетки питающего этот шкаф, и все обесточила, хотела чайку погреть, а радио выключить ну совсем ни как!!!
Вот после последнего случая и поставили эту задачу! поскольку тетю переучить и ей объяснить ну ни как не удалось!!!!

Evgenyi
04.01.2016, 14:40
Newcomer, против решения с ПР ничего не имею (Вы поддержали - Арбитр), но мне не нравится решение с реле (оно механическое и есть ограничение) + подводных камней куча, мы их все сейчас не обсудим.

решение с реле я и сам мог придумать, а вот о ПР это вариант. и буду его пропихивать что бы купили

Newcomer
04.01.2016, 14:41
Newcomer, против решения с ПР ничего не имею (Вы поддержали - Арбитр), но мне не нравится решение с реле (оно механическое и есть ограничение) + подводных камней куча, мы их все сейчас не обсудим.

Если ставить ПР, то никаких реле больше не надо. У ПР своих релейных выходов более чем достаточно для этой задачи.

Newcomer
04.01.2016, 14:42
решение с реле я и сам мог придумать, а вот о ПР это вариант. и буду его пропихивать что бы купили

Сделать переключение на одном простом реле не получится.

Evgenyi
04.01.2016, 14:43
Newcomer krollcbas спасибо Вам, за консультации!
С НГ Вас Мира Вам и здоровья!

RV9WFJ
05.01.2016, 10:27
Если речь только о том что тетенька вилку питания выдергивает то надо вилку исключить как лишний элемент и можно резервирование питания сделать - это дешевле будет. А если речь о полноценном резерве то ПР эту задачу не решит так как резерв будет только для релейного выхода. Допустим если пропадет линия связи то ПР никак об этом не узнает и резерв не включится. Одним словом для этого существуют специальные контроллеры за бешенные деньги и даже на них горячий резерв неахти работает. Холодный резерв ИМХО пустая трата денег - для этого есть ЗИП.

ООО "БЛС инжинеринг"
05.01.2016, 21:33
Подскажите как можно реализовать число в проценты?
ПРИМЕР: 1200=100%, 3680=100% или как-то так, без разницы если первое значение меняется то соответственно процент должен быть всегда =100%

Evgenyi
06.01.2016, 10:27
Если речь только о том что тетенька вилку питания выдергивает то надо вилку исключить как лишний элемент и можно резервирование питания сделать - это дешевле будет. А если речь о полноценном резерве то ПР эту задачу не решит так как резерв будет только для релейного выхода. Допустим если пропадет линия связи то ПР никак об этом не узнает и резерв не включится. Одним словом для этого существуют специальные контроллеры за бешенные деньги и даже на них горячий резерв неахти работает. Холодный резерв ИМХО пустая трата денег - для этого есть ЗИП.

Дело не только в тетеньке!
Речь о том, есть ПЛК1, как только перестал работать включился ПЛК2. ПЛК2 полностью равен ПЛК1
данные переменных из архива в плк передавать программисты уже почти настроили. Данные представляют собой положение заглушки, значение температуры, не чего сверхъестественного нет. Задача сделать как можно дешевле и надежнее(Как в СССР за 3 копейки и на века)

Evgenyi
06.01.2016, 12:17
И еще один вопрос!
Есть ПЛК, подключен к серверу через TCP/IP. При перезагрузке сервера, замене роутера, скачке в сети, и банально вытянули Ethernet кабель вставили, ПЛК зависает, и приходится идти и перезапуск плк делать. Можно ли как-то в плк настроить перезапуск его автоматически?

melky
06.01.2016, 12:40
Горячее резервирование можно сделать программно, но придется писать весь обмен через библиотеки.
Пока работает ПЛК1, он мастер, ПЛК2 слейв и контролирует связь с ПЛК1, если связь отвалилась, перехватывает управление на себя. Но будут разные IP адреса.
Или как выше писали - 2 идентичных ПЛК и АВР на ПР (слейв), который выключит ПЛК1 и включит ПЛК2 и сразу сообщит оператору, что ПЛК1 упал по связи.

Вольд
06.01.2016, 12:54
Горячее резервирование на ПЛК ОВЕН сделать невозможно.

ООО "БЛС инжинеринг"
06.01.2016, 23:26
Подскажите как можно реализовать число в проценты?
ПРИМЕР: 1200=100%, 3680=100% или как-то так, без разницы если первое значение меняется то соответственно процент должен быть всегда =100%

Объясню более подробнее, мы производим линии розлива для жидкостей http://liniirozliva.ru
Я хочу сделать такой принцип работы чтоб можно было отслеживать объём налитой жидкости в процентах, при этом у нас есть «CTU» и числа это (уставка) и выход «СV»
Мы задаём уставку на «PV» эта уставка к примеру 300 импульсов это = 1литра жидкости
и соответственно 1литра налитой жидкости это и будет =100% объёма,
или мы задаём уставка к примеру 1500 импульсов это = 5литров жидкости
и соответственно 5литров налитой жидкости это тоже будет =100% объёма.
Когда подходит значение на «СV» к «PV» это и есть 100% налитой жидкости.
Как это можно реализовать в CoDeSys V2.3 на языке CFC ???
(если можно скриншот)

Владимир Ситников
07.01.2016, 00:06
Объясню более подробнее
Уже лучше, но, может, ещё более подробно объясните?

Похоже, вам что-то такое нужно: http://math-prosto.ru/?page=pages/proportion/task-on-proportion.php

petera
07.01.2016, 00:45
Объясню более подробнее, мы производим линии розлива для жидкостей http://liniirozliva.ru
Я хочу сделать такой принцип работы чтоб можно было отслеживать объём налитой жидкости в процентах, при этом у нас есть «CTU» и числа это (уставка) и выход «СV»
Мы задаём уставку на «PV» эта уставка к примеру 300 импульсов это = 1литра жидкости
и соответственно 1литра налитой жидкости это и будет =100% объёма,
или мы задаём уставка к примеру 1500 импульсов это = 5литров жидкости
и соответственно 5литров налитой жидкости это тоже будет =100% объёма.
Когда подходит значение на «СV» к «PV» это и есть 100% налитой жидкости.
Как это можно реализовать в CoDeSys V2.3 на языке CFC ???
(если можно скриншот)
21661
С Новым Годом:rolleyes:

RV9WFJ
07.01.2016, 08:35
Вот и я о том. Посмотрите что под горячим резервом понимают немцы и сразу поймете что на Овен это сделать невозможно в силу того что он просто не расчитан на это. То что вы хотите резервировать - резерв реле которое сообщает АВР что программа работает и не более того. Но никто не гарантирует того что реле покажет неисправность ПЛК если отвалится связь, сдохнет порт 485, сдохнут модули ввода и еще миллион вариантов. А усложнение схемы вам даст только уменьшение надежности. Держите в ЗИПе зашитый ПЛК и будет вам счастье ИМХО.

ООО "БЛС инжинеринг"
07.01.2016, 14:27
21661
С Новым Годом:rolleyes:

Спасибо:)
И вас Также с праздником

ООО "БЛС инжинеринг"
07.01.2016, 14:51
Подскажите почему у меня в CoDeSys V2.3 не правильно отображается шрифт 21665в визуализации и как это исправить?

Валенок
07.01.2016, 15:05
Анимация: Западноевропейский -> Кириллица

ООО "БЛС инжинеринг"
07.01.2016, 16:42
Анимация: Западноевропейский -> Кириллица

Спасибо :)

Dimooon
08.01.2016, 07:46
Здравствуйте, хочу спросить: Есть устройство, весовой индикатор CAS, он может передавать по протоколу ASCII пакет данных в котором есть переменная с весом. Я спаял кабель, и даже принял этот пакет на ноутбук по RS-232(!!!!!!:cool:), но мне надо, чтобы это все прилетало на ПЛК-100, и в CFC как-то надо этот обработать, выделить из общего пакета, убрать все ненужное, оставить только значение веса. Здесь ключевое слово - CFC. Может, библиотечный блок есть такой? Как мне это сделать? Это вообще возможно?

Yegor
08.01.2016, 10:32
Это возможно, но нецелесообразно. Почему именно CFC?

Dimooon
08.01.2016, 12:58
Пока только с CFC сталкивался. На ST пытаюсь, но пока тяжко. Но готовый блок если есть на ST - интересно будет посмотреть

Yegor
08.01.2016, 14:04
Есть вот такая тема: http://owen.ru/forum/showthread.php?t=22498

ООО "БЛС инжинеринг"
09.01.2016, 21:18
Добрый вечер! Как можно реализовать такой принцип 21682 Как можно сделать так чтоб "V2" (время) могло плавно (нарастающи) меняться за время указанное (время) в "V1"?
Или можно и так сказать по другому, как можно сделать так чтоб шаговый двигатель мог плавно запускаться?

Владимир Ситников
09.01.2016, 21:24
Util.lib / RAMP_INT

ООО "БЛС инжинеринг"
09.01.2016, 21:51
Util.lib / RAMP_INT

Спасибо :)

Evgenyi
12.01.2016, 12:02
Такой вопрос!
ПЛК 100 работают через TCP/IP, время от времени зависают. Находятся в разных цехах, работают с разными OPC серверами. Общая только сеть. Зависают в одно и тоже время! что может быть?
Сеть в порядке, зависают только ПЛК.

alex55
13.01.2016, 09:50
Как выполнить вызов визуализации по событию, которое в ней произошло? Имеется три визуализации в проекте. В каждой из них есть переменная, которая по событию переходит в true. Нужно, чтобы автоматически открывалась эта визуализация при изменении значения этой переменной.. В визулизации кдс написано невнятно по этой теме-помогите, пожалуйста, примером или словами поконкретнее..

Evgenyi
13.01.2016, 12:45
Здравствуйте!
Есть двигатель, его включают и выключают. И бывает он сгорает. Необходимо учесть время, которое отработал двигатель. И при замене обнулить счетчик.
На входной канал плк подается значение тока двигателя.
Решение.
Тут все просто и понятно
Если Ток > 0 запустить секундомер.
Когда Ток=0 остановить секундомер.
Величину что получили Присвоить переменной "Время Работы".
При замене передать сигнал управления и обнулить переменную "Время Работы"
Вопрос, Как запустить секундомер в плк. Таймеры они идут от заданной величины времени к 0.

timV1(I > 0, PT := T#1s, x:=x+1 Q =0) Вот такое решение будет правильное?

petera
13.01.2016, 13:02
Здравствуйте!
.....
На входной канал плк подается значение тока двигателя.
Решение.
Тут все просто и понятно
Если Ток > 0 запустить секундомер.
Когда Ток=0 остановить секундомер.
Величину что получили Присвоить переменной "Время Работы".
.....
Вопрос, Как запустить секундомер в плк.
......

VAR
I: REAL;
R_TRIG_1: R_TRIG;
Start: TIME;
F_TRIG_1: F_TRIG;
Tim_work: TIME;
END_VAR

R_TRIG_1(CLK:= I>0, Q=> );
IF R_TRIG_1.Q THEN
Start:=TIME();
END_IF
F_TRIG_1(CLK:=I>0 , Q=> );
IF F_TRIG_1.Q THEN
Tim_work:=TIME()-Start;
END_IF


Время будет в формате TIME

PS.
двигатель, его включают и выключают. И бывает он сгорает. Необходимо учесть время, которое отработал двигатель

VAR
VAR
I: REAL;
R_TRIG_1: R_TRIG;
Start: TIME;
F_TRIG_1: F_TRIG;
Tim_Cycle: TIME; (*Время работы двигателя от последнего пуска*)
END_VAR
VAR RETAIN
Time_Sum: UDINT; (*Время работы двигателя, ИТОГО*)
Cycle: UDINT; (*Число пусков двигателя*)
END_VAR


R_TRIG_1(CLK:= I>0, Q=> );
IF R_TRIG_1.Q THEN
Start:=TIME();
Cycle:=Cycle+1;
END_IF
F_TRIG_1(CLK:=I>0 , Q=> );
IF F_TRIG_1.Q THEN
Tim_Cycle:=TIME()-Start;
Time_Sum:=Time_Sum + TIME_TO_UDINT(Tim_Cycle)/1000;
END_IF
Время наработки двигателя в секундах

Владислав Г.
13.01.2016, 16:54
Написал несколько программ на базе PID_2POS_IM_ANR ПИД-регулятора с автонастройкой. Пока не создал загрузочного проекта в ПЛК все было чудесно, коэффициенты подбирались довольно хорошо. Однако, эти коэффициенты, как оказалось, не сохраняются в памяти ПЛК! Т.е. после отключения питания данные стираются. Есть ли варианты запоминания коэффициентов (может к ним удастся подобраться через библиотеку)?

Yegor
13.01.2016, 17:26
В документации про реманентные переменные читайте (RETAIN).

sssssaaaaabbbbb
15.01.2016, 14:45
Уважаемые форумчане, подскажите начинающему инженеру как реализовать сей

проект(восстанавливаю погрузчик):

крутишь руль и колесо отрабатывает тот же угол поворота , имеются следующие компоненты:

Есть датчик угла поворота руля которым управляют и датчик угла поворота

колеса. они оба подключены на 1 и 2 входы Fast analog inputs.

Все собрано на контроллере PLC160.

К выходам уже прикручены устройства для управления силовой сетью(но для пробы прикрутил

лампочки на 24V одна влево, другая вправо). они обе подключены на 1 и 2 входы Discrete

outputs.

Думаю что надо задать переменные на вход аналоговых сигналов
и при разнице подать сигнал на дисретные выходы и если разница будет положительна, то

загорается лампочка вправо, если отрицательна, то влево.


Пока писал, догадался ,но не до конца.

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

petera
15.01.2016, 16:06
Здравствуйте!
Вы мне подсказали как учитывать время работы.
А можете мне подсказать как отслеживать время работы, не после выключения, а в момент работы!
И в момент работы и после выключения

VAR
I: REAL;
R_TRIG_1: R_TRIG;
Start: TIME;
Tim_Cycle: UDINT; (*Время работы двигателя в текущем цикле работы в секундах*)
delta: UDINT;
Time_SumOld: UDINT;
Tim_CycleOld: UDINT; (*Время работы двигателя в предыдущем цикле работы в секундах*)
END_VAR
VAR RETAIN
Time_Sum: UDINT; (*Время работы двигателя, ИТОГО в секундах*)
Cycle: UDINT; (*Число пусков двигателя*)
END_VAR

R_TRIG_1(CLK:= I>0, Q=> );
IF R_TRIG_1.Q THEN
Start:=TIME();
Cycle:=Cycle+1;
END_IF

IF I>0 THEN
delta:=TIME_TO_DWORD(TIME()-Start)/1000;
Tim_Cycle:=delta;
Time_Sum:=Time_SumOld +delta;
ELSE
Time_SumOld:=Time_Sum;
Tim_CycleOld:=Tim_Cycle;
END_IF

CleanS
15.01.2016, 16:11
День Добрый!

Вопрос по CoDeSys 2.3.
Создан проект. Проверен. Ошибок и замечаний нет. Откомпилирован. В режиме Эмуляция - Онлайн запускается, но при нажатии кнопки "Старт" (F5) редактор выдаёт окно с ошибкой "Доступ по не существующему адресу! ПЛК остановлен."

Вопрос. Где "собака порылась"? ... и как победить проблему?
21758

Спасибо!

Василий Кашуба
15.01.2016, 17:54
Уважаемые форумчане, подскажите начинающему инженеру как реализовать сей
проект(восстанавливаю погрузчик):
крутишь руль и колесо отрабатывает тот же угол поворота , имеются следующие компоненты:
Есть датчик угла поворота руля которым управляют и датчик угла поворота
колеса. они оба подключены на 1 и 2 входы Fast analog inputs.
Все собрано на контроллере PLC160.
К выходам уже прикручены устройства для управления силовой сетью(но для пробы прикрутил
лампочки на 24V одна влево, другая вправо). они обе подключены на 1 и 2 входы Discrete
outputs.
Думаю что надо задать переменные на вход аналоговых сигналов
и при разнице подать сигнал на дисретные выходы и если разница будет положительна, то
загорается лампочка вправо, если отрицательна, то влево.
Пока писал, догадался ,но не до конца.
надо бы выставить погрешность побольше у аналоговых входов(то есть к примеру значение 5,2312 преобразовать в 5 ) в значениях, а то двигатель не остановиться резко и "загорается другая лампа"21757
Попробуйте вот так. 21761

Yegor
15.01.2016, 17:56
CleanS Как всегда: по кусочкам удалять программу пока ошибка не исчезнет. Изолировать таким образом ошибку до минимальных единиц языка. С результатами возвращаться сюда на форум, если останутся вопросы. Ещё вариант — выложить проект в открытый доступ.

ООО "БЛС инжинеринг"
15.01.2016, 20:57
Ребята кто подскажет (покажет) как можно сделать так чтоб при первой загрузки проекта в ПЛК были уставки по умолчанию,
но эта уставка должна быть RETAIN и эта переменная должна потом меняться с операторской панели по протоколу Modbus RTU
21771

petera
15.01.2016, 22:11
Ребята кто подскажет (покажет) как можно сделать так чтоб при первой загрузки проекта в ПЛК были уставки по умолчанию,
но эта уставка должна быть RETAIN и эта переменная должна потом меняться с операторской панели по протоколу Modbus RTU
21771
Скорей всего так
21779

Scream
15.01.2016, 22:18
Ребята кто подскажет (покажет) как можно сделать так чтоб при первой загрузки проекта в ПЛК были уставки по умолчанию,
но эта уставка должна быть RETAIN и эта переменная должна потом меняться с операторской панели по протоколу Modbus RTU
21771

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

ООО "БЛС инжинеринг"
15.01.2016, 22:33
Спасибо за помощь, попробую.:)

Evgenyi
18.01.2016, 10:19
Вопрос, какая максимальная дальность передачи сигнала по RS-485?

Вольд
18.01.2016, 10:23
Вопрос, какая максимальная дальность передачи сигнала по RS-485?

По стандарту 1200 м.

BK201
20.01.2016, 13:29
Здравствуйте. Подскажите пожалуйста, как можно экспортировать таблицу modbus-регистров из конфигурации ПЛК (Modbus access properties на скриншоте). Тэгов много, выписывать регистры руками долго.
http://rghost.ru/6pTyXwVWl/image.png

energvk
20.01.2016, 14:24
Всем добрый день.
Решил разобраться как работать по modbus через библиотеку, а не через конфигурацию. Опрос получается успешно. Читаю несколько регистров и пишу их в заранее сформированную структуру

pRead1:=ADR(bufRead);
bufRead1:=pRead1^;
Сюрпризом стало, что чередование байт не совпадает (как то изначально не задумывался над этим). Соответственно, чтобы получить значение переменной, например WORD, x1:=bufRead1.in_x1 не подходит, а писать к каждой переменной:

x1:=BYTE_TO_WORD(bufRead[20]) OR SHL(BYTE_TO_WORD(bufRead[19]),8)
а есть ещё и DWORDы и REAL - совсем получается некрасиво. Думаю, что каждую структуру можно загнать в цикл и переставить байты местами, но вот с этим пока мне не очень понятно. Может гуру толкнут в правильном направлении?:rolleyes:

P.S.
сваял такую штуку:


pBuf:=ADR(bufRead);
FOR i:=0 TO 23 BY 2 DO
p:=ADR(pBuf^[i])+1;
p1:=ADR(pBuf^[i]);
p1^:=p^;
p1:=p1+1;
p:=p-1;
p1^:=p^;
i:=i+1;
END_FOR;
pRead1:=ADR(pBuf);
bufRead1:=pRead1^;

Где bufRead1 - структура, а pRead1, соответственно указатель на эту структуру.
Не работает...:(

Всё, вопрос неактуален, разобрался сам.

Чужой
23.01.2016, 09:26
подскажите пожалуйста.....
ПЛК 160 <=> АС3-М -------- RS485 800m ------- АС4 <=> ПК CodeSys будет работать?

ООО "БЛС инжинеринг"
23.01.2016, 10:15
Как можно сделать такую логику, при нажатии на кнопку появляется 1 а при повторном нажатии на эту же кнопу появляется 0?

capzap
23.01.2016, 10:56
Как можно сделать такую логику, при нажатии на кнопку появляется 1 а при повторном нажатии на эту же кнопу появляется 0?

ищите по ключевым словам toggle switch

ООО "БЛС инжинеринг"
23.01.2016, 12:23
ищите по ключевым словам toggle switch

Если не секрет где и как в CoDeSys V2.3 на CFC это искать?

Эдуард_Н
23.01.2016, 12:35
Как можно сделать такую логику, при нажатии на кнопку появляется 1 а при повторном нажатии на эту же кнопу появляется 0?

наверное как то так

rovki
23.01.2016, 12:48
А что Т триггера нет что ли :confused:

petera
23.01.2016, 12:48
наверное как то так
Узнаю картинку http://www.owen.ru/forum/showthread.php?t=13655&p=94449&viewfull=1#post94449 :rolleyes:

ООО "БЛС инжинеринг"
23.01.2016, 13:01
Спасибо вам:)

Эдуард_Н
23.01.2016, 14:31
Узнаю картинку http://www.owen.ru/forum/showthread.php?t=13655&p=94449&viewfull=1#post94449 :rolleyes:

Решение очень простое и хорошее. И конечно спасибо Вам за него.:o

PAVELJ
24.01.2016, 15:11
Petera, добрый день!
Я новичок, но у меня есть задача запускать насос с помощью ПЛК100 в течении недели по графику в определенные часы (5 раз в течении дня), соответственно и останавливать в каждый цикл.
На форуме увидел Ваш недельный таймер, объясните пожалуйста, как записать его в проект и как настроить, пока ничего не понимаю.
С уважением,
Павел

Evgenyi
25.01.2016, 13:00
Такой вопрос!
Есть несколько двигателей, и насосов. На всех есть датчик тока. Через МВ передаем данные в ПЛК. Все работаю от 15 минут до 10 часов, когда какой цикл тех процесса. С половиной насосов и двигателей проблем нет. А половина показывает что у них ток прыгает от 0 до 60 ампер и как каждые 30-60 секунд. Что может быть?

Yegor
25.01.2016, 18:10
Здравствуйте. Подскажите пожалуйста, как можно экспортировать таблицу modbus-регистров из конфигурации ПЛК (Modbus access properties на скриншоте). Тэгов много, выписывать регистры руками долго.Есть одно близкое решение в разработке, которое я планирую на днях опубликовать. На входе — проектный файл, на выходе через шаблонизатор — регистры в нужном виде.

22018

Только оно делается под овеновский модбас, а на вашем скриншоте что-то незнакомое. Что это?
А половина показывает что у них ток прыгает от 0 до 60 ампер и как каждые 30-60 секунд. Что может быть?Без проекта только гадать остаётся. Попробуйте медленнее считывать. Или на ПК программу напишите, чтобы контроллер исключить. Если осциллограф есть, то им можно удостовериться в наличии или отсутствии этих скачков перед модулем.

nensist
25.01.2016, 23:19
Приветствую Всех!
Помогите новичку реализовать функцию 4 ступенчатого нагрева по Pid закону для поддержания заданной температуры
Какой ФБ Pid регулятора лучше использовать?
Codesys V 2.3 ПЛК110

Валенок
26.01.2016, 01:10
Любой. Например pid (util.lib) Работает не регулятор а его настройки.
Выход пропустить через целочисленный гистерезис.

nensist
26.01.2016, 08:45
Любой. Например pid (util.lib) Работает не регулятор а его настройки.
Выход пропустить через целочисленный гистерезис.

Если не трудно могли бы показать примером? Очень был бы благодарен!:)

Evgenyi
26.01.2016, 16:33
Как подключить EKON134 к Lectus OPC-server по TCP/IP?
дайте ссылку
я пытался не опрашивает приборы

Sherverpupa
26.01.2016, 22:21
подскажите, есть возможность отлаживать мастер-скада проект без контроллера?

Имею ситуацию: плк овен 110, софт написан на кодесис. На мастерскада делаю арм оператора.
Использую ОРС кодесис. Контроллера на руках нет. Запускаю кодесис в режиме эмуляции.
В мастер скада не видны данные из ОРС (на вкладке "данные" - пишет "нет соединения" ).

Как я понимаю, кодесис в эмуляции контроллер не заменяет (или я чтото недонастроил ?).

PLCWinNT подключить не получилось, пишет ошибка соединения #0 (есть вообще где-нибудь дока на PLCWinNt ?)

что посоветуете? Как отлаживать программу ?

krollcbas
26.01.2016, 22:22
Если не трудно могли бы показать примером? Очень был бы благодарен!:)
Вам нужен пример вызова?


PID_K5(
ACTUAL:=RM4_PV ,
SET_POINT:= RM4_SP,
KP:=10 ,
TN:= 30,
TV:= 0,
Y_MANUAL:= K5_Y_MANUAL,
Y_OFFSET:=0.1 ,
Y_MIN:= 5,
Y_MAX:=55 ,
MANUAL:= K5_MAN,
RESET:= K5_RESET,
Y=> K5_Y_M,
LIMITS_ACTIVE=> K5_LIMITS_ACTIVE,
OVERFLOW=>K5_OVERFLOW );

Или как работает?
22049

nensist
26.01.2016, 23:35
Вам нужен пример вызова?

Или как работает?
22049

Суть в том как привязать к выходу PID регулятора включение ступеней нагрева?
Правильно ли будет определить для каждой ступени мощность, соответственно включение и выключение ступений будет зависеть от выходной мощности PID
С самим регулятором сегодня разобрался

krollcbas
27.01.2016, 02:05
nesist, можете нарисовать график того процесса, который хотите получить?
PV, SP, Out

nensist
27.01.2016, 07:52
nesist, можете нарисовать график того процесса, который хотите получить?
PV, SP, Out
График не нарисую, а на словах расскажу. Имеем мини электрокотельную в школе. Состав котельной 4 котла по 25 Квт. Вот и надо мне поддерживать температуру в контуре отопления путем включения ступеней (котлов). Количество включенных ступеней должно управлятся регулятором в зависимости от требуемой мощности на поддержание температуры

Игорюня
27.01.2016, 08:40
График не нарисую, а на словах расскажу. Имеем мини электрокотельную в школе. Состав котельной 4 котла по 25 Квт. Вот и надо мне поддерживать температуру в контуре отопления путем включения ступеней (котлов). Количество включенных ступеней должно управлятся регулятором в зависимости от требуемой мощности на поддержание температуры

У меня на котельных работает в таком режиме: Температура упала, включается первая ступень, через 15 мин, если температуры не хватает, включается вторая и т.д., при наборе температуры все ступени выключаются, таймеры обнуляются. Работает с момента появления ПР110. Нареканий еще не было. Температурный график поддерживается в норме.

nensist
27.01.2016, 12:59
Тоже как вариант!
Но все же какие решения есть еще?
Вот что я попробовал сделать
22072

Валенок
28.01.2016, 00:00
Вы бы развели задачу получения нужного кол-ва котлов и задачу установки нужного кол-ва котлов.
В реальном мире любой котел в любое время может отвалится в аварию.

Владимир Ситников
28.01.2016, 00:26
В реальном мире любой котел в любое время может отвалится в аварию.
И, наверное, разумно раз в неделю ротировать котлы?
Так сказать, чтобы не получилось, что "2 года работали на одном-единственном, и за это время все остальные вообще сломались и теперь вообще трындец".


ГСостав котельной 4 котла по 25 Квт. Вот и надо мне поддерживать температуру в контуре отопления путем включения ступеней (котлов). Количество включенных ступеней должно управлятся регулятором в зависимости от требуемой мощности на поддержание температуры
Если несколько котлов, то, гидравлический разделитель есть?
Котлы совсем бестолковые или они могут "пытаться выработать определённую температуру подачи"?
Если могут, то на котлах делаем уставку "температура подачи должна быть 60C" (ну или сколько там).

"мозг" делает так:
1) Если нужно греть -- добавляет котёл
2) "включенные котлы" пытаются греть. Если не могут, то через какое-то время "мозг" должен ещё котёл включить.
3) Если оказалось, что реально расходуемая мощность (на поддержание тех самых 60C подачи) это 120% от одного котла, то два котла через како-то время начнут работать "на 60% мощности".
Какое условие на то, что "пора отключать котёл" -- хз.

Или электрокотлы так не работают?

Валенок
28.01.2016, 00:47
И, наверное, разумно раз в неделю ротировать котлы?
а то ж. Код так и выглядит:
if я_уже_неделю_работаю.q и а_бамбук_курит > 0 then пойду_посплю(); end_if


"мозг" делает так:1).. 2)..
1) в некотором смысле П-часть
2) чисто И-часть

Какое условие на то, что "пора отключать котёл" -- хз
Вытечет из 1) и 2).


Или электрокотлы так не работают?
Разве это имеет какое-то значение ?

Владимир Ситников
28.01.2016, 01:09
Разве это имеет какое-то значение ?
Ну, разработчики котлов думали, делали несколько ступеней нагрева (или вообще модуляцию), а тут приходит такой, простите, Валенок на белом коне и говорит: "Всю модуляцию -- лесом, будем только включать и отключать".

Логично, чтобы оно не включалось-отключалось постоянно, а выдавало ровно ту мощность, которая потребляется?
Недавно обсуждали же "ШИМ на Р выходах" :)

Валенок
28.01.2016, 02:09
Просто напомню модулирующим коникам:
1.Автор сказал - 4 ступени.
2.Автор в собственном примере выкатил 4 буля работающих тупо по 4 уровням. И вроде как доволен.
Настоящие жентельмены придумываютъ правила по ходу игры ?


Логично, чтобы оно не включалось-отключалось постоянно, а выдавало ровно ту мощность, которая потребляется?
1.Это логично когда прибор может это делать. См.выше.
2.Видимо автор хочет выйти за рамки черно-белого набора из {"включалось-отключалось постоянно","выдавало ровно ту мощность, которая потребляется"}
3.Кстати - а где заканчивается "постоянно" ? Пока вижу что раз в неделю это не постоянно. А раз в сутки ?

nensist
28.01.2016, 08:19
Котлы эти простые электродные, сами они мощность регулировать не могут, тупо включен-выключен.
Каждый котел по 25 Квт, всего мощности надо 100 Квт в самую холодную пору. Вот и сделано 4 ступени.
Сейчас по факту на объекте стоит очень кривой шкаф с гистеризисным терморегулятором.
Оператор котельной путем включения силовых автоматов включает нужное количество ступеней допустим все 4, соответственно регулятор включает и выключает одновременно включенное количество ступеней.
Допустим температура заданная 60 градусов и гистерезис 10, соответственно происходит быстрый набор до 70 , далее выключение, следующее включение при 60. Все это очень часто шарабанит, имею ввиду пускатели (долго не живут) и происходит этот разброс от заданной температуры.

Владимир Ситников
28.01.2016, 09:04
Просто напомню модулирующим коникам:
1.Автор сказал - ...

Настоящие жентельмены придумываютъ правила по ходу игры ?

Джентльмены уточняют требования. Ведь из слов "4 ступени" никак не следует насколько интеллектуальны ступени сами по себе.

Валенок
28.01.2016, 09:51
Джентльмены уточняют требования..
И выше - ответили
И здеся - форум. Я, простите, глубоко уточняю нюансы перед подписанием договора ))


--

Допустим температура заданная 60 градусов и гистерезис 10, ...быстрый набор до 70 , .. выключение, следующее включение при 60. Все это очень часто шарабанит, имею ввиду пускатели (долго не живут)
Если т-ра часто болтается за пределами 60..70 и при этом переключается 1 котел и каждый раз он меняется и при этом "шарабанит" - ни х. Вы не сделаете. Сделать возможно только :
1.Изменение квантования нагрузки.
2.Изменение инерционной хар-ки объекта
3.Привести хотелки в соответствие к реальности

1-например замена котлов на конно-модулирующие или многоступенчатые
2-увеличения объема циркулирующей воды (самое простое)
3-имхо, самое простое - увеличить гистерезис

Вполне может быть просто ошибка проекта. Если т-ра помещения не летает , а т-ра воды контура летает + - 10, то есть тупо плохой теплосъем с контура. В цепочке теплопередачи котел-вода-воздух узким звеном является вода-воздух.
4.Не соответствующая циркуляция
5.Не соответствующие приборы отопления.

Т.к. информации - мало. То подытожу :
Надо делать: [1] + [2] + [3] + [исправить 4] + [исправить 5] + [X]
где X дополнительное решение по неожиданно всплывающей очередной порции информации. Причем очередное X может полностью перечеркнуть предыдущее решение.

PS
По теме.
Выход пида может дать нужное кол-во котлов полностью упразднив ton/tof'ы.
Для выборки нужного кол-ва проще проюзать массив котлов. Квадратики для массивов заточены не очень.

Валенок
28.01.2016, 12:05
Недавно обсуждали же "ШИМ на Р выходах" :)
А смысл того обсуждения когда у оппонента карта в рукаве ? Тихонько так нюансик затихарили.
Хотите продолжить ту полемику ? ))

Владимир Ситников
28.01.2016, 12:56
Хотите продолжить ту полемику ? ))

Я и не начинал.


выкатил 4 буля работающих тупо по 4 уровням. И вроде как доволен
автор_доволен != система_хорошо_работает.
Поэтому и уточняю про модуляцию. Не более.


Разве это имеет какое-то значение ?
Имеет. И, да, на момент #4813 разве что телепаты могли догадываться, что модулировать конкретные котлы не умеют.



Где полемика-то?
Вот это, так вообще одно и то же, но разными словами сказанное:

Недавно обсуждали же "ШИМ на Р выходах" :)

1 котел и каждый раз он меняется и при этом "шарабанит" - ни х. Вы не сделаете.

Валенок
28.01.2016, 13:45
И, да, на момент #4813 разве что телепаты могли догадываться..
Особенно если они не читали пост #4801.


Поэтому и уточняю про модуляцию. Не более.
Автор из ПИДа хочет/хотел вытянуть дискреты. Было бы аналоговое регулирование - возник бы пост#4801 ?


Вот это, так вообще одно и то же, но разными словами сказанное:
Вообще-то не одно и тоже )) Полная фраза
"Если т-ра часто болтается за пределами 60..70 и при этом переключается 1 котел и каждый раз он меняется и при этом "шарабанит" - ни х. Вы не сделаете"
Попробую перевести :
Сочетание хотелок && хар-тик исп.механизмов (котлы) && хар-тик объекта управления может быть недостижимым.
Изменения необходимы хотя бы в одном пункте.
Откуда тут выплыл релейный ШИМ ?

nensist
28.01.2016, 15:40
И выше - ответили
И здеся - форум. Я, простите, глубоко уточняю нюансы перед подписанием договора ))


--

Если т-ра часто болтается за пределами 60..70 и при этом переключается 1 котел и каждый раз он меняется и при этом "шарабанит" - ни х. Вы не сделаете. Сделать возможно только :
1.Изменение квантования нагрузки.
2.Изменение инерционной хар-ки объекта
3.Привести хотелки в соответствие к реальности

1-например замена котлов на конно-модулирующие или многоступенчатые
2-увеличения объема циркулирующей воды (самое простое)
3-имхо, самое простое - увеличить гистерезис

Вполне может быть просто ошибка проекта. Если т-ра помещения не летает , а т-ра воды контура летает + - 10, то есть тупо плохой теплосъем с контура. В цепочке теплопередачи котел-вода-воздух узким звеном является вода-воздух.
4.Не соответствующая циркуляция
5.Не соответствующие приборы отопления.

Т.к. информации - мало. То подытожу :
Надо делать: [1] + [2] + [3] + [исправить 4] + [исправить 5] + [X]
где X дополнительное решение по неожиданно всплывающей очередной порции информации. Причем очередное X может полностью перечеркнуть предыдущее решение.

PS
По теме.
Выход пида может дать нужное кол-во котлов полностью упразднив ton/tof'ы.
Для выборки нужного кол-ва проще проюзать массив котлов. Квадратики для массивов заточены не очень.
Весь гидравлический режим будет полностью исправлен, от насосов до теплообменника.
Весь вопрос как реализовать действительно правильную и предсказуемо логику по выбору требуемого количества котлов для поддержания заданной температуры

Валенок
29.01.2016, 08:53
Если в кач-ве рег-ра использован пид (п.#4801), то :
щас_бы : int; //насосов
---
pid(..);
щас_бы := щас_бы + trunc(pid.y - щас_бы * 25) / 25; //выход с пида - 0..100%, 25 - сами

nensist
29.01.2016, 11:30
Если в кач-ве рег-ра использован пид (п.#4801), то :
щас_бы : int; //насосов
---
pid(..);
щас_бы := щас_бы + trunc(pid.y - щас_бы * 25) / 25; //выход с пида - 0..100%, 25 - сами

а можно более подробно разжевать? Мы еще люди начинающие

Валенок
29.01.2016, 20:33
а можно более подробно разжевать? Мы еще люди начинающие
Вот. На пальцах

nensist
29.01.2016, 22:06
Вот. На пальцах

Спасибо большое, поизучаю ))

Валенок
29.01.2016, 23:41
Заодно, надеюсь, найдете где не хватает пары скобок

Владимир Ситников
30.01.2016, 00:12
Заодно, надеюсь, найдете где не хватает пары скобок

Жесть какая. А я попробовал -- у меня завелось сходу (ну с точностью до уставок и параметров pid)

nensist
30.01.2016, 00:19
Заодно, надеюсь, найдете где не хватает пары скобок

Попробую:D

ASka
01.02.2016, 18:35
Извеняюсь не туда

krollcbas
01.02.2016, 18:48
http://www.owen.ru/uploads/primer_8.pdf
Все есть на данном сайте

Evgenyi
02.02.2016, 17:27
Кто-то сталкивался с проблемой эмулятор com-port для ЕКОН 134 не работает в windows 8.
Может кто знает как эту беду победить?

ООО "БЛС инжинеринг"
05.02.2016, 20:24
Я использую ПЛК-160 на нём должно быть всего 12 дискретных выходов 22379 но у меня почему то их 16 22381
Кто знает почему так получилось и на что это может влиять

_Mikhail
05.02.2016, 20:52
Я использую ПЛК-160 на нём должно быть всего 12 дискретных выходов 22379 но у меня почему то их 16 22381
Кто знает почему так получилось и на что это может влиять

дискретных выходов 12. В конфигураторе ты видишь незадействованные биты.

ООО "БЛС инжинеринг"
05.02.2016, 22:51
дискретных выходов 12. В конфигураторе ты видишь незадействованные биты.

Спасибо :)

vooodooo22
06.02.2016, 16:34
Прошу прощения быть может за глупый вопрос.

Почему ПЛК ОВЕН 110-30М при запуске программы с исходным кодом описанным ниже перезапускается с ошибкой связи (Ошибка связи (#0): произошло отвключение)? ВотчДог не помогает =)




PROGRAM PLC_PRG (*необязательно основная программа, может быть функцией, которая вызывается где-нибудь по среди кода*)
VAR
Counter : UDINT;
END_VAR
---------------------------------------------

(*пробовал вставить данный кусок кода в свою программу как "задержку" - приостановка потока*)
FOR Counter:=1 TO 9999000 BY 1 DO
; (*или любое другое выражение*)
END_FOR



Интересно чисто из любопытства)) Я хотел поток контроллера занять в цикле на некоторое время =) а потом отпустить %) не выходит XD

Вся беда в том, что функция UdpReceiveData() в биб-ке TcpUdpLib.lib на ПЛК ОВЕН 110-30М при первом обмене данными по UDP не принимает пакет (именно при ПЕРВОМ!), хотя WireShark показывает, что пакет приходит (ПЛК общается с коммутатором, ПК смотрит зеркальный порт). После повторной попытки обмена все нормально, обмен успешен и далее тоже все нормально. Как только сокет переоткрываем, опять такая же ерунда с первым пакетом.

На PLC WinNTv2.4 все нормально, таких проблем нет.

Пробовал поставить точку останова перед функцией UdpReceiveData(). Программа стопорнулась, я запустил ее дальше и вуаля, пакет доставлен. Как будто программе/потоку нужно задержка/время на обработку данных %)

В чем может быть проблема? =(((

amn
06.02.2016, 17:16
Чтобы "собака" не срабатывала попробуйте сделать задержку так в PLC.PRG в самом начале:
delay:bool;

IF delay THEN
RETURN;
END_IF

можно таймер поставить.

almap
08.02.2016, 12:59
Добрый день,
пытаюсь решить, как мне казалось, простейшую задачу.
Прописать в Codesys управление освещением.
Несколько зон освещения должны включаться плавно, желательно и выключаться плавно (это еще не думал как реализовать). Для этого планирую использовать твердотельные реле с входом управления 0-10V и модуль аналогового выхода.
Пока не нашел ни одного внятного примера в интернете, как это прописать в Codesys.
Пробую написать с использованием PID. Тестирую пока только в режиме эмуляции с использованием визуализации.
Столкнулся с проблемой, что иногда при появлении 1 на входе, перед плавным включением, происходят броски на выходе до 10, а уже после плавное увеличение с 0 до 10.
Может кто подскажет на моем примере, какой(ие) параметры я неправильно выставляю?
22501

rovki
08.02.2016, 13:10
зачем вам пид ,просто задатчик -наращивание значения (прирощение) ЧЕРЕЗ ADD

Yegor
08.02.2016, 13:30
almap, в библиотеке Util.lib (http://www.owen.ru/catalog/codesys_v2/67395347) есть RAMP_REAL и RAMP_INT.

22502

PID решает другую задачу — достижение уставки в максимально короткое время с минимальным перерегулированием и минимальными осцилляциями в цепях с обратной связью.

almap
08.02.2016, 14:01
almap, в библиотеке Util.lib (http://www.owen.ru/catalog/codesys_v2/67395347) есть RAMP_REAL и RAMP_INT.

22502

PID решает другую задачу — достижение уставки в максимально короткое время с минимальным перерегулированием и минимальными осцилляциями в цепях с обратной связью.


Спасибо! Попробую вечером.

Sherverpupa
08.02.2016, 17:29
Вопрос по ОРС серверу for CodeSys.
В проекте добавил глобальную переменную, в программе участвует.
Сделал "Очистить все", "Компилировать все". Проверил что в "настройке символьного файла" она появилась и птица возле нее стоит.

Пробую использовать ее в проекте мастерскада.
В ОРС сервере новой переменной не видно. Даже в перечне доступных переменных.

Что я делаю не так ? Как добиться чтобы переменная появилась в ОРс сервере ?

UPD. Переменная появилась после загрузки проекта в контроллер.
А когда нет в руках контроллера (как у меня сегодня днем) - что делать ? :mad:

ООО "БЛС инжинеринг"
08.02.2016, 22:08
Может кто-то из вас использовал преобразователь частоты Omron MX2 и управлял ним из ПЛК-110 по ModBus RTU
Вопрос хочу разобраться с регистрами, не могу в ехать в них

ООО "БЛС инжинеринг"
09.02.2016, 00:00
Может кто-то из вас использовал преобразователь частоты Omron MX2 и управлял ним из ПЛК-110 по ModBus RTU
Вопрос хочу разобраться с регистрами, не могу в ехать в них
22507 2250822509

ООО "БЛС инжинеринг"
09.02.2016, 23:32
Используя арифметический оператор SUB у меня вот так получается 22541 как можно сделать чтоб не было меньше нуля и такой белеберды?

rovki
09.02.2016, 23:42
поставьте сравнение и SEL .Если верхнее число больще ,то на выход разница ,если нет ,то ноль.как вариант

ООО "БЛС инжинеринг"
09.02.2016, 23:50
поставьте сравнение и SEL .Если верхнее число больще ,то на выход разница ,если нет ,то ноль.как вариант

А как его правильно подключить в моём случаи?
Если можно пример или скриншот, СПАСИБО!

rovki
09.02.2016, 23:54
А как его правильно подключить в моём случаи?
Если можно пример или скриншот, СПАСИБО!
вот для ПРки

Валенок
10.02.2016, 08:33
Используя арифметический оператор SUB у меня вот так получается как можно сделать чтоб не было меньше нуля и такой белеберды?
Почему белиберда ? Нормальный -1

capzap
10.02.2016, 08:38
Используя арифметический оператор SUB у меня вот так получается 22541 как можно сделать чтоб не было меньше нуля и такой белеберды?

поддержу Валенка, белеберда у Вас в окне объявлений, к соответствующему типу приведите переменную f1 и должно будет показать отрицательное значение

ohwow
10.02.2016, 11:17
Помогите разобраться. Есть таблица с командами протокола Modbus из РЭ.22554 Нужно считать эти значения измеренных напряжения по входам A B C с модуля МЭ110 и передать через протокол MODBUS. Я в программе CodeSys создал Universal Modbus Device c тремя Real Input Module. Какие значения адреса регистра нужно указать используя таблицу из РЭ? 22555

Yegor
10.02.2016, 13:36
80, 82 и 84 (это 0x50, 0x52 и 0x54, переведённые из шестнадцатеричной в десятичную систему счисления из второго столбца).

Bloodtrail
10.02.2016, 17:37
Ребята, а можно ли как-то в плк63 отключить системные настройки? а то кнопки в моей программе отвечают за запуск тех или иных выходов, а вот меню при нажатии на любую из кнопок выскакивает, боюсь не туда зайти. Вот меню->(его и пытаюсь отключить) 22563
Монопольный режим может помочь заблокировать системное меню?

Валенок
10.02.2016, 20:40
Как думаешь, для чего галки для "показывать в меню", "разрешить изменения значения с передней панели" ?

Bloodtrail
10.02.2016, 22:37
"разрешить изменения значения с передней панели"
как я понял, Вы говорите про это?22567, но тут галку изменить невозможно (PLC-63 L)

ASo
10.02.2016, 22:53
1. В монопольном режиме вход в системное меню не возможен. Но можно переключиться в рабочий режим ныне не документированной, но все еще действующей комбинацией клавиш.
2. Что значит редактирование для раздела? Это бессмысленно.
3. Любую подобную "галку" можно поменять через экспорт - редактирование текста - импорт.

melky
12.02.2016, 09:03
Bloodtrail и что вы планируете менять, если переменная даже не будет отображаться ?

Bloodtrail
12.02.2016, 10:31
У меня кнопки "зашиты" в программе на управление конвейером. Так кнопка Пуск/Стоп запускает и останавливает конвейер, кнопка Альт. включает режим диагностики и тд. Информация на ЖКИ будет выводиться о состоянии конвейера в данный момент времени, но вот отображение системного меню портит картину :(

Valeri_Puikonen
16.02.2016, 05:57
Подскажите пожалуйста.
В режиме эмуляции, записываю значение ТРУ в переменную Старт, цепь проходит до катушки, но катушка почему-то все равно имеет значение Фалс.
22648

Yegor
16.02.2016, 06:06
ФалсФолс. Программа запущена (F5)?

Valeri_Puikonen
16.02.2016, 23:05
Блин. Спс. Точно Ф5.

Алексей Геннадьевич
17.02.2016, 13:26
В режиме онлайн в окне "выполнение задач" как прокрутку вверх-вниз активировать?:confused:
22708

ymnuhj
17.02.2016, 15:44
Добрый день.

Подскажите пожалуйста как управлять аналоговыми выходами и получать значения с аналоговых входов на языке LD. Если можно простейший пример в фотографии

almap
23.02.2016, 11:50
Добрый день.
Помогите пожалуйста с конфигурацией и/или настройкой модуля аналогового вывода МУ110-6У.
Собрал щиток
ПЛК110 + МВ110-16ДН +МУ110-16Р+МУ110-6У
Последний должен управлять твердотельными реле 0-10В.
Все работает, кроме МУ110-6У. Уже перепробовал похоже все варианты с конфигурацией и настройкой в Кодесис. Явно ошибка рядом, но не понимаю где.
Произвел конфигурацию всего оборудования на Modbus RTU, 9600. Адреса приборов задал сперва 20,30 и 40, а после последний заменил на 16 адрес.
Индикация RS-485 при работе мигает на всех устройствах, но на МУ110-6У мигает медленнее.
Захожу через конфигуратор, включаю принудительно выходы, все работает! Через ПЛК и кодесис не реагирует.
22801
22802
22803
22804
22805
22806
22807
22808
22809

Николаев Андрей
23.02.2016, 15:05
В этом документе найдете ответ:
http://www.owen.ru/uploads/re_mu110-6u_1833.pdf
Стр. 35
Передается целочисленное значение (int) от 0 до 1000

almap
23.02.2016, 16:42
Андрей, сори, может я конечно не понял, но вроде я именно 1000 передаю из кодесис, а реакции нет:
Вот например, фото с экрана, кодесис подключен к ПЛК, на выход 1 отправлено "1000", но на выходе с МУ110-6У реакции нет.
22811

Вот задаю принудительно на выход 2 "1000", реакции тоже нет
22812
22813

Или вы имели ввиду, что у меня в настройках что неправильно?

almap
23.02.2016, 18:10
Все понял! Спасибо. ключевое было "int". Заменил Real out в настройках модуля в codesys и все заработало.
Андрей, большое Вам спасибо, что направили в нужном направлении.

ООО "БЛС инжинеринг"
26.02.2016, 22:49
Добрый вечер! Кто подскажет вот у нас есть среда программирования CoDeSys V2 или 3
а какие контроллеры можно программировать кроме "ОВЕН" c какими бредндами CoDeSys дружит?

Andrew_Stranger
26.02.2016, 22:55
Вас в гугл не пускают?

ООО "БЛС инжинеринг"
26.02.2016, 23:11
Вас в гугл не пускают?

Пускают но возможно что человек это интеллект а не поиск...
WAGO, Fastwel, какие ещё можно использовать?

ООО "БЛС инжинеринг"
27.02.2016, 11:58
Пускают но возможно что человек это интеллект а не поиск...
WAGO, Fastwel, какие ещё можно использовать?

Больше не кто не знает?

Евгений Кислов
27.02.2016, 12:23
Больше не кто не знает?

http://devices.codesys.com/device-directory.html

ООО "БЛС инжинеринг"
27.02.2016, 12:48
http://devices.codesys.com/device-directory.html

Спасибо :)

Andrew_Stranger
27.02.2016, 18:05
Пускают но возможно что человек это интеллект а не поиск...
WAGO, Fastwel, какие ещё можно использовать? Учитывая нынешний курс, я думаю дальше от Овена не убежите:).

sergei24
28.02.2016, 18:37
22882
Столкнулся с такой проблемой у ПЛК 150UL не компилируется CODESYS v.2 пишет такую хр..нь, а надо подключить 7 модулей МВ110ххх, и периферию.
хотя такого не было замечено на ПЛК 100RL подключено было 9 модулей с панелью,
и ПЛК 154UL 6 модулей, и периферия разная все нормально было.
Таргет файл последний.
Что может быть?

Василий Кашуба
28.02.2016, 19:59
22882
Столкнулся с такой проблемой у ПЛК 150UL не компилируется CODESYS v.2 пишет такую хр..нь, а надо подключить 7 модулей МВ110ххх, и периферию.
хотя такого не было замечено на ПЛК 100RL подключено было 9 модулей с панелью,
и ПЛК 154UL 6 модулей, и периферия разная все нормально было.
Таргет файл последний.
Что может быть?
А эти сообщения вам ничего не говорят? 22885

sergei24
28.02.2016, 20:38
Спасибо, понял ограничение памяти.
Как люблю этот ОВЕН.:confused:

capzap
28.02.2016, 20:47
Спасибо, понял ограничение памяти.
Как люблю этот ОВЕН.:confused:
Вы же сами покупаете лимитные плк, сперва жалко денег, а потом овен виноват или компания Вас заставила не глядеть в сторону М

krollcbas
28.02.2016, 20:55
Не понимаю зачем Овен развели такой огород ценовых вариантов. Только людей путают, заставляя наступать на грабли.
ПЛК150 вообще ловушка. Функций заложено уйма, а производительности там вообще нет. Нельзя и близко сравнивать с ПЛК110.

sergei24
28.02.2016, 21:51
Против ОВЕН не чего не имею, если чего сам дорабатываю. Потихоньку они убирают свои косяки.
Посмотрел на свои старые проекторы в 154 все ограничения сняли что у L 1FFF памяти, стока же памяти у M 1FFF, почему не убрать бы у всех остальных ограничение.
Тут проблема еще заказывать приходиться через службу обеспечения, а это отдельная организация.
А так покупался на один экструдер вполне хватало, а потом все переиграли добавили 2 экструдер и измерили диаметра.
Ладно всем спасибо, а все остальное это демагогия, буду запасаться вазелином.
Как я понял все проекты надо завязывать на новый ПЛК110M V2.
Как он по подводным камням?

capzap
28.02.2016, 21:58
перешли бы на библиотеку, проблем бы не было с любым плк. К тому же там на скрине шаблоны видны, их на производстве лучше не применять

sergei24
28.02.2016, 22:25
Значит будем плотно осваивать эту библиотеку.
Шаблоны использовал чтобы показать какая ошибка.
Вот скрин программы 22887
Времени совсем не осталось марте должно быть запущено, попытаюсь чтобы новый заказали, все равно производство модернизируют.
Но вазелина все равно много надо. :confused:

А еще вопрос панель тоже через библиотеку делать ?

sergei24
28.02.2016, 22:30
А еще вопрос панель тоже через библиотеку делать ?

capzap
28.02.2016, 22:44
если разные интерфейсы то можно и оставить в конфигураторе, только она тоже должна много места занимать, врядли хватит лимита

sergei24
28.02.2016, 22:50
Спасибо,
буду про бывать.

Givizub
29.02.2016, 17:00
Добрый вечер! Кто подскажет вот у нас есть среда программирования CoDeSys V2 или 3
а какие контроллеры можно программировать кроме "ОВЕН" c какими бредндами CoDeSys дружит?
Eaton серии от XС100 до XC202, но там своя особая версия CoDeSys и цена его будет поболее.

Givizub
29.02.2016, 17:08
Здравствуйте, нужно сделать регулятор соотношения в Codesys (теоретически). Имеется два расходомера переменного перепада давления для воздуха (Fv) и газа (Fg). Соотношение должно регулироваться в пропорции 1:10 к расходу газа. Правильно ли я изобразил это? Сначала сигнал дифманометра газа и воздуха в квадратической зависимости преобразуется через блок вычисления кв.корня. Затем газа умножается в 10 раз и подается на вход задания ПИД-регулятора, который уже регулирует подачу воздуха. Меня что-то смущает или это верный алгоритм? Возможно, у кого-то есть примеры такого регулятора.
22901

uni
01.03.2016, 09:41
ПЛК63. Как создать переменную типа BYTE, ссылающуюся на все дискретные выходы (входы)?

Валенок
01.03.2016, 17:47
Покликать по буковкам AT в конфигурации которые обозваны "Битовая маска входов" и вбить имя

uni
02.03.2016, 07:25
Спасибо, сам что-то не догадался. Со входами это сработало, а что делать с выходами, если я также хочу с ними работать? Как их объединить одной целой переменной?

И ещё вопрос. Можно ли в ST от CoDeSys использовать стандартные блоки с расширенными параметрами, например так:

MOV( btmp, 0, Outputs );

где btmp - это булевая переменная. Очень неудобно в условные блоки оборачивать. В некоторых других ST такой способ используется для всех стандартных наборов функций.

capzap
02.03.2016, 07:38
а зачем в ST такие блоки как mov использовать, Вы точно сейчас про паскалеподобный язык говорите?

Yegor
02.03.2016, 07:44
а что делать с выходами, если я также хочу с ними работать? Как их объединить одной целой переменной?Подписать каждый выход (outN), где-нибудь создать байтовую переменную (outs) и в конце программы сделать что-то вроде out0 := SEL(outs.0, 0, 1); out1 := SEL(outs.1, 0, 1); ... например.

uni
02.03.2016, 08:10
Я раньше программировал на ST от Mitsubishi и привык к конструкциям вроде таких:


319 (* Задержка. *)
320 TON_1( IN := NOT btmp, PT := T#1s, Q := btmp, ET := ttmp );
321
322 (* Меняем текущее состояние выходов на обратное. *)
323 CML( btmp, Выходы, Выходы );
324
325 (* Переходим к тесту связи. *)
326 MOV( btmp, ТЕСТ_СВЯЗИ, Шаг );

Выходы инвертируются только когда btmp = TRUE. Переход к другому шагу также. Если вспомнить LAD, то там обязательно слева должен быть какой-нибудь контакт (источник). Так вот этот MOV используется в исходном виде, с учётом входа EN. Мне это удобно. И так со всеми функциями.

uni
02.03.2016, 08:31
Подписать каждый выход (outN), где-нибудь создать байтовую переменную (outs) и в конце программы сделать что-то вроде out0 := SEL(outs.0, 0, 1); out1 := SEL(outs.1, 0, 1); ... например.

Вариант, конечно, но я должен буду всегда пользоваться только outs, т.к. любое использование outN будет перезаписано. Нда, такие простые вещи и уже костыли. Буду думать.

capzap
02.03.2016, 09:53
Я раньше программировал на ST от Mitsubishi и привык к конструкциям вроде таких:


319 (* Задержка. *)
320 TON_1( IN := NOT btmp, PT := T#1s, Q := btmp, ET := ttmp );
321
322 (* Меняем текущее состояние выходов на обратное. *)
323 CML( btmp, Выходы, Выходы );
324
325 (* Переходим к тесту связи. *)
326 MOV( btmp, ТЕСТ_СВЯЗИ, Шаг );

Выходы инвертируются только когда btmp = TRUE. Переход к другому шагу также. Если вспомнить LAD, то там обязательно слева должен быть какой-нибудь контакт (источник). Так вот этот MOV используется в исходном виде, с учётом входа EN. Мне это удобно. И так со всеми функциями.

я правильно понял, что Вы называете приведенные функции CML и MOV стандартным набором языка МЭК?
такой способ используется для всех стандартных наборов функций

uni
02.03.2016, 11:31
Я хочу просто сократить запись (ПЛК63):



(* Тест светодиодов. *)
ELSIF Step = TEST_LEDS THEN

(* Включаем все светодиоды. *)
LedGreen1 := 1;
LedGreen2 := 1;
LedRed1 := 1;
LedRed2 := 1;

(* Задержка 2 секунды. *)
TON_1( IN := TRUE, PT := T#2s, Q => btmp, ET => ttmp );

(* Выключаем все светодиоды. *)
IF btmp THEN

LedGreen1 := 0;
LedGreen2 := 0;
LedRed1 := 0;
LedRed2 := 0;

(* Переходим к тесту входов. *)
Step := TEST_CHECKINPUTS;

END_IF;
Ну и такую вещь тоже хотел бы сократить:


(* Меняем текущее состояние светодиодов на обратное. *)
IF btmp THEN

LedGreen1 := BOOL_TO_REAL( NOT REAL_TO_BOOL( LedGreen1 ) );
LedGreen2 := BOOL_TO_REAL( NOT REAL_TO_BOOL( LedGreen2 ) );
LedRed1 := BOOL_TO_REAL( NOT REAL_TO_BOOL( LedRed1 ) );
LedRed2 := BOOL_TO_REAL( NOT REAL_TO_BOOL( LedRed2 ) );

(* Переходим к тесту входов. *)
Step := TEST_CHECKINPUTS;

END_IF;
Наверняка это можно сделать как-то попроще.

ООО "БЛС инжинеринг"
02.03.2016, 12:07
Ребята как работает фильтр RC в ПЛК 160?
22928

capzap
02.03.2016, 12:49
Я хочу просто сократить запись (ПЛК63):
...




(* Тест светодиодов. *)
ELSIF Step = TEST_LEDS THEN
(* Задержка 2 секунды. *)
TON_1( IN := TRUE, PT := T#2s);
LedGreen1 := BOOL_TO_REAL( NOT TON_1.Q );
LedGreen2 := BOOL_TO_REAL( NOT TON_1.Q );
LedRed1 := BOOL_TO_REAL( NOT TON_1.Q );
LedRed2 := BOOL_TO_REAL( NOT TON_1.Q );
IF TON_1.Q THEN
Step := TEST_CHECKINPUTS;
END_IF;
END_IF;

Yegor
02.03.2016, 13:13
Я хочу просто сократить запись (ПЛК63):
TON_1( IN := TRUE, PT := T#2s, Q => btmp, ET => ttmp );
LedGreen1 := LedGreen2 := LedRed1 := LedRed2 := BOOL_TO_REAL(NOT btmp);
IF NOT LedGreen1 THEN Step := TEST_CHECKINPUTS; END_IF
Ну и такую вещь тоже хотел бы сократить:
IF btmp THEN
LedGreen1 := 1.0 - LedGreen1;
LedGreen2 := 1.0 - LedGreen2;
LedRed1 := 1.0 - LedRed1;
LedRed2 := 1.0 - LedRed2;
END_IFхз не проверял есличо

uni
02.03.2016, 13:48
Да, последние варианты мне понравились, спасибо, проверю. Почти также кратко как у меня было раньше. Жаль, что MOV'а такого нет (с тремя операндами), может в библиотеке какой найду или самому придётся писать. Я ещё не привык к новому функционалу CoDeSys, у всех всё по-разному. ST Mitsubishi одно, у ISaGRAF другое, CoDeSys - третье.

Ещё вопрос. Как можно определить в программе рестарт ПЛК (без программных приёмов)? У Mitsubishi есть специальные биты для этого. Например, есть "бит первого цикла". Может быть есть карта системных регистров (до которой я пока ещё не дошёл)?

Aldonin2007
09.03.2016, 10:09
Всем здравствуйте!
Вопрос такой: В ПИД-регуляторе PID_2POS_IM_ANR есть входы PV и PV_TIME. Правильно ли я понял, что при конфигурировании ПЛК первому входу мы присваиваем переменную, например temp, а второму, который PV_TIME, должны присвоить переменную, например time, во второй строке раздела Unifed Signal Sensor которая Circular time?

Василий Кашуба
09.03.2016, 19:45
Всем здравствуйте!
Вопрос такой: В ПИД-регуляторе PID_2POS_IM_ANR есть входы PV и PV_TIME. Правильно ли я понял, что при конфигурировании ПЛК первому входу мы присваиваем переменную, например temp, а второму, который PV_TIME, должны присвоить переменную, например time, во второй строке раздела Unifed Signal Sensor которая Circular time?
Правильно.

Aldonin2007
10.03.2016, 09:18
Спасибо! Но есть ещё два вопроса:
Можно ли ПИД-регулятор погонять в режиме эмуляции или визуализации? Как на это повлияет присутствующая в регуляторе АНР?
Второе: На примере использования ШИМ-генератора видел как дискретному выходу при конфигурировании присваивается функция ШИМ. В схеме это отображено как умножение выходного сигнала регулятора на 65535. (В Овен-Лоджик в макросе ШИМ-генератора всё гораздо сложнее!) Иначе говоря на выходе устройства либо полная мощность, либо ничего, и длина импульса и период обуславливается наличием нуля на выходе регулятора, либо любого другого отличного от нуля числа? И не проще ли на выход регулятора воткнуть оператор сравнения "больше нуля - выход единица"? Или я что-то не так понимаю?
Заранее спасибо!

Василий Кашуба
10.03.2016, 20:11
Спасибо! Но есть ещё два вопроса:
Можно ли ПИД-регулятор погонять в режиме эмуляции или визуализации? Как на это повлияет присутствующая в регуляторе АНР?
Второе: На примере использования ШИМ-генератора видел как дискретному выходу при конфигурировании присваивается функция ШИМ. В схеме это отображено как умножение выходного сигнала регулятора на 65535. (В Овен-Лоджик в макросе ШИМ-генератора всё гораздо сложнее!) Иначе говоря на выходе устройства либо полная мощность, либо ничего, и длина импульса и период обуславливается наличием нуля на выходе регулятора, либо любого другого отличного от нуля числа? И не проще ли на выход регулятора воткнуть оператор сравнения "больше нуля - выход единица"? Или я что-то не так понимаю?
Заранее спасибо!
1) А вот в эмуляторе, ФБ "ПИД" работать не будет. 2) Работу ШИМ вы понимаете не верно, от величины управляющего сигнала зависит отношение длительности "0" и "1" на выходе блока ШИМ

Aldonin2007
10.03.2016, 22:20
Огромное спасибо за ответ!!! Это для меня (возможно и для других) очень важно!!! Если Вас не затруднит, попробуйте мне объяснить работу ШИМ-модуля! Я пониманию, что ШИМ должен формировать скважность и период нуля и единицы. Но как он это делает?
Спасибо,
Евгений.

Василий Кашуба
10.03.2016, 23:45
Огромное спасибо за ответ!!! Это для меня (возможно и для других) очень важно!!! Если Вас не затруднит, попробуйте мне объяснить работу ШИМ-модуля! Я пониманию, что ШИМ должен формировать скважность и период нуля и единицы. Но как он это делает?
Спасибо,
Евгений.
Вот приведу для примера рисунок, где в зависимости от управляющего сигнала (в %) показан сигнал на выходе ШИМ.23088

Aldonin2007
11.03.2016, 10:40
Вот приведу для примера рисунок, где в зависимости от управляющего сигнала (в %) показан сигнал на выходе ШИМ.23088

Спасибо! Рисунок прекрасный! Даже идиоту будет всё понятно! Хотя, я собственно, так ШИМ-модуляцию и представлял. Поэтому в макросе ШИМ в Овен-Лоджик используется оператор BLINK, правда как там всё работает я ещё до конца не разобрался. Вот и возникает вопрос - есть ли в КоДеСис готовый ШИМ-модуль? И как отнестись к примеру выложеном на сайте Овен?
Заранее спасибо.
Дописываю через несколько часов.
В своём проекте, в конфигурировании, добавил ШИМ выход как в примере. Он стал пятым(?)! Где его искать? Или его надо как-то отправлять на простой дискретный выход? Зачем в примере (приложенный файл) выход с регулятора умножается на 65535 и отправляется на ШИМ? В чём логика?

pahan_751
12.03.2016, 17:27
Всем привет) Заранее извиняюсь если вопрос уже был рассмотрен) я новичок в этом деле, начал разбираться с CoDeSys v2.3, возник вопрос, после написания программы и ее загрузки в контроллер (например мониторинга величин)чтобы наблюдать процесс работы в визуализации нужно проект открывать в кодесис или есть что то только для просмотра визуализации без права изменения программы? Допустим просто запустил и только есть возможность наблюдать. Или можно ли задать несколько пользователей, например вход под администратором с паролем и неограниченными в возможностях, и пользователем вход чтоб был без пароля, но только для просмотра... Заранее спасибо)

krollcbas
12.03.2016, 18:35
Codesys 2.3 - инструментальные средства для разработки прикладного программного обеспечения ПЛК (более 40 разных брендов).
Там действительно можно делать схемы визуализации, но советовал бы серьезно к этим возможностям не относиться.
Как понимаю сам, это для отладки. Что либо серьезное для визуализации ЧМИ делают на специализированном ПО.
Сделать такой доступ, чтоб смотреть можно, а править нет - возможно.

Денис Сухарев
14.03.2016, 07:13
Вот приведу для примера рисунок, где в зависимости от управляющего сигнала (в %) показан сигнал на выходе ШИМ.23088

Полигон с визуализацией где в "живую" можно наблюдать работу ШИМ, работает в режиме эмуляции.

В коде реализации ШИМ, предусмотрена возможность компенсации люфта исполнительного механизма.
Кроме того, одновременно с ШИМ работает алгоритм ЧИМ (Частотно Импульсная Модуляция), то есть, регулируется не только ширина но и частота импульсов. Настройки позволяют плавно регулировать каждую модуляцию, или превратить блок в "чистый" ШИМ или ЧИМ.
Входной аналоговый сигнал от -100 до +100.

23134

Вольд
14.03.2016, 10:44
Полигон с визуализацией где в "живую" можно наблюдать работу ШИМ, работает в режиме эмуляции.

В коде реализации ШИМ, предусмотрена возможность компенсации люфта исполнительного механизма.
Кроме того, одновременно с ШИМ работает алгоритм ЧИМ (Частотно Импульсная Модуляция), то есть, регулируется не только ширина но и частота импульсов. Настройки позволяют плавно регулировать каждую модуляцию, или превратить блок в "чистый" ШИМ или ЧИМ.
Входной аналоговый сигнал от -100 до +100.

23134

Нормально, засундучил. Спасибо автору.

Aldonin2007
14.03.2016, 11:58
А я всё больше понимаю, что я всё меньше понимаю! "ШИМ методом "засундучивания" медленно превращается,.. в ЧИМ"!!! Уважаемые друзья, может у кого-то есть любая классическая схема, например нагревателя, с ПИД-регулятором и ШИМ-модулем? Хотелось бы поразбираться на живом примере, а то с теории уже башню сносит! Чем больше думаешь, тем больше вопросов появляется!
С уважением,
Евгений.

Денис Сухарев
14.03.2016, 13:34
А я всё больше понимаю, что я всё меньше понимаю! "ШИМ методом "засундучивания" медленно превращается,.. в ЧИМ"!!! Уважаемые друзья, может у кого-то есть любая классическая схема, например нагревателя, с ПИД-регулятором и ШИМ-модулем? Хотелось бы поразбираться на живом примере, а то с теории уже башню сносит! Чем больше думаешь, тем больше вопросов появляется!
С уважением,
Евгений.

Скачивайте живой пример выше и наслаждайся разбором по косточкам в режиме эмуляции. ))
Всё работает в среде CoDeSys и визуализация есть. Тренируйтесь на здоровье.

Yegor
14.03.2016, 14:26
Пользуясь случаем, напомню про ШИМ быстрого приготовления:
di := TIME_TO_DWORD(TIME()) MOD период_мс < период_мс * мощность_0_1;Только аккуратнее, можно на любое место такта попасть при включении.

Aldonin2007
14.03.2016, 16:07
Спасибо конечно, но к сожалению в выше указанном "ШИМ быстрого приготовления" я ровным счётом ничего не понял, так как кроме языков LD и в какой-то мере CFC я больше ничего не знаю! Ну не учил меня никогда и никто этому! Так же и ШИМ (ЧИМ) полигон - я верю, что штука хорошая, но досконально её изучать у меня просто нет времени - на работе скоро окончательно накроется медным тазом сушильная печь, у которой два огромных шкафа управления (чудо советской инженерии!)! Там целая прорва разных реле, а схемы нет! Есть только описание алгоритма работы. А печь должна работать! И если в основной массе программу работы печи я уже составил, то вот с выходом ПИД-регулятоа на ШИМ модуль и на дискретный выход ПЛК у меня проблемы! Поэтому и прошу, по возможности, "скинуть" любой типовой проект для "прикладного" изучения!!!
С уважением,
Евгений.

Валенок
14.03.2016, 18:56
Спасибо конечно, но к сожалению в выше указанном "ШИМ быстрого приготовления" я ровным счётом ничего не понял,.....и в какой-то мере CFC я больше ничего не знаю!..
Ставишь квадратики ВХОД и ВЫХОД,
Соединяешь проволокой,
Копи-пасте "ШИМ быстрого приготовления" во ВХОД.
Правишь имена на нужные.