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

amn
13.12.2016, 22:18
Здравствуйте!
Подскажите как можно сбросить сказу несколько регистров который идут по протоколу модбас.28058
Принцип такой, оператор работал в HMI и включал какие то биты в PLC (это было ручное управление) но по ошибке их вдруг не выключил.
Как можно сразу наложить RESET указать с какова и по какой на несколько регистров в конфигураторе или познаванию переменой?
Насколько я понял ключевые слова в этом вопросе но по ошибке их вдруг не выключил. Если есть такая возможность я бы в ПЛК использовал бы R_TRIG при получении сигнала включения бита от HMI. Тогда пока оператор не выключит бит включить его снова не получится и ошибок не будет.

capzap
14.12.2016, 04:41
так для соответствия по размеру указателя и булей и нужны промежуточные переменные (программные були, которым присваиваем конфигурационные).

ТС на втором рисунке не желает использовать прямой сброс от одной переменной всех восьми булей в конфигураторе, а Вы про промежуточные переменные

Гарчев Евгений
14.12.2016, 10:40
В примере, как раз, настраиваемый диапазон и кол-во сбрасываемых битов конфигурации slave (через цикл for - указываем начальный и конечный элементы указателя на массив). конфигурационный булеан - это бит, программный булеан - это байт. Указатель на массив из булевых переменных - по факту, указатель на массив из байт, поэтому этот указатель состыковать с конфигурационными булеанами (битами) не получится. Поэтому заводим в области памяти программные булеаны (которые есть байты), указателю указываем адрес области памяти первого программного булеана. После сброса (заполнения указанных элементов указателя на массив нулями, а соответственно обнуляем программные булеаны), присваиваем программные булеаны конфигурационным.

bit_to_bit_prg(); (*действие, в котором присваиваем программным булеанам конфигурационные*)
bit_array:=ADR(B1_1_); (*указываем адрес области памяти первого программного булеана*)
IF reset_ THEN
FOR i:=b_start TO b_end DO (*b_start и b_end - начальный и конечный элементы указателя на массив для обнуления*)
bit_array^[i]:=0;
END_FOR
bit_to_bit_slave(); (*действие, в котором присваиваем конфигурационным булеанам обнуленные программные*)
reset_:=0;
END_IF

RollForRepair
14.12.2016, 17:18
Здравствуйте. Не могли бы вы подсказать, правильно ли я делаю?

Моя текущая задача - посылать два широковещательных сообщения с мастера ПЛК110 подчинённым устройствам по RS-485 каждые 2 секунды. Сообщения двух типов : однобитового и двухбайтового формата. (код функции для первого 15, для второго 16). Есть адреса устройств-подчинённых и адреса регистров (для первого сообщения регистры с 00001 по 00044 и второго сообщения с 40001 по 40011). Небольшая часть таблицы которую я сделал для примера:
28086

Я создал модуль Modbus master, затем добавил элементы Universal Modbus Module равное количеству устройств, на которые я буду рассылать сообщения. Для первого сообщения я создаю 8-битные модули выхода и присваиваю им значения регистров 00001 и 00009, использую команду 0x0f
28087

28088
В соответствующие таблице биты я присваиваю переменные, которым я буду присваивать значения в программе.

По поводу второго сообщения(16 команда, двухбайтное) - не могу найти модуль значения WORD, ну или 16-битный регистр.
28089

Когда я работал в Codesys 3.5 делалось там по-другому, там добавлялся новый кaнал выставлялся код функции и длина, регистры сами создавались:
28090

28091

petera
14.12.2016, 18:29
По поводу второго сообщения(16 команда, двухбайтное) - не могу найти модуль значения WORD, ну или 16-битный регистр.
Так и называется - Register output module
28092 28093

Только если нужно

посылать два широковещательных сообщения с мастера ПЛК110 подчинённым устройствам по RS-485
То в этом случае не надо делать - "добавил элементы Universal Modbus Module равное количеству устройств"
Потому, что широковещательные сообщения принимают все устройства на шине, для этого нужно всего один Universal Modbus Module с адресом слейва "0" этот адрес и является широковещательным.

RollForRepair
15.12.2016, 10:26
Большое спасибо вам, petera.



То в этом случае не надо делать - "добавил элементы Universal Modbus Module равное количеству устройств"
Потому, что широковещательные сообщения принимают все устройства на шине, для этого нужно всего один Universal Modbus Module с адресом слейва "0" этот адрес и является широковещательным.
Странно, тогда зачем в ТЗ были указаны конкретные Modbus адреса для устройств-потребителей... Кстати, у меня в сети с ПЛК110 кроме устройств-потребителей есть аналоговые/дискретные модули ввода-вывода с конкретными адресами и панели оператора; если я на них буду посылать широковещательным сообщением данные, и одновременно снимать-посылать сигналы управления, ничего страшного ведь не произойдёт?

Я вчера потратил время и поискал как работают функции Modbus, но немного запутался. Скажите, я правильно понимаю результат работы 0x0f? То есть назначаю адрес регистра для всего модуля - этот же адрес присваивается нулевому биту модуля, для следующего бита адрес будет сдвинут на +1, и т.д.
28098

Кусочек таблицы второго сообщения для примера допустим выглядит так:
28099
Тогда я объявляю количество модулей, равное количество отправляемых переменных, каждому из них присваиваю свой регистр и функцию 0x10, правильно?
28100

Последний регистр в таблице второго сообщения по заданию отличается от других, при этом его надо также надо посылать функцией 0x10:
28101
Проблема в том, что для Register output module я не могу задать переменные для отдельных битов, а для 8-битного модуля выхода не поддерживается функция 0x10.

petera
15.12.2016, 12:42
Скажите, я правильно понимаю результат работы 0x0f? То есть назначаю адрес регистра для всего модуля - этот же адрес присваивается нулевому биту модуля, для следующего бита адрес будет сдвинут на +1, и т.д.
28098
Правильно

Тогда я объявляю количество модулей, равное количество отправляемых переменных, каждому из них присваиваю свой регистр и функцию 0x10, правильно?
28100
Если у каждого Register output module в его настройках адреса 40001, 40002, 4003 и т.д, тогда правильно.

Последний регистр в таблице второго сообщения по заданию отличается от других, при этом его надо также надо посылать функцией 0x10:
28101
Проблема в том, что для Register output module я не могу задать переменные для отдельных битов, а для 8-битного модуля выхода не поддерживается функция 0x10.
Для этого существует битовая адресация разрядов (доступ к отдельным битам через точку)
28110

RollForRepair
15.12.2016, 13:24
Понял, большое вам спасибо!

Муха
15.12.2016, 22:37
Добрый вечер.
Объясните пожалуйста в чем различие между измеритель регулятором и пид регулятором...
Вроде задачу как я понял одну и ту же выполняют.

Project M
16.12.2016, 09:42
Здравствуйте.
Есть необходимость изменять параметр Period of PWM фиксированного модуля Pulse-wide modulator из программы непосредственно во время исполнения.
Подскажите, пожалуйста, как обратиться к нужному параметру? (прямого адреса не нашёл)

Владимир Ситников
16.12.2016, 09:45
Здравствуйте.
Есть необходимость изменять параметр Period of PWM фиксированного модуля Pulse-wide modulator из программы непосредственно во время исполнения.
Подскажите, пожалуйста, как обратиться к нужному параметру? (прямого адреса не нашёл)

Какой контроллер, в каких пределах нужно менять period of PWM и зачем это понадобилось?

Project M
16.12.2016, 10:15
Здравствуйте, Владимир.
PLC-100.R
Задачи самые разные. Одна из них - нестандартное использование PWM модулятора для целей индикации и управления.

Вольд
16.12.2016, 11:15
Добрый вечер.
Объясните пожалуйста в чем различие между измеритель регулятором и пид регулятором...
Вроде задачу как я понял одну и ту же выполняют.

В общем правильно понимаешь, но дьявол может крыться в деталях. ;)

RollForRepair
16.12.2016, 15:55
Снова обращусь сюда - решил самостоятельно проверить, будут ли конфликты с модулями ввода-вывода при широковещательном сообщении. Подключил и считываю данные с модуля дискретного ввода МВ110-32ДН. Одновременно делаю рассылку широковещательным сообщением по адресу 0, регистры пробовал ставить разные. Периодически при обращении к адресу 0 выскакивает ошибка 81, не доходят мол данные от модулей (хотя сигнал с МА110-32ДН не пропадает). Это не страшно?

28141

И ещё, есть ли какие-нибудь подводные камни когда буду работать одновременно с RS-485-1 и RS-485-2? (ПЛК110-30) Просто создаю 2 Modbus Master-а и делаю соответсвующие замены элемента debug-232 на RS-485-1 и RS-485-2?

petera
16.12.2016, 18:34
Одновременно делаю рассылку широковещательным сообщением по адресу 0, регистры пробовал ставить разные. Периодически при обращении к адресу 0 выскакивает ошибка 81, не доходят мол данные от модулей (хотя сигнал с МА110-32ДН не пропадает).
Не знаю почему, возможно мастер в конфигурации не корректно работает. Потому, что по стандарту, при получении широковещательного сообщения, подчиненные устройства выполняют команду, а ответ мастеру не отправляют.
28142
https://ru.m.wikipedia.org/wiki/Modbus
Логично, ведь подчиненных может быть много! Как они все сразу ответят? Каша будет на шине.
По этому "не доходят мол данные от модулей" в принципе не должно быть, мастер ведь не должен ждать никаких ответов для широковещательного сообщения.

И ещё, есть ли какие-нибудь подводные камни когда буду работать одновременно с RS-485-1 и RS-485-2? (ПЛК110-30) Просто создаю 2 Modbus Master-а и делаю соответсвующие замены элемента debug-232 на RS-485-1 и RS-485-2?
Два мастера, у каждого свой интерфейс. Ни каких проблем быть не должно.

RollForRepair
17.12.2016, 12:04
Если я создал проект в Codesys 2.3 на CFC, могу ли я изменить его на ST в какой-то момент, или надо создавать проект заново?

melky
17.12.2016, 13:56
нет, не сможете, CFC не поддается конвертации в другой язык.
Попробуйте на простых примерах... И это кажется где-то в справке даже было.

Или попробуйте конвертировать не в ST а в IL или другой. нюансов уже не помню, но напрямую в ST не работает.

Antony001
17.12.2016, 14:01
Добрый день.

Вопрос не сколько к среде программирования, а больше к реализации логики на ФБД. Нужно в зависимости от максимального параметра Х произвести выбор минимального по параметру Y. Вся загвоздка в том, что может быть несколько каналов, где Х максимально. Как пример, Х1=20, Х2=55, Х3=55, Х4=55; Y1=6, Y2=7, Y3=22, Y4=21. Пробовал пойти таким путем - найти макс. значение среди Х - 55; булево определить к каким Х он относится - Х2, Х3, Х4=1, Х1=0; соответственные номера каналов на Y перемножить с такими же номерами каналов т.е. Х1(0)*Y1(6)=0, Х2(1)*Y2(7)=7,Х3(1)*Y4(22)=22,Х4(1)*Y4(21)=21 и потом из полученных значений для Y(№) выбрать минимальный. Но при такой "моей" логике, будет выбираться канал с минимальным значением, который, в данном случае, равный "0" - Y1, а нужен минимальный из соответствующих по номеру - 2,3,4 Y'ков. Из указанного условия это Y2=7. А как ограничить возникающие в работе Y'ков "0" пока не получается. Думал как-то через SEL, но идей пока нет.

Подскажите, пожалуйста, как "подправить" программку чтобы в итоге выбирался Y2=7.

amn
17.12.2016, 19:59
1. Создаем двумерный массив, элементами которого будут соответствующие X и Y.
2. Сортируем этот массив в порядке убывания "иксов" ("игреки" сортируются вместе с "иксами"). В итоге имеем в начале массива все максимальные значения (в любом количестве).
3. Ответом делаем "Y" самого первого элемента.
4. Если второй "X" равен первому, то сравниваем второй "Y" с первым "Y", если он меньше, то делаем его ответом. И так делаем до тех пор, пока не переберем все повторяющиеся "иксы".

energvk
18.12.2016, 15:56
Чёрррт! Тяжело быть идиотом)

RV9WFJ, спасибо

Блин, как бы элегантно придумать теперь замену, а то по 16 строк переприсвоения совсем не смотрятся....

В конфигурации с дискретными входами/выходами это как то сделано

А я правильно понимаю, что если нужно копировать массив [0..15] OF BOOL в структуру из 16 BOOL-переменных, то SysMemCpy нужно указывать 16 байт?:
SysMemCpy(ADR(структура),ADR(массив),16);

energvk
19.12.2016, 10:06
Как бы правильно. Типо - раз плавать, то правильно что нужны плавки. Вопрос про то - где плавить - не поднимается.

А накой вообще массив и структура одновременно нужны ? 200% что что-то одно можно в сад.

Одновременно не нужны, пока просто эксперементирую и для общего понимания интересуюсь)) Спасибо.

Балалай
23.12.2016, 07:26
Вопрос не по Codesys. Может знает программу подходящую, на 1 COM порту ПЛК110, на втором COM ПМ-01. Нужно переадресовывать все запросы из одного COM в другой, и иметь возможность видеть пересылаемые запросы.

melky
23.12.2016, 09:17
зачем переадресовывать ? вам нужно просто следить за тем, что происходит между устройствами ?
http://www.aggsoft.com/serial-data-logger.htm необходимо его настроить в режиме наблюдателя. Подойдет и trial версия для разбора.

RollForRepair
23.12.2016, 10:23
Нубские вопросы по Modbus:

От меня по заданию требуется, чтобы по RS-485 отправлялись 2 широковещательных сообщений данные функцией 16(0x10) и функцией 15(0x0F) на какое-то оборудование (какое, для меня не важно по заданию). При этом данные я беру из модулей в этой сети, и управляю теми же модулями МВ110.16ДН, МУ110.16Р, МВ110.8АС.

В чём вопрос: первое сообщение(все отправляется функцией 15) это таблица данных, которая идёт на регистры 00001 до 00076. Второе сообщение(все отправляется функцией 16) это таблица данных на регистры от 40001 до 40018. МВ110.16ДН использует регистр 51, МУ110.16Р использует регистр 50. Получается если я буду делать широковещательную рассылку, то я буду записывать в эти регистры данные и на эти модули, и у меня будет некорректная работа модулей ввода-вывода сети каждые 2 секунды?

Второй вопрос, мне так и записывать "Параметры модуля"-> "Register Adress" -> "00001" или "40002"? Или можно записывать просто "1" и "2", а то, что я выделил красным уже определено используемой функцией Modbus (соответсвенно функция 15 и 16)?

Балалай
23.12.2016, 12:19
Предполагается что соединю в сеть по RS-485 ПК, ПЛК, Модем. В этой программе приходящие АТ команды от ПЛК я вижу, но модем судя по индикации не шлет ответ. То есть, после подключения ПК модем выпадает из сети. Если вы знакомы с этой программой не подскажете, что именно не так?

melky
23.12.2016, 14:05
Балалай я же вам написал, ее надо настроить как наблюдатель, а так вы перехватываете порт программой и модем не может его открыть или к нему подключиться.

capzap
23.12.2016, 14:12
Балалай я же вам написал, ее надо настроить как наблюдатель, а так вы перехватываете порт программой и модем не может его открыть или к нему подключиться.

melky, Вы как будто с rs485 ни когда не работали, включили гипертерминал на винде и сидите смотрите что происходит в сети, посылать команды ни кто не заставляет. Вы просто изначально предложили прогу работающую с rs232 и ни как не можете отвязаться от этой мысли, ни какого перехвата не будет

melky
23.12.2016, 14:38
А, сорри, перехватчик нужен если на этом же компе что-то работает через тот же порт, который необходимо слушать...
Чета я действительно протупил...

Дмитрий520
24.12.2016, 04:24
Всем здравствуйте! только учусь, столкнулся с вопросом подключения датчика инклинометра http://www.megasensor.com/products/datchiki-ugla-naklona-i-uskoreniya-seika
с аналоговым выходом +2,5V=0° (9,5mV/Grad) к МВ110. Возможно ли это, и если возможно то как? Заранее спасибо

RV9WFJ
25.12.2016, 07:56
Если все правильно написали, то выбираете тип входа 0..1в докупаете делитель РД10 и дальше дело математики перевести вольты в градусы.

capzap
25.12.2016, 08:43
Всем здравствуйте! только учусь, столкнулся с вопросом подключения датчика инклинометра http://www.megasensor.com/products/datchiki-ugla-naklona-i-uskoreniya-seika
с аналоговым выходом +2,5V=0° (9,5mV/Grad) к МВ110. Возможно ли это, и если возможно то как? Заранее спасибо

вряд ли получится, точность будет очень низкая

Вольд
25.12.2016, 11:49
вряд ли получится, точность будет очень низкая

МВ110224.2АC в диапазоне 0...10 В имеет разрешающую способность 2 мВ. Что еще надо если для прибора указано 9,5mV/Grad.

С точностью до 20...30 минут угол можно будет свободно мерить.

evgens4
26.12.2016, 08:31
У кого нибудь есть опыт связи двух ПЛК по wifi?

Pimpl
26.12.2016, 09:02
Возможно ли в Codesys насnроить OPC UA server или же он поддержвает только OPC DA?

Алексей АСУТП
30.12.2016, 11:02
Добрый день. У меня такой вопрос: делаю все вроде бы правильно по инструкциям, но не работает и не могу понять в чем дело. Необходимо создать, что то вроде регулятора с гистерезисом для управления задвижкой бай паса насоса(насос без возможности регулировки оборотов). Стандартный ФБ регулятора не подходит. Из данных только давление на выбросе насоса, задвижка без сигнала положения. Хотелось бы помощи по коду


FWD:=Triger1.Q1;
REV:=Triger2.Q1;

IF PV>=SV+H
AND (AUTO=TRUE
OR REMOTE=TRUE
OR LOCAL)=TRUE
AND OPEN=FALSE
THEN Triger1.SET:=TRUE;
END_IF;
IF PV=SV
THEN triger1.RESET1:=1;
ELSE triger1.RESET1:=0;
END_IF

IF PV<=SV-H
AND (AUTO=TRUE
OR REMOTE=TRUE
OR LOCAL)=TRUE
AND CLOSE=FALSE
THEN Triger2.SET:=TRUE;
END_IF
IF SV=PV
THEN Triger2.RESET1:=TRUE;
ELSE triger2.RESET1:=FALSE;
END_IF

Andrew_Stranger
31.12.2016, 00:11
Господа подскажите как отфильтровать аналоговый сигнал в codesys. Измеряю температуру и десятая доля плавает, что не совсем устраивает.

krollcbas
31.12.2016, 14:22
Господа подскажите как отфильтровать аналоговый сигнал в codesys. Измеряю температуру и десятая доля плавает, что не совсем устраивает.
Любой аналоговый сигнал при пересчете кода АЦП - скачет. Если аппаратного фильтра нет, то рекомендую использовать LAG (задержка).




(* @NESTEDCOMMENTS := 'Yes' *)
(* @PATH := '\/FB\/Subrutine' *)
(* @OBJECTFLAGS := '0, 8' *)
(* @SYMFILEFLAGS := '0' *)
FUNCTION_BLOCK LAG
VAR_INPUT
IN:REAL;
k:REAL;(*коэффициент сглаживания*)
END_VAR
VAR_OUTPUT
OUT:REAL;
END_VAR
VAR
prev: REAL;
END_VAR
(* @END_DECLARATION := '0' *)
IF k<0 THEN k:=0; END_IF;
IF k>=1 THEN k:=1; END_IF;
OUT := IN*k + prev*(1-k);
prev := OUT;
(*
k - коэфф сглаживания (в диапазоне от 0 до 1 )
//Yпр - предыдущее (запомненное) значение
//Yт - текущее (не сглаженное измерение)
//Ytmp - новое (фактически выход)


//Таким образом мы изменяем предыдущее (сглаженное) значение лишь на часть приращения, кот. определяется коэффициентом.
//При k = 1 сглаживания не будет (Yн = Yт).
*)
END_FUNCTION_BLOCK

Andrew_Stranger
31.12.2016, 20:53
Спасибо больше.

Andrew_Stranger
31.12.2016, 21:00
См. util.lib/ramp_real. Но это страусиный подход, зачем фильтровать-то ? А что предлагаете делать, смотреть как десятая доля хаотично мельтешит перед глазами?

Andrew_Stranger
01.01.2017, 21:20
Ну смотреть на мельтешение будет оператор, возможно и блондинка конечно. Сигнал это датчик температуры 4-20 ма, пока в кабинете, потом будет в емкости. Почему сразу обмануть, просто хочется убрать лишний "шум". Зачем тогда фильтры существуют вообще и у Овена в частности, в модулях ввода, плк, таблетках к датчикам температуры и т.п.?

capzap
01.01.2017, 21:26
умножьте реал на сто, преобразует в инт, потом обратный процесс. Если аналоговый вход меняет десятые, то это не нормально, тут не в фильтрации дело

Andrew_Stranger
01.01.2017, 21:54
Пялица в кодесис конечно не будут, но на SCADу лицезреть будут точно. А в чем еще проблемы, все оборудование пока в кабинете? Причем данное мельтешение встречаю не в первый раз и именно на 4-20 ма.

capzap
01.01.2017, 22:02
Пялица в кодесис конечно не будут, но на SCADу лицезреть будут точно. А в чем еще проблемы, все оборудование пока в кабинете? Причем данное мельтешение встречаю не в первый раз и именно на 4-20 ма.

модуль статистики подключите и скажите температура плк так же меняется начиная с первого знака после запятой?

Andrew_Stranger
01.01.2017, 22:26
Capzar ПЛК не Овен'а.

Andrew_Stranger
01.01.2017, 23:41
А что есть "формат вывода"?

capzap
01.01.2017, 23:51
вообще без разницы, какой контроллер, смысл в том, что если всё правильно подключено, выставлены правильные диапазоны, в конце концов модель датчика подобрана правильно измеряемому значению, все должно быть стабильно

Andrew_Stranger
02.01.2017, 00:58
А что есть "вид представления"?

Алексей АСУТП
05.01.2017, 08:21
В конце нужно дописать :

И все заработает.

спасибо буду пробовать

nexus
05.01.2017, 12:20
Добрый день. Помогите советом. Как реализовать сигнализацию о неисправности ПЛК 100. В случае если происходит какой то сбой работы ПЛК необходимо проинформировать персонал. Как это лучше реализовать?

ASo
05.01.2017, 12:31
Конкретезируйте условия, расположение персонала относительно ПЛК и временной интервал сигнализации.

Eugene.A
05.01.2017, 12:34
Сделать внешний вотчдог.

nexus
05.01.2017, 12:54
Конкретезируйте условия, расположение персонала относительно ПЛК и временной интервал сигнализации.

Персонал приходит 4 раза в день

ASo
05.01.2017, 13:06
Тогда на 1 транзисторный выход подключите лампочку, а этот выход запрограммируйте на мигание.

nexus
05.01.2017, 13:09
Тогда на 1 транзисторный выход подключите лампочку, а этот выход запрограммируйте на мигание.

А если слитает программа с ПЛК? К примеру произошел какой то сбой в ПЛК и нет в нем никакой программы

ASo
05.01.2017, 13:28
То лампочка перестанет мигать ;)

nexus
05.01.2017, 13:32
То лампочка перестанет мигать ;)

Так не устраивает. Им просто необходима эта сигнализация при сбое

ASo
05.01.2017, 14:50
Необходима куда?

nexus
05.01.2017, 15:07
Необходима куда?

На панели с лицевой стороны

ASo
05.01.2017, 18:01
На какой панели? Шкафа? Тогда поставьте в промежутке подходящее реле времени. Как пример - РВО-1М от Меандра.

Andrew_Stranger
05.01.2017, 22:09
Вообще-то не лампочкой надо проблему решать:).

Svorog
06.01.2017, 00:02
Доброго времени суток, подскажите пожалуйста как в CFC умножить на дробное число? стоит задача плавно по нарастанию давления включать то один то другой клапан и т.д. т.е при достижении 70% от номинального отключить один клапан, на 80% другой т.д. использую оператор mul, но компиляция не пропускает умножение на 0,7.
и еще вопрос необходимо в визуализации создать окошко для ввода максимального давления оператором на экране СПК 107, видеоуроки которые нашел на ютубе не работают, создаю прямоугольник делаю настройки inputconfiguration ввод переменной выбираю тип ввода VisuDialogs.Numpad, но при запуске на спк никак не реагирует... может кто поделится ссылкой на хороший пример?
и ещё один, можно ли где взять функциональный блок с датой и часами реального времени с энергонезависимой памятью, как демонстрационной программе которые идут с СПК107, можно ли как то прям с СПК его считать?

Евгений Кислов
06.01.2017, 00:53
1. В CODESYS дробные значения пишутся через точку (0.7).
2. См. документ СПК. Визуализация.
3. См. документ СПК. Системное время.

Обратите внимание, что эта тема находится в разделе CODESYS V2 - в следующий раз, пожалуйста, задавайте вопросы в соответствующих разделах.

Svorog
06.01.2017, 01:11
Евгенией Кислов, в очередной раз большое спасибо за оперативный ответ, странно но вчера полночи пробовал по всякому но точку он точно так же не распознавал, сейчас заработало, извиняюсь за некорректное размещение вопроса.

nexus
06.01.2017, 10:19
Вообще-то не лампочкой надо проблему решать:).

А как? Через системные события? Можете подсказать как реализовать событие, если ПЛК перешел в режим "Стоп"

Andrew_Stranger
06.01.2017, 12:27
Плк вообще не должен в стоп уходить, как к примеру холодильник у вас дома.

nexus
06.01.2017, 12:35
Плк вообще не должен в стоп уходить, как к примеру холодильник у вас дома.

Вот именно не должен, а если все таки перейдет. Все же возможно))
А если не лампочкой то как решать предыдущюю проблему?

ASo
06.01.2017, 13:54
Ватчдогом или резервным контроллером или еще как на разный вкус и бюджет.

nexus
06.01.2017, 16:48
Ватчдогом или резервным контроллером или еще как на разный вкус и бюджет.

А не подскажешь как это сделать ватчдогом, я просто первый раз имею дело с этим.

ASo
06.01.2017, 16:52
Сделать что?

nexus
06.01.2017, 17:00
Сделать что?

С помощью ватчдога

Newcomer
06.01.2017, 17:09
Вот именно не должен, а если все таки перейдет. Все же возможно))
А если не лампочкой то как решать предыдущюю проблему?

Лампочка для электриков на двери шкафа самое то. Мигает, значит все нормально. Перестала мигать, значит контроллер встал. Что еще надо ?

ASo
06.01.2017, 17:36
С помощью ватчдога

Либо Вы решили похохмить, либо страдаете функционально безграмотностью.
Поэтому сформулируйте требование нормально.

Andrew_Stranger
06.01.2017, 18:12
Вот именно не должен, а если все таки перейдет. Все же возможно))
А если не лампочкой то как решать предыдущюю проблему?
Проблему надо решать на корню, а не бороться с последствиями. Aso вам уже предложил вариант с лампой, что вы еще хотите?

nexus
06.01.2017, 20:16
Либо Вы решили похохмить, либо страдаете функционально безграмотностью.
Поэтому сформулируйте требование нормально.

Я же написал, что столкнулся с этим первый раз.

ASo
06.01.2017, 20:41
Это нормально, что первый.
Вы четко, на 5..7 строчек, сформулируйте, что хотите.

nexus
06.01.2017, 21:19
Это нормально, что первый.
Вы четко, на 5..7 строчек, сформулируйте, что хотите.

1. Необходимо предусмотреть сигнализацию о неисправности ПЛК. Я сделал, следующим образом, с выхода ПЛК приходить сигнал на катушку реле, то есть пока в ПЛК есть программа реле будет постоянно подтянуто, в случае сбоя работы плк реле отпускается и через НЗ контакт выдает сигнализацию.
2. Теперь поступил другой вопрос, а вот что будет если ПЛК перейдет в режим "Стоп", мало вероятно конечно же, но все таки, по идеи как мне кажется должна сработать реализованная сигнализация, но я не уверен.
3. Теперь с Вашей подсказкой нашел о системных событиях и задача, сейчас пытаюсь в них разобраться как с помощью них следить за работой плк

ASo
06.01.2017, 21:38
1. Т.е. сухой контакт реле Вас устраивает? Ну там передать с него сигнал оперативному персоналу не проблема?

nexus
06.01.2017, 21:42
1. Т.е. сухой контакт реле Вас устраивает? Ну там передать с него сигнал оперативному персоналу не проблема?

Да, меня вполне устраивает) Только вот теперь дали задание выяснить как работают события и задачи.

Eugene.A
06.01.2017, 21:46
Настящей проблемой является диагностика состояния контроллера и модулей расширения, а не сигнализация аварии. Если ПЛК загнулся полностью - это тривиально. А если залип выход, или наоборот - пропал контакт в реле? Врет датчик? И таких вариантов множество. Вплоть до сбоев в памяти программы и данных. Все это чревато аварией, поскольку безаварийный останов оборудования становится невозможным. А варианты с резервированием сложны и дороги.

nexus
06.01.2017, 21:52
Настящей проблемой является диагностика состояния контроллера и модулей расширения, а не сигнализация аварии. Если ПЛК загнулся полностью - это тривиально. А если залип выход, или наоборот - пропал контакт в реле? Врет датчик? И таких вариантов множество. Вплоть до сбоев в памяти программы и данных. Все это чревато аварией, поскольку безаварийный останов оборудования становится невозможным. А варианты с резервированием сложны и дороги.

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

ASo
06.01.2017, 21:59
Да, меня вполне устраивает) Только вот теперь дали задание выяснить как работают события и задачи.Для этого Вам не нужны события и задачи - при "слетании" проги они не отработаются.
Как вариант я уже говорил.
1. Программируем один из транзисторных выходов на меандр ~1Гц
2. Подключаем на него реле http://meandr.ru/rvo-1m? ставим программу 28.
3. Последовательно ставим обычное промежуточное реле для контроля наличия питания.
Собственно, все.

nexus
06.01.2017, 22:02
Для этого Вам не нужны события и задачи - при "слетании" проги они не отработаются.
Как вариант я уже говорил.
1. Программируем один из транзисторных выходов на меандр ~1Гц
2. Подключаем на него реле http://meandr.ru/rvo-1m? ставим программу 28.
3. Последовательно ставим обычное промежуточное реле для контроля наличия питания.
Собственно, все.

Спасибо большое еще раз, и прошу прощение за не компетентность в поставленных вопросах

evgens4
09.01.2017, 05:56
Отлично вяжутся.
Если преобразователи настроены.

есть пример настройки преобразователя?

capzap
09.01.2017, 06:43
есть пример настройки преобразователя?

здесь (https://www.google.ru/?gws_rd=ssl#newwindow=1&q=%D0%BA%D0%B0%D0%BA+%D0%BD%D0%B0%D1%81%D1%82%D1%8 0%D0%BE%D0%B8%D1%82%D1%8C+%D0%B4%D0%B2%D0%B0+wi-fi+%D1%80%D0%BE%D1%83%D1%82%D0%B5%D1%80%D0%B0+%D0% BC%D0%B5%D0%B6%D0%B4%D1%83+%D1%81%D0%BE%D0%B1%D0%B E%D0%B9) смотрели

mogikanin
09.01.2017, 12:15
СПК207. Чем будет отличаться версия М05 от М04? В частности по времени загрузки. Когда можно будет приобрести СПК207 М05?

evgens4
10.01.2017, 06:59
здесь (https://www.google.ru/?gws_rd=ssl#newwindow=1&q=%D0%BA%D0%B0%D0%BA+%D0%BD%D0%B0%D1%81%D1%82%D1%8 0%D0%BE%D0%B8%D1%82%D1%8C+%D0%B4%D0%B2%D0%B0+wi-fi+%D1%80%D0%BE%D1%83%D1%82%D0%B5%D1%80%D0%B0+%D0% BC%D0%B5%D0%B6%D0%B4%D1%83+%D1%81%D0%BE%D0%B1%D0%B E%D0%B9) смотрели

смотрел пробовал не получается плк не видет второй плк

capzap
10.01.2017, 07:28
смотрел пробовал не получается плк не видет второй плк

по ссылке организация связи между роутерами, при чем тут плк, сеть между роутерами организовали? Она пингуется? Тот ПК который "видит" оба роутера, так же имеет связь с хотя бы одним плк? У плк не одинаковые IP-адреса? Какие вообще преобразователи WiFi у Вас, просто роутер или какой нибудь RS485<=>WIFI?

Владислав Г.
10.01.2017, 12:25
Помогите правильно написать CHARCURVE на ST. Спасибо.

petera
10.01.2017, 13:17
[QUOTE=Владислав Г.;233060]Помогите правильно написать CHARCURVE на ST. Спасибо./QUOTE]
http://www.owen.ru/forum/attachment.php?attachmentid=11962&d=1392751544

28658

Владислав Г.
10.01.2017, 13:29
[QUOTE=Владислав Г.;233060]Помогите правильно написать CHARCURVE на ST. Спасибо./QUOTE]
28658 Спасибо, забыл убрать двоеточие.

АлинаАТП
10.01.2017, 17:21
Ребята, если кому-нибудь не сложно помогите пожалуйста с задачей, не знаю как реализовать на языке ST
задача: Автоматизировать линию сортировки изделий. По конвейеру движутся низкие изделия, но редко могут встречаться и высокие. По ходу конвейера установлены две фотоголовки на расстоянии друг от друга, равном половине ширины изделия. первая по ходу конвейера фотоголовка настроена на низкие изделия(нижняя) вторая - на высокие изделия(верхняя). При прохождении низкой детали перекрывается только нижняя фотоголовка, а при высоких - вначале нижняя, а затем верхняя фотоголовки. На выходе из конвейера детали ударяются о сортировочную планку и высокие изделия поступают в правый накопитель (левое положение планки) , низкие - в левый (правое положение планки). Планка перебрасывается пневмоприводом . Для переброса планки влево или вправо достаточно хотя бы кратковременно подать команду на ее перемещение влево или вправо. Включение системы в работу - нажатие кнопки "Пуск."

Василий Кашуба
10.01.2017, 18:51
АлинаАТП (http://www.owen.ru/forum/member.php?u=81190) А это обязательное условие на ST?

АлинаАТП
10.01.2017, 18:55
К сожалению да

АлинаАТП
10.01.2017, 18:55
буду рада любой помощи)

Василий Кашуба
10.01.2017, 19:13
Василий, можете на другом языке. Переведем.

PS
Препод дал неплохую задачу.
Тогда дерзайте.28660

АлинаАТП
10.01.2017, 20:49
Перевожу :


ton1(in:=(низкий и не высокий) илиили высокий, pt := T#0.5s);
ftrig1(clk := ton1.q, q => вправо);

tp1(in:=высокий, pt := T#0.5s);
ftrig2(clk := tp1.q, q => влево);


Чисто имхо - поменять бы местами датчики.

Непонятна стартовая ситуация (подача питания при наличии коробок на ленте)
Возможны ли несколько коробок от второго датчика до планки
Нужно ли отрабатывать аварии датчиков (второй сработал - а первый до того нет)
Допускаются ли коробки впритык
Дребезг датчиков ?
Cостояние ленты (бежит/стоит, скорость ?)
Рулить лентой ?
Обратная связь от планки ?
Почему бы не считать коробки



Огромное спасибо за помощь, буду пробывать, других условий нет, преподаватель дал задачу, сказал срочно надо на ST и FBD сделать, ST в газа не видела, так что вы мне очень помогли, буду пробывать делать, еще раз спасибо)

Василий Кашуба
10.01.2017, 21:31
Цветы - Василию...
Я миндаль люблю. :)

АлинаАТП
11.01.2017, 00:26
Я миндаль люблю. :)

Огромное спасибо цветов и миндаля вам)))

Регина1985
11.01.2017, 00:37
Ребята помогите и мне тоже пожалуйста, поступила в магистратуру, дали задачку язык ST

манипулятор (рука со схватом) служит для подачи заготовок из накопителя в пресс. рука манипулятора может перемещаться вперед или назад из крайнего заднего положения КЗ в крайнее переднее КП и назад. Схват имеет электромагнитный механизм зажима или разжима заготовок. исходное положение манипулятора перед накопителем- в положении КЗ, схват под действием пружин зажат. При поступлении запроса со станка и наличие заготовки в накопителе включается электромагнит разжима схвата . рука идет в крайнее переднее положение КП, через 2 секунды схват зажимает заготовку(электромагнит схват отключается) и рука возвращается в положение КЗ. схват разжимается (электромагнит схвата включается) и через 2 секунды рука идет в положение КЗ (исходное положение руки). И если есть запрос со станка, а накопитель пуст, то включается сигнальная лампа "Нет детали" и кратковременный звуковой сигнал (в течение 5 секунд). Световой сигнал снимается кнопкой "Сброс". Включение системы в работу - нажатием кнопки "ПУСК".

evgens4
12.01.2017, 09:28
по ссылке организация связи между роутерами, при чем тут плк, сеть между роутерами организовали? Она пингуется? Тот ПК который "видит" оба роутера, так же имеет связь с хотя бы одним плк? У плк не одинаковые IP-адреса? Какие вообще преобразователи WiFi у Вас, просто роутер или какой нибудь RS485<=>WIFI?

Спасибо! разобрался все работает

stilet
13.01.2017, 00:40
Доброго времени суток.
Сразу скажусь, я балбес (новичок). Помогите подружить плк 110 (v2) c danfoss fc301 по модбасрту. (кодесис 2.3, язык cfc) за основу взял библиотеку ПЛК_ПЧВ.lib. Регистры проверил совпадают от овен пчв. Затык получается в том что не могу по "сети" раскрутить двигатель. Смотрел видео урок от овена по подключению, все практически правильно, но по словосостоянию я получаю данные что двигатель готов, привод готов, включаю автоматический режим - реагирует, что двигатель в диапозоне. (при переходе в ручной режим на данфосе, при запуске двигателя, плк получает данные что привод в работе и т.д.). но на этом и все. иль где то напортачил или чего то не понимаю

Павелл59
13.01.2017, 08:08
Здравствуйте! Пишу первую программу на ПР200. Вопрос: возможно-ли отображение на дисплее действующего значения давления в барах ?.
К аналоговому входу AI1 подключен датчик давления 4...20мА. Буду рад советам.

Максим 112
13.01.2017, 17:37
день добрый... помогите разобраться

мне надо чтоб r_triger импульсом дал сигнал на таймер... и таймер после сигнала отшить время (5 с) и выдал сигнал..

есть ли CODESYS ТАКОЙ ТАЙМЕР ????

СПАСИБО!!!!!

Максим 112
13.01.2017, 23:21
Помагите.
Я пишу в cfc и мне надо таймер котой будет получать импус тогда указаных секунт выдать сигнал

Максим 112
13.01.2017, 23:55
Обнсните как для чайника

Максим 112
14.01.2017, 10:30
тр таймер на входи можно дать только импульс или должен задержать сигнал?

Максим 112
14.01.2017, 10:55
time ( TP) можно чтоб он работал на оборот
когда сигнал импульс он примерно ( 5с ) и импульс выдал ???
помогите

спасибо!!!

capzap
14.01.2017, 11:04
time ( TP) можно чтоб он работал на оборот
когда сигнал импульс он примерно ( 5с ) и импульс выдал ???
помогите

спасибо!!!
модераторы, кто нибудь остановит это творчество

Максим 112
14.01.2017, 11:07
а что тут не понятного ???

smk1635
14.01.2017, 11:11
а что тут не понятного ???

Всё.
Такое ощущение что вопрос составлялся по аглицки и переведён "надмозгом".

smk1635
14.01.2017, 11:24
time ( TP) можно чтоб он работал на оборот
когда сигнал импульс он примерно ( 5с ) и импульс выдал ???
помогите

спасибо!!!

Впрочем.

28718

Это нужно ?

Максим 112
14.01.2017, 11:34
Впрочем.

28718

Это нужно ?

У меня таких таймеров должно быть где-то 20 шт. В манитор не влезит ...

smk1635
14.01.2017, 11:55
У меня таких таймеров должно быть где-то 20 шт. В манитор не влезит ...

Ну если именно в мАнитор, и именно не влезИт :D, то держи в виде бибки, добавь в менеджер библиотек.

Максим 112
14.01.2017, 12:02
Ну если именно в мАнитор, и именно не влезИт :D, то держи в виде бибки, добавь в менеджер библиотек.

Это как добаить ??

petera
14.01.2017, 12:07
time ( TP) можно чтоб он работал на оборот
когда сигнал импульс он примерно ( 5с ) и импульс выдал ???
помогите

спасибо!!!

Я же уже вчера в теме ПР давал такой вариант
28720

Максим 112
14.01.2017, 12:17
Я же уже вчера в теме ПР давал такой вариант
28720

Я извеняюсь вот это све что вы мне дали можно чтоб было в библиотеки под адним словом. Это для работы много что упращает
Спасибо

petera
14.01.2017, 12:19
Я извеняюсь вот это све что вы мне дали можно чтоб было в библиотеки под адним словом. Это для работы много что упращает
Спасибо


https://www.youtube.com/watch?v=7dRSX4I-3Ys

Максим 112
14.01.2017, 13:26
Спасибо вот это мне нада... СПАСИБО!!!
Только почему нет в codesys 2.3 таких блоков ???

Максим 112
14.01.2017, 13:30
А есть курсы по кодесус ??платне..

Евгений Кислов
14.01.2017, 13:42
А есть курсы по кодесус ??платне..

http://www.owen.ru/kurs

RV9WFJ
14.01.2017, 15:36
Доброго времени суток.
Сразу скажусь, я балбес (новичок). Помогите подружить плк 110 (v2) c danfoss fc301 по модбасрту. (кодесис 2.3, язык cfc) за основу взял библиотеку ПЛК_ПЧВ.lib. Регистры проверил совпадают от овен пчв. Затык получается в том что не могу по "сети" раскрутить двигатель. Смотрел видео урок от овена по подключению, все практически правильно, но по словосостоянию я получаю данные что двигатель готов, привод готов, включаю автоматический режим - реагирует, что двигатель в диапозоне. (при переходе в ручной режим на данфосе, при запуске двигателя, плк получает данные что привод в работе и т.д.). но на этом и все. иль где то напортачил или чего то не понимаюМожет командное слово неправильно формируете? Или в настройках задания в ПЧ RS485 не указан.

Руслпн
14.01.2017, 15:56
Все привет. Подскажите пожалуйста, в какой из библиотек можно найти функцию (перевод в %) или как написать данный функционал для CodeSys 2.3???

petera
14.01.2017, 16:08
Да, уж...
Не помню в каком классе проходят проценты

(*Если Maximum - максимальное значение чего-либо,
а Val - текущее значение то, это элементарная задача на пропорции
Maximum -- 100%
Val -- x
*)

x:= Val*100/Maximum;

Руслпн
14.01.2017, 16:22
Спасибо что напомнили о школе но если честно, я не силен на ST, точнее вообще не доводилось. Все больше как-то FBD - LD

petera
14.01.2017, 16:49
Спасибо что напомнили о школе но если честно, я не силен на ST, точнее вообще не доводилось. Все больше как-то FBD - LD

28721

На LD надо?

ЗЫ
28722

Руслпн
14.01.2017, 17:03
Спасибо.....

stilet
14.01.2017, 17:15
Может командное слово неправильно формируете? Или в настройках задания в ПЧ RS485 не указан.

Вот тоже подозрение на командное слово (но командное слово формируется из библиотеки ПЛК_ПЧВ.lib), но всего скорее напортачил сам ... в ПЧ настройках указывал (но еще раз пересмотрю), уже перерыл все настройки все пункты меню, он мне скоро во сне начнет приходить...

RV9WFJ
15.01.2017, 08:02
Напишите состояние этих входов у вас, когда пытаетесь раскрутить в автомате:
dc_stop BOOL останов постоянным током
slow_stop BOOL останов выбегом
fast_stop BOOL быстрый останов
start BOOL пуск
reverse BOOL реверс

И значения в параметрах 3-15 3-16 3-17 какие?

Руслпн
15.01.2017, 11:05
Все доброго дня. Подскажите пожалуйста, в какой из библиотек CodeSys-2 можно найти функцию (обратная величина).
Заранее спасибо!

Rake Runner
15.01.2017, 11:09
Все доброго дня. Подскажите пожалуйста, в какой из библиотек CodeSys-2 можно найти функцию (обратная величина).
Заранее спасибо!

В той же, где находится функция деления.

Руслпн
15.01.2017, 12:05
Увы, но такого нет в библиотеке. Может я не там ищу.....
Мне нужно преобразовать арифметическое значение в обратную величину.

Руслпн
15.01.2017, 12:07
Если быть точным, то мне нужно арифметическое число перевести в обратную величину.

Rake Runner
15.01.2017, 12:22
Если быть точным, то мне нужно арифметическое число перевести в обратную величину.

Тогда для начала стоить прочитать, что такое обратная величина и как она связана с величиной исходной.

Руслпн
15.01.2017, 12:31
Тогда для начала стоить прочитать, что такое обратная величина и как она связана с величиной исходной.
Конечно же я воспользовался инетом. Но мне бы хотелось получить объективный ответ на мой вопрос.
Ну не умею я работать в ST

ASo
15.01.2017, 12:37
А какая разница, какой язык, если он поддерживает операцию арифметического деления?

melky
15.01.2017, 12:51
то есть просто 1 разделить на ваше число требуются какие-то библиотеки ?

Руслпн
15.01.2017, 13:07
Действительно, тупонул
Подскажите пожалуйста, где более подробно можно почитать об ST. Все же как ни крути но, его нужно знать.

stilet
15.01.2017, 19:32
Напишите состояние этих входов у вас, когда пытаетесь раскрутить в автомате:
dc_stop BOOL останов постоянным током
slow_stop BOOL останов выбегом
fast_stop BOOL быстрый останов
start BOOL пуск
reverse BOOL реверс

И значения в параметрах 3-15 3-16 3-17 какие?
изначально все 0, "старт" принудительно включаю с онлайн подключения в кодесисе
значение в параметрах 3-15/16/17 все 11
практически все делал с этого видео https://www.youtube.com/watch?v=X8no0PFBhy8
Перепроверял даже регистры обращения, все совпадает (ибо это клон).

Максим 112
16.01.2017, 12:56
Подскажыте пожалуста!!!
Если создаю свой фукцеонирущий блок и в нем указую выход ... И в другом блоки также указую тотже выхот ..
Можно ли так ...
Спасибо!!

petera
16.01.2017, 13:18
Подскажыте пожалуста!!!
Если создаю свой фукцеонирущий блок и в нем указую выход ... И в другом блоки также указую тотже выхот ..
Можно ли так ...
Спасибо!!

Так делать можно.

Максим 112
16.01.2017, 14:41
Если можно види пример любой какойто

Владислав Г.
16.01.2017, 15:57
Здравствуйте!

Библиотека PID_FUNCTION. Руководство по применению.

"Во избежание «перерегулирования» и «недорегулирования» можно ограничить сверху и снизу значение накопленной интегральной составляющей. Ограничение накопления интегральной составляющей можно задать равное выходной мощности, необходимой для поддержания заданной уставки, определенной опытным путем. Максимальное ограничение необходимо задать на 5…15 % больше этой мощности, а минимальное – на 5…15 % меньше требуемой мощности."

В моем случае выходная мощность для поддержания заданной уставки составляет 11%. Ограничение соответственно должно получиться: min 10% и max 12%. Если перевести в единицы ограничения интегральной составляющей, то: 0.1 и 0.12.

По факту получается следующее. При помощи ТРМ-210 была произведена автонастройка. Коэффициенты перенесены в PID_FUNCTION, который подключил к объекту, при этом _IMIN = -1, _IMAX = 1. Измеряемый параметр выходит на уставку, перерегулируется, опускается ниже уставки и плавно выходит на уставку. Все бы ничего, но по технологическому процессу необходимо периодически менять уставки, и тогда первый вылет может повлечь нежелательный результат.
Меняю ограничение накопления интегральной составляющей на _IMIN = 0.1, IMAX = 0.12. Измеряемый параметр выходит на уставку с 53% мощности и опять происходит перерегулирование.

Подскажите, правильно ли я рассчитал ограничение накопления интеграла?

petera
16.01.2017, 16:14
Если можно види пример любой какойто

Любой, так любой
28755


https://www.youtube.com/watch?v=OyBDLeEcQS8

RV9WFJ
17.01.2017, 07:55
Здравствуйте!

Библиотека PID_FUNCTION. Руководство по применению.

"Во избежание «перерегулирования» и «недорегулирования» можно ограничить сверху и снизу значение накопленной интегральной составляющей. Ограничение накопления интегральной составляющей можно задать равное выходной мощности, необходимой для поддержания заданной уставки, определенной опытным путем. Максимальное ограничение необходимо задать на 5…15 % больше этой мощности, а минимальное – на 5…15 % меньше требуемой мощности."

В моем случае выходная мощность для поддержания заданной уставки составляет 11%. Ограничение соответственно должно получиться: min 10% и max 12%. Если перевести в единицы ограничения интегральной составляющей, то: 0.1 и 0.12.

По факту получается следующее. При помощи ТРМ-210 была произведена автонастройка. Коэффициенты перенесены в PID_FUNCTION, который подключил к объекту, при этом _IMIN = -1, _IMAX = 1. Измеряемый параметр выходит на уставку, перерегулируется, опускается ниже уставки и плавно выходит на уставку. Все бы ничего, но по технологическому процессу необходимо периодически менять уставки, и тогда первый вылет может повлечь нежелательный результат.
Меняю ограничение накопления интегральной составляющей на _IMIN = 0.1, IMAX = 0.12. Измеряемый параметр выходит на уставку с 53% мощности и опять происходит перерегулирование.

Подскажите, правильно ли я рассчитал ограничение накопления интеграла?
ТРМ210 после автонастройки нормально регулирует или нет? Если да то коэффициенты неправильно перенесли (в ТРМ210 они вроде в виде 1/К) если нет, то тогда беда в коэффициентах.
5..15% весьма условная цифра и много от чего зависит, не относитесь к ней как к догме.

stilet
17.01.2017, 08:04
Спасибо, разобрался, все управляется, все крутиться. Скажу одно, порядок должен быть не только в голове, но и в коде... CFC за ногу его ))

Владислав Г.
17.01.2017, 08:51
ТРМ210 после автонастройки нормально регулирует или нет? Если да то коэффициенты неправильно перенесли (в ТРМ210 они вроде в виде 1/К) если нет, то тогда беда в коэффициентах.
5..15% весьма условная цифра и много от чего зависит, не относитесь к ней как к догме.
1. ТРМ-210 после автонастройки держит уставку довольно таки точно. Правда я не проверял, как он будет реагировать на изменение уставки. И это интересная мысль, которую я проверю.
2. Коэффициенты перенес 1:1. Если пропорциональность =1/К, то коэффициент еще более уменьшиться, что скорее всего не соответствует действительности, но попробую.
3. Я и рад бы отказаться от догмы, но она реально влияет на регулирование при изменении накопления интегральной составляющей. Просто не совсем ясна методика применения такой догмы.

Руслпн
23.01.2017, 08:44
Доброе утро всем!
Вопрос: Создал проект опроса по RS485 ТРМ212 на CFC (ПЛК160), создал переменные в конфигураторе ПЛК, но при онлайн опросе в codesys нет данных в PLC_PRG? Хотя до этого момента все работало. Переустановил CodeSys-2.3, файервол отключен. Создавал разные варианты проекта, но все увы.

Руслпн
23.01.2017, 09:20
Все, разобрались. Спасибо модераторам.

Panalexfix
23.01.2017, 21:45
Уважаемые форумчане !!!!!
Помогите пож с проблемой задержки включения выходов ПЛК !!!!
Очень нужна помощь!!!!!
Я думаю на форуме есть знающие люди!!! Не проходите мимо !!!!

тема сдесь->: http://www.owen.ru/forum/showthread.php?t=25979

test.test
24.01.2017, 12:54
Здравствуйте , подскажите, кто-нибудь решал вопрос ротации по наработки большого количества двигателей?

melky
24.01.2017, 13:00
пугает слово "большого". это сколько? 3, 5, 25 ?

test.test
24.01.2017, 13:06
Это не особо важно , к примеру возьмем 7. Интересует сам алгоритм смены оборудования.

Василий Кашуба
24.01.2017, 13:16
Это не особо важно , к примеру возьмем 7. Интересует сам алгоритм смены оборудования.
Попробуйте вот так28905.

test.test
24.01.2017, 13:46
Спасибо, а нет ли данного решения на языке ST?

Василий Кашуба
24.01.2017, 14:03
Спасибо, а нет ли данного решения на языке ST?
У меня нет, попросите пусть эСТеты переведут.

Mekc
24.01.2017, 17:57
http://www.owen.ru/forum/showthread.php?t=25997 помогите

RollForRepair
25.01.2017, 11:22
Здравствуйте, подскажите, а как заранее подсчитать сколько времени будет уходить на опросы модулей ввода-вывода Овена по Modbus RTU?

К примеру, как мне рассчитать, приблизительно, сколько времени займёт цикл опроса с 2-мя модулями МВ110-220-8АС? У одного 2 register input module, у другого их 3. Я так понимаю, что нужно сложить выставленные Polling time каждого модуля, вот только как посчитать оптимальное время опроса для каждого модуля?

feezly
26.01.2017, 08:27
Здравствуйте, как создать таймер для светофора представленного в user manual codesys2.3 ?2894328944

lecsa
30.01.2017, 18:55
Приветствую. Подскажите, есть в древе POU 2 обьекта. Один PLC_PRG (на ST) а второй REG (наCFC);
После компиляции, обьект REG, становится неактивным (название сереет), если сделать " очистить" то опять черная надпись. Когда название сереет то мой пид в REG, перестает считывать данные. Вроде вчера когда писал , он работал.
Я уже и переменные менял (глоб-локал) его самого, не понимаю почему он отключается? :((

Ну намекните , плиз!

Василий Кашуба
30.01.2017, 19:11
Приветствую. Подскажите, есть в древе POU 2 обьекта. Один PLC_PRG (на ST) а второй REG (наCFC);
После компиляции, обьект REG, становится неактивным (название сереет), если сделать " очистить" то опять черная надпись. Когда название сереет то мой пид в REG, перестает считывать данные. Вроде вчера когда писал , он работал.
Я уже и переменные менял (глоб-локал) его самого, не понимаю почему он отключается? :((

Ну намекните , плиз!

Вы в PLC_PRG прописали свою REG?

petera
30.01.2017, 19:12
Приветствую. Подскажите, есть в древе POU 2 обьекта. Один PLC_PRG (на ST) а второй REG (наCFC);
После компиляции, обьект REG, становится неактивным (название сереет), если сделать " очистить" то опять черная надпись. Когда название сереет то мой пид в REG, перестает считывать данные. Вроде вчера когда писал , он работал.
Я уже и переменные менял (глоб-локал) его самого, не понимаю почему он отключается? :((

Ну намекните , плиз!
Намекаю:)
Серенький второй POU потому, что он в проекте нигде не используется.
А чтобы использовался нужно в PLC_PRG хотя бы в одном месте вызывать этот самый REG.

lecsa
30.01.2017, 21:37
Спасибо большое, я примерно предполагал что проект надо или слить или вызывать REG. Буду искать как это сделать. Скажите, а в мануале по кодесис это есть действие (вызов)?

Василий Кашуба
30.01.2017, 22:11
Спасибо большое, я примерно предполагал что проект надо или слить или вызывать REG. Буду искать как это сделать. Скажите, а в мануале по кодесис это есть действие (вызов)?

Я же вам говорил прописать надо, вот так.
29032

lecsa
30.01.2017, 22:26
Я же вам говорил прописать надо, вот так.
29032

Спасибо за ответ. По моему я понял.
Я тут недавно начал изучение ST и самого программирования , всего неделю, был и есть хороший мозговой штурм. По этому сильно не ругайте. :)

dim1987
31.01.2017, 05:57
а как вызванный POU отозвать?

Lihoj
01.02.2017, 15:33
Добрый день! Работаю с OvenLogic, хочу изучить CodeSys-2. Я уже все обыскал. Новый объект в сером цвете и программа не выполняется. Что не так? И еще вопрос, как записать переменную в ФБ? У OL имеется блок для записи переменных, а в CodeSys?

slonegd
01.02.2017, 15:55
По поводу серого цвета написано чуть выше. Эта программа нигде не исполняется. Её следует вызывать или в plc_prg (название со скобками), либо настроить проект в Task configuration, где задать периодичность и приоритет всех программ. Например, основная программа вызывается максимально часто и имеет минимальный приоритет, а программа, которая формирует что-то для визуализации имеет максимальный приоритет и периодичность 200мс. Выходит в контроллере крутится основная программа, но раз в 200 мс выполняется программа для визуализации.
У ФБ есть входа, к которым и подсоединяешь переменные в графическом языке.
В st синтаксис такой fb.varin:=var; - присвоение без исполнения кода блока, или fb(varin:=var); - сначала присвоение и сразу после этого исполнение кода блока.

Lihoj
01.02.2017, 17:44
Получается, но теперь следующий вопрос: выдает ошибку - Неизвестный тип 'enkoder'
29080

Lihoj
01.02.2017, 18:07
После того как создал объект ФБ, все получилось! Спасибо!

Lihoj
01.02.2017, 22:32
У ФБ есть входа, к которым и подсоединяешь переменные в графическом языке.
В st синтаксис такой fb.varin:=var; - присвоение без исполнения кода блока, или fb(varin:=var); - сначала присвоение и сразу после этого исполнение кода блока.
Вопрос остается. Есть счетчик, 29083, а точнее есть энкодер. Необходимо в определенный момент сохранить значение энкодера. Движение фрезы: вперед, вниз, назад, вниз, вперед и т.д. Ну как то так!

slonegd
02.02.2017, 09:11
Почему все новички выбирают этот графический язык для программирования? На нем же так тяжело думать, он только в отладке и хорош.
Задача не ясна: когда сохранять? куда сохранять?

melky
02.02.2017, 09:16
у блоков есть вход EN и есть блок MOVE, еще есть SEL. и применение RTRIG, FTRIG, обсохраняйтесь....
язык как язык, больше понятный электронщикам...

Lihoj
02.02.2017, 10:54
Почему все новички выбирают этот графический язык для программирования? На нем же так тяжело думать, он только в отладке и хорош.
Задача не ясна: когда сохранять? куда сохранять?
По поводу сохранения! Идет подсчет импульсов поступающих из энкодера (линейное передвижение фрезы), необходимо в левой точке сохранить значение -5-, а в правой точке сохранить значение -23-. После этого фреза самостоятельно будет двигаться в этих пределах вперед и назад(от -5- до -23-).
29088

Dimooon
02.02.2017, 11:15
Простите, что вторгаюсь... Забуксовал, почему в нечитабельном виде значение в переменную приходит?
https://youtu.be/8bJ5b6GCLE4

petera
02.02.2017, 11:34
Простите, что вторгаюсь... Забуксовал, почему в нечитабельном виде значение в переменную приходит?
https://youtu.be/8bJ5b6GCLE4

А в чем нечитабильность?
-8.227539 е-002
нормальная запись вещественного числа в экспоненциальном виде, означает -8.227539 х 10-2=-0.00827539
https://ru.wikipedia.org/wiki/%D0%AD%D0%BA%D1%81%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D 1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0 %B7%D0%B0%D0%BF%D0%B8%D1%81%D1%8C

Василий Кашуба
02.02.2017, 11:42
По поводу сохранения! Идет подсчет импульсов поступающих из энкодера (линейное передвижение фрезы), необходимо в левой точке сохранить значение -5-, а в правой точке сохранить значение -23-. После этого фреза самостоятельно будет двигаться в этих пределах вперед и назад(от -5- до -23-).
29088

А кто определяет, что дошли до левой точки?

Lihoj
02.02.2017, 11:56
А кто определяет, что дошли до левой точки?

При запуске фрезы оператор определяет крайние точки и потом фреза работает на автомате: фреза влево, вниз, фреза вправо, вниз, фреза влево, вниз, фреза вправо, вверх до начального состояния. Вниз опускается на пару мм. Может есть какие то примеры? На Owen Logic все работает отлично. Теперь хочу усложнить программу а это возможно только на ПЛК110 v2. Скоростные входа нужны для точности.

Dimooon
02.02.2017, 12:24
Рядом такой же блок - там все нормально, что влетело - то и вылетело. А в этом блоке что не так?

petera
02.02.2017, 12:55
Рядом такой же блок - там все нормально, что влетело - то и вылетело. А в этом блоке что не так?

Поднимите мне веки.....
29090
там, где по Вашему, нормально
влетело 1845,682
от него отнялось 0 (выход SEL)
соответственно и вылетело 1845,682
А теперь смотрите там где "ненормально"
влетело 704,2015
от него отнялось 704,1758 ( выход второго SEL)
соответственно и вылетело 0,0257

ЗЫ.
По Вашей картинке
отнимите в столбик от того, что влетело то, что на выходе второго SEL

Dimooon
02.02.2017, 13:11
Точно. Не занимался давно - подзабыл,куда смотреть. У меня на ИП-320 тоже непонятные значения были. Галочку float не поставил в атрибутах регистра.Теперь корректно показывает.
Осталось только модуль подключить МУ110 - 8К. Нет связи чета.
Где-то мне попадалось про 81-ю ашыпку...

Lihoj
02.02.2017, 15:15
А кто определяет, что дошли до левой точки?
Может есть какие то примеры?
Энкодер подключен к скоростным входам, в программе он отображается уже как счетчик, то есть идет подсчет импульсов, а как можно улавливать сами импульсы, чтоб в программе установить свой счетчик и в нем обрабатывать значения?

melky
02.02.2017, 16:56
А как вы сохраняли в Лоджике ? просто удивительное рядом, сделать точно так же и в CDS.

Василий Кашуба
02.02.2017, 17:26
Может есть какие то примеры?
Энкодер подключен к скоростным входам, в программе он отображается уже как счетчик, то есть идет подсчет импульсов, а как можно улавливать сами импульсы, чтоб в программе установить свой счетчик и в нем обрабатывать значения?

Примеров для ПЛК у меня нет, а для ПР200 я сделал так.
29095

Lihoj
02.02.2017, 17:31
А как вы сохраняли в Лоджике ? просто удивительное рядом, сделать точно так же и в CDS.
В Лоджике создаю блок записи в ФБ - Write to FB. Думал может что то подобное в CodeSys? 29096

Lihoj
02.02.2017, 17:37
Примеров для ПЛК у меня нет, а для ПР200 я сделал так.
29095
Спасибо! На лоджике у меня это работает! Ну с помощью форума потихоньку двигаюсь. Кое что уже получается.
Тогда вопрос по другому! Как можно преобразовать тип WORD - 1,2,3,4,5,6,7 в тип BOOL - 1,0,1,0,1,0,1, тоесть WORD-1, BOOL-1, WORD-2, BOOL-0, WORD-3, BOOL-1, WORD-4, BOOL-0 и так далее. Извините за дурацкий вопрос!!!

Василий Кашуба
02.02.2017, 19:16
Спасибо! На лоджике у меня это работает! Ну с помощью форума потихоньку двигаюсь. Кое что уже получается.
Тогда вопрос по другому! Как можно преобразовать тип WORD - 1,2,3,4,5,6,7 в тип BOOL - 1,0,1,0,1,0,1, тоесть WORD-1, BOOL-1, WORD-2, BOOL-0, WORD-3, BOOL-1, WORD-4, BOOL-0 и так далее. Извините за дурацкий вопрос!!!

Вот так. 29099

Lihoj
02.02.2017, 22:42
Потихоньку разбираюсь! С помощью форума все будет ОК! 29107

slonegd
03.02.2017, 08:23
У word можно обращаться на прямую к битам.
varWORD.0:=true; // установить 1 в бит 0.
if varWORD.0 THEN // условие выполнится
;
END_IF

Алексей КИПОВЕЦ
04.02.2017, 01:29
Знающим, специалистам помогите разобраться новичку с панелью оператора ОВЕН СП307-Р. Стоит задача выводить данные в виде графика по измерительному каналу от ОВЕН ТРМ-202. В качестве графика выбран тип тренд. т.к. стоит задача выполнять просмотр истории измерения. Панель оператора Мастер сети ОВЕН ТРМ 202 Слейв. Обмен данными осуществляется по протоколу Modbus RTU. При загрузке в панель график не строиться хотя в настройках тренда задан регистр опрашиваемого прибора и регистр

Lihoj
04.02.2017, 18:57
Вопрос по энергонезависимой памяти. При аварийном отключении питания переменные автоматически не сохраняются в энергонезависимой памяти? Их необходимо записывать в VAR RETAIN?
29162

Lihoj
05.02.2017, 17:48
Еще есть вопрос! На R_Trig вход CLK подаю сигнал TRUE, а на выходе FALSE. С чем может быть связано?
29174
На фото rt3.

Василий Кашуба
05.02.2017, 19:31
Еще есть вопрос! На R_Trig вход CLK подаю сигнал TRUE, а на выходе FALSE. С чем может быть связано?
29174
На фото rt3.

А запустить программу?

Lihoj
05.02.2017, 19:33
А запустить программу?
Запускал! Но что то не включается. Проверю или имя не повторяется!

Василий Кашуба
05.02.2017, 19:39
Запускал! Но что то не включается. Проверю или имя не повторяется!

Поменяйте очерёдность выполнения программы.29175

Lihoj
05.02.2017, 19:41
Еще вопрос по установке переменной по умолчанию! Как установить переменную по умолчанию (на рисунке).
29176

Lihoj
05.02.2017, 19:42
Поменяйте очерёдность выполнения программы.29175
Да!!! А это вариант! Тогда еще подскажите как поменять очередность? Извините за не серьезные для вас вопросы! Я тока учусь! Спасибо за помощь. Вы мне помогли изучить OwenLogic!

petera
05.02.2017, 19:46
Еще вопрос по установке переменной по умолчанию! Как установить переменную по умолчанию (на рисунке).
29176

Для начала имя ей присвоить.
После этого можно продолжить разговор.

Lihoj
05.02.2017, 19:55
Для начала имя ей присвоить.
После этого можно продолжить разговор.
Я извиняюсь, но чему присвоить имя?

petera
05.02.2017, 20:15
Я извиняюсь, но чему присвоить имя?

Тому квадратику, на который стрелка указывает.

Lihoj
05.02.2017, 21:02
И все еще никак не пойму почему не срабатывает триггер? Я что то упускаю!29177
И что такое .М29178
Почему а не TRUE?29179

ASo
05.02.2017, 21:36
.M - это внутренняя переменная ФБ.
Откройте библиотеку util.lib и все увидите.

Lihoj
05.02.2017, 21:42
Почему а не TRUE?29180

petera
05.02.2017, 21:50
Почему а не TRUE?29180

Почитайте, как работает R_TRIG.
TRUE на выходе не статическое, а только в течение одного цикла ПЛК.
По этому Вы просто не успеваете увидеть это.
Увидеть можно только если выполнять программу по циклам (Ctr+F5)

ЗЫ.
Похоже, что Вас вводит в заблуждение слово триггер в названии.
Так это название не правильное. Это и не триггер вовсе, а детектор фронта входного сигнала

Lihoj
05.02.2017, 22:18
Спасибо! Начинаю понимать. Привык к OwenLogic.

petera
05.02.2017, 22:33
Спасибо! Начинаю понимать. Привык к OwenLogic.

Так и в OwenLogic R_TRIG работает аналогично!
29181

Lihoj
05.02.2017, 22:35
Работает аналогично, но такой проблемы не было!29182Возможно я не правильно еще понимаю присвоение переменных.

Василий Кашуба
05.02.2017, 22:46
И все еще никак не пойму почему не срабатывает триггер? Я что то упускаю!29177
И что такое .М29178
Почему а не TRUE?29179

Потому, что R_TRIG, это не триггер в обычном понимании, а формирователь импульса по перепаду сигнала из "0" в "1". У него даже в квадратике нарисовано на что он реагирует.

petera
05.02.2017, 23:46
Работает аналогично, но такой проблемы не было!29182Возможно я не правильно еще понимаю присвоение переменных.

Да неужели?
А это что?
29183

Dimooon
08.02.2017, 11:11
здравствуйте, сделал весы в кодесис 2.3, приходит сигнал с тензодатчика, выводится на панель, есть обунлятор, уставочка и выход на цепи загрузки весов. Все простенько, а хочется размаха, использовать какой-нибудь замудреный блок библиотечный или еще чего- нибудь... Делал опцию одну, т.к. наливаем в бак жидкость, для точной дозировки делал таймеры, чтобы жидкость в баке успокоилась, и доливать, открывая клапан на время, рассчитанное по недогрузу. Но чета как-то не прижилось особо, народ не пользуется. А любых других идей нет ни у кого? Я бы украл

Чужой
08.02.2017, 16:06
как так может быть???

Ryzhij
08.02.2017, 18:54
Чаще всего такое бывает, когда значение одной и той же переменной вычисляется (и присваивается ей, естес-с-сно) в нескольких местах программы. А что там у Вас - Вам виднее.

Чужой
08.02.2017, 20:27
Чаще всего такое бывает, когда значение одной и той же переменной вычисляется (и присваивается ей, естес-с-сно) в нескольких местах программы. А что там у Вас - Вам виднее.

там значения стояли другие..... делал "заводской сброс", залил с новыми значениями, а вычисляет по старым

Чужой
08.02.2017, 23:24
Просто это фотомонтаж
увы нет.....((

Чужой
08.02.2017, 23:28
еще вот так.....
как это лечить??

Василий Кашуба
09.02.2017, 00:01
еще вот так.....
как это лечить??
А вы пробовали вот так сделать? 29306

RV9WFJ
09.02.2017, 06:07
здравствуйте, сделал весы в кодесис 2.3, приходит сигнал с тензодатчика, выводится на панель, есть обунлятор, уставочка и выход на цепи загрузки весов. Все простенько, а хочется размаха, использовать какой-нибудь замудреный блок библиотечный или еще чего- нибудь... Делал опцию одну, т.к. наливаем в бак жидкость, для точной дозировки делал таймеры, чтобы жидкость в баке успокоилась, и доливать, открывая клапан на время, рассчитанное по недогрузу. Но чета как-то не прижилось особо, народ не пользуется. А любых других идей нет ни у кого? Я бы украл

Все давно придумано. Учесть массу "в полете", заднржку исполнительного механизма, апроксимация изменения веса в моменты между получением данных от модуля. Но в основе максимально быстрый обмен с модулем и минимизация помех.

Чужой
09.02.2017, 08:59
А вы пробовали вот так сделать? 29306

заработало..... спасибо))
обычно всегда так делаю, а в этот раз забыл....

sosna
11.02.2017, 14:07
Здравствуйте. Есть проблема. Подскажите как можно обнулить сумматор ADD c функцией разрешения на суммирование ENI и EN0. На нем собран счетчик ампер часов.После окончания цикла в нем сохраняется последнее значение и если его не сбросить то суммирование начинается не с нуля, а с этого значения.

krollcbas
11.02.2017, 14:18
sosna, откуда такая любовь к FBD?
На ST:
Если это - суммируем а:=а+1;
Если то а:=0

sosna
11.02.2017, 14:45
В ST не силен, если можно на CFC.

sosna
11.02.2017, 14:57
В ST не силен, если можно на CFC пожалуйста.

Василий Кашуба
11.02.2017, 15:11
В ST не силен, если можно на CFC пожалуйста.
На CFC будет так. 29419

petera
11.02.2017, 16:04
sosna, откуда такая любовь к FBD?
На ST:
Если это - суммируем а:=а+1;
Если то а:=0
На CFC тоже не сложно
29420
Тоже самое, линий просто больше
29421

https://www.youtube.com/watch?v=BpXhd2hq2yo

sosna
11.02.2017, 16:28
Petera спасибо, выручил.

sosna
15.02.2017, 20:57
Здравствуйте. Есть одна проблема. Есть два генератора BLINK, которые работают поочередно.
Необходимо выходы генераторов подать на один вход. Включение выходов через элемент OR проблему не
решил, так как выходы генераторов могут произвольно находиться в любом состоянии и 0 и 1.

Василий Кашуба
15.02.2017, 21:29
Здравствуйте. Есть одна проблема. Есть два генератора BLINK, которые работают поочередно.
Необходимо выходы генераторов подать на один вход. Включение выходов через элемент OR проблему не
решил, так как выходы генераторов могут произвольно находиться в любом состоянии и 0 и 1.
Тогда используйте AND или XOR, в зависимости какой сигнал вам нужен.

petera
15.02.2017, 21:41
Здравствуйте. Есть одна проблема. Есть два генератора BLINK, которые работают поочередно.
Необходимо выходы генераторов подать на один вход. Включение выходов через элемент OR проблему не
решил, так как выходы генераторов могут произвольно находиться в любом состоянии и 0 и 1.

Да, такой уж этот БЛИНК.
Нужно делать так
29539
тогда выходы генераторов не смогут произвольно находиться в любом состоянии и 0 и 1
И теперь можно, будет OR использовать
29540

sosna
16.02.2017, 07:48
Спасибо Petera все оказалось не так сложно.

ENH
16.02.2017, 12:04
Добрый день! Пишу программу для ПЛК63, изменение уставки с помощью кнопок на панели контроллера. Руководствуюсь примером, который был на сайте ОВЕН. При компеляции возникает сообщение что в выражении rm(clk:=kbrd=key_up ) идентификатор "kbrd" не определен. Может кто подскажет как с этим бороться?

lara197a
16.02.2017, 12:11
где-то вы или забыли объявить переменную или при объявлении описались.
Воспользуйтесь поиском и найдите ее в программе и области объявлений.

ENH
16.02.2017, 12:14
Проблема решена.

Василий Кашуба
16.02.2017, 12:59
Добрый день! Пишу программу для ПЛК63, изменение уставки с помощью кнопок на панели контроллера. Руководствуюсь примером, который был на сайте ОВЕН. При компеляции возникает сообщение что в выражении rm(clk:=kbrd=key_up ) идентификатор "kbrd" не определен. Может кто подскажет как с этим бороться?
Выложите свою программу, чтобы её можно было посмотреть, а то на форуме ясновидящих нет. :)

lecsa
16.02.2017, 15:44
Приветствую всех.
Возникла проблема, сижу туплю. (Естественно, только только) :))
Пид регулятор, переменная sp1(*уставка*) - глобальная и прописана в SubMenu конфигураторе ПЛК.
Вспомнил что все же нужно ее сделать RETAIN, что операторам меньше работы было.
Теперь капец. Ошибка 3703 (два раза объявлено).
Может надо эту переменную сделать VAR_OUT sp1 RETAIN и в конфигураторе ПЛК обозвать так же sp1?

Еще вопрос, как находить переменные с 2м объявлением?
Пролез по локальным, по глобальным, двух индификаторов не встретил . Как вы их ищите?

senkinve
16.02.2017, 15:45
Здравствуйте, есть несколько вопросов:
1. Как реализовать периодическую синхронизацию времени ПЛК 100 со временем MASTER SCADA?
2. Как можно реализовать изменение состояния переменных в зависимости от текущего времени, месяца и числа на календаре? (то есть сравнивать текущее время с интересующим нас диапазоном времени к примеру
IF "текущее число и месяц" = 01:01 THEN
IF 00:00:00 < "текущее время" < 02:00:00
THEN Control_K4 := TRUE AND Control_K6 := TRUE AND Control_K8 := TRUE; )
Буду очень благодарен, тому кто поможет, С МЕНЯ ПИВО.

petera
16.02.2017, 16:58
Здравствуйте, есть несколько вопросов:
1. Как реализовать периодическую синхронизацию времени ПЛК 100 со временем MASTER SCADA?
2. Как можно реализовать изменение состояния переменных в зависимости от текущего времени, месяца и числа на календаре? (то есть сравнивать текущее время с интересующим нас диапазоном времени к примеру
IF "текущее число и месяц" = 01:01 THEN
IF 00:00:00 < "текущее время" < 02:00:00
THEN Control_K4 := TRUE AND Control_K6 := TRUE AND Control_K8 := TRUE; )
Буду очень благодарен, тому кто поможет, С МЕНЯ ПИВО.

Переменные TOD и TD Вам в помощь ну и производные из них
Например,
IF 00:00:00 < "текущее время" < 02:00:00
превращается в
IF TOD_Now > tod#00:00:00 AND TOD_Now < tod#02:00:00 THEN
где
TOD_Now:=DWORD_TO_TOD((INT_TO_DWORD(HH)*3600 +INT_TO_DWORD( MM*60) +INT_TO_DWORD( SS))*1000);
HH -текущий час
MM - текущие минуты
SS - текущие секунды

senkinve
16.02.2017, 17:26
Переменные TOD и TD Вам в помощь ну и производные из них
Например,
IF 00:00:00 < "текущее время" < 02:00:00
превращается в
IF TOD_Now < tod#02:00:00 THEN
где
TOD_Now:=DWORD_TO_TOD((INT_TO_DWORD(HH*3600) +INT_TO_DWORD( MM*60) +INT_TO_DWORD( SS))*1000);
HH -текущий час
MM - текущие минуты
SS - текущие секунды

А как быть с синхронизацией времени ПЛК 100 со временем MASTER SCADA? не подскажите?

petera
16.02.2017, 18:10
А как быть с синхронизацией времени ПЛК 100 со временем MASTER SCADA? не подскажите?
Я не знаю, в каком виде в ПЛК приходит время из MASTER SCADA, в виде отдельных значений - год, месяц, день, час, мин, сек или в упакованном виде, например, в формате POSIX оно же время UNIX, оно же в кодесис Time AND Date (TD). От этого зависит как быть с синхронизацией.
А вообще полезно будет почитать статью И. Петрова "Программируем временные сложности" http://prolog-plc.ru/docs/TimeExperience.pdf
Тогда будете знать как "Как можно реализовать изменение состояния переменных в зависимости от текущего времени, месяца и числа на календаре"

senkinve
17.02.2017, 13:23
Переменные TOD и TD Вам в помощь ну и производные из них
Например,
IF 00:00:00 < "текущее время" < 02:00:00
превращается в
IF TOD_Now > tod#00:00:00 AND TOD_Now < tod#02:00:00 THEN
где
TOD_Now:=DWORD_TO_TOD((INT_TO_DWORD(HH*3600) +INT_TO_DWORD( MM*60) +INT_TO_DWORD( SS))*1000);
HH -текущий час
MM - текущие минуты
SS - текущие секунды

Я все никак не могу догнать, а откуда возьмутся значения в переменных "HH -текущий час MM - текущие минуты SS - текущие секунды"??

petera
17.02.2017, 16:51
Я все никак не могу догнать, а откуда возьмутся значения в переменных "HH -текущий час MM - текущие минуты SS - текущие секунды"??
SysLibTime
Пример получения "HH -текущий час MM - текущие минуты SS - текущие секунды" http://www.owen.ru/forum/showthread.php?t=26055&p=235872&viewfull=1#post235872

29596

senkinve
17.02.2017, 17:46
SysLibTime
Пример получения "HH -текущий час MM - текущие минуты SS - текущие секунды" http://www.owen.ru/forum/showthread.php?t=26055&p=235872&viewfull=1#post235872

29596

а зачем тогда использовать операции домножения ("MyRealTime:=DWORD_TO_TOD((UINT_TO_DWORD(HH*3600) +UINT_TO_DWORD( MM*60) +UINT_TO_DWORD( SS))*1000);"), если, как я понял, в функциональном блоке RTC_N они уже в готовом виде?

petera
17.02.2017, 18:27
а зачем тогда использовать операции домножения ("MyRealTime:=DWORD_TO_TOD((UINT_TO_DWORD(HH*3600) +UINT_TO_DWORD( MM*60) +UINT_TO_DWORD( SS))*1000);"), если, как я понял, в функциональном блоке RTC_N они уже в готовом виде?

Потому, что
здесь
IF TOD_Now > tod#00:00:00 AND TOD_Now < tod#02:00:00 THEN
Текущее время в формате TOD(Time Of Day) сравнивается только с двумя константами tod#00:00:00 и tod#02:00:00

А если брать "в готовом виде", тогда сравнивать придется с шестью константами в формате INT
IF HH > 0 AND MM >0 AND SS > 0 AND HH < 2 AND MM = 0 AND SS = 0 THEN
к тому же работать не будет, т.к. состояний, когда
одновременно SS > 0 и SS = 0 или MM > 0 и MM = 0 не может быть

Sol
20.02.2017, 08:57
Все привет! Как реализовать типовой ПИД-регулятор на языке ST? Если есть, пример или ещё что-то в помощь. Заранее спасибо.

ASo
20.02.2017, 09:49
1. Зачем, когда он есть в util.lib?
2. Откройте util.lib и изучайте соответствующий ФБ.

pcmmsergey
20.02.2017, 18:49
Подскажите если можно. ПЛК110-32 написана программа. В режиме симуляции все работает, а после загрузки в контроллер при подаче напряжения на вход физически сигнал есть но программа и как следствие контроллер этот сигнал на входе не видит.

Turonk
22.02.2017, 11:52
Добрый день, имеется шаговый двигатель для управления необходимо 400 импульсов в секунду. Возможно ли им (и как) управлять, если указано что минимальная длительность ШИМ 10мс на ПЛК73?

lecsa
22.02.2017, 15:50
Приветствую.
Есть PID, у него выходY- REAL, есть Y_min и Y_max. Мне надо на выходе ПЛК получить 4...20мА для упр клапаном.
Как сделать правильно?
Задать PID 4...20мА в Y_min=4 и Y_max=20 и получу на выходе ПЛК 4...20мА?
Использовать на выходе из ПИДа Lin_trafo и задать 4...20мА?
Или есть какое то правильное решение?

melky
22.02.2017, 16:11
lecsa для начала открыть документацию на ПЛК, а то может на выход надо подавать не 4-20 а 0-1.....

alex55
22.02.2017, 17:03
Подскажите если можно. ПЛК110-32 написана программа. В режиме симуляции все работает, а после загрузки в контроллер при подаче напряжения на вход физически сигнал есть но программа и как следствие контроллер этот сигнал на входе не видит.
В конфигураторе наверное переменные забыли объявить..

lecsa
23.02.2017, 09:26
lecsa для начала открыть документацию на ПЛК, а то может на выход надо подавать не 4-20 а 0-1.....

Шутку понял, смешно. А по вопросу то как?

krollcbas
23.02.2017, 10:20
Lecsa, в своих проектах так и делаю. Сначала значение с АЦП масштабирую в значение флоат и обратно масштабирую для передачи в поле.