В любом примере чтения на ST по Модбас для ПЛК63-73, Вложение 82106
10) Обмен через библиотеки Modbus и OwenNet https://owen.ru/product/codesys_v2/example_program
Вы же просто всё выкинули.
Вид для печати
В любом примере чтения на ST по Модбас для ПЛК63-73, Вложение 82106
10) Обмен через библиотеки Modbus и OwenNet https://owen.ru/product/codesys_v2/example_program
Вы же просто всё выкинули.
kondor3000, а что Вы вкладываете в "признак завершения операции"? Это успешная операция по передачи данных по Modbus? Если да, то как Вы это отслеживаете? Это анализ регистра "Last error"?
Снимаю вопрос из-за не корректно поставленного мною вопроса и настроя специалистов.
Отлаживаю программу. Впервые начал использовать "Менеджер просмотров". Вещь оказалась удобная. Можно в одном окне собрать актуальные для отладки переменные программы. Но появился вопрос. Почему когда я вношу в "Менеджер просмотров" регистры от Modbus (slave)[VAR] и хочу изменить их значение, то после изменения в программе эти новые значения не появляются. А если изменяешь значение в регистре непосредственно в окне "Конфигурация ПЛК" , то все изменяется, как положено. На фото указываю конкретный регистр. Я полдня просидел с это непоняткой. Думал, что ошибка в программе.
Вложение 82153
Подскажите, в чем может быть причина?
Большое спасибо! Я понял свою ошибку. Действительно, я не нажимал Ctrl +F7 после изменения значения в переменной. Меня подкупило, что появлялось окно со старым, новым значением и кнопкой "Ok" и "Отмена". Думал что это окошко окончательно прописывает значение в переменную.
Оставил как в примере, но флаг complete не встает все равно.Вложение 82158Вложение 82159
Данные сыпятся в буфер, но постоянно проскакивает запрос в сам UPS, который мы отправляем в UPS.
команда, которую мы отправляем с ПЛК: :010300010050AB
И она время от времени, без какой-либо переодичности и системности вываливается в буфер и из-за этого данные иногда проваливаются. Пытался добавить проверку на значение кол-ва данных в буфере, который возвращает UPS. По типу: :0103A008...., шде А0 это кол-во данных и стояла такая проверка IF BUFFER[2] =16#A0 THEN..., но не помогло.
откройте библиотеку как проект и посмотрите при каких обстоятельствах поднимается флаг Вложение 82161
Зачем что-то открывать?
Это ж на суахили?Цитата:
"Complete: BOOL; (*если = TRUE, обмен завершен*)"
А зачем на это смотреть?Цитата:
на моем скрине 0003 и 0027
Подсоединили к проекту - и смотрите объявления
Вы чтоб посмотреть уровень топлива разбираете топливную систему?
Смотрите на объявления - строка 6. Там по-русски.
Вот скрин чтения регистров, Complete очень редко промаргивает, в буфере значения прыгают, а значения переменных стоят Вложение 82165
Чтение переменных INT (WORD) и FLOAT разнесены по шагам CASE. Так же по шагам, надо разнести запись и чтение.
Ну емаё же.
Человек не колибри - он не может в принципе увидеть процесс длительностью 1..3мс (1 цикл)
Промаргивает не Complete, а какое-то эхо отображающее значение переменной между циклами опроса ПЛК самим КДС (винда еще тупит перекрашивая квадратик)
О факте работы complete можно узнать или вставив брекпоинт, или как о "черной дыре" только косвенным путем - вставив там счетчик (например)
В предстоящем проекте систему управления придется разносить в два шкафа. В одном шкафу ПЛК110-60 и два модуля расширения, а во втором шкафу два модуля расширения (МУ110-224.16Р и МВ11-224.16ДН). Связь по RS-485. Расстояние между шкафами 8-10 метров. До этого у меня не было опыта работы с удаленными модулями расширения на такое расстояние. Вопрос: потянет ли скорость 115200 bod для такого расстояния? Ведь мне придет программировать (настраивать) модули расширения до установки их в шкаф. Или скорость нужно опустить до 57600 bod?
У меня работает и на 115200 baud без проблем. Даже до 50м без терминальных 120 Ом. Используется МКЭШ 2x0.5
Вложение 82193
Ну и каким боком тут расстояния?
Вы из шляпы дальше что достанете — сварочный от розетки на шкафу?
Резисторы ставят на концах линии, у ПЛК и последнего модуля.
По хорошему, частотники надо разделить с оборудованием, хотя бы металлическими полками. Проводить измерительные линии и линии связи надо в экранах и отдельно от силовых кабелей.
А ещё лучше разнести по разным шкафам. Шкафы заземлить.
Добрый день, вот растолкуйте, такие вопросы возникают.
У меня ABZ-энкодер на котором написано 1000 имп/об. (самого энкодера у меня пока нет). Я подключаю его к ПЛК110, a b Z на первые 3 быстрых входа (как положено), в конфигурации выбираю Fast Z-Enkoder. На входе IW0.0 должно приходить некое значение типа WORD.
Вот и 1-й вопрос: «Что показывает значение на входе IW0.0? (это кол-во импульсов приходящих с энкодера, это сумма импульсов с накоплением?)» И 2-й вопрос: «Какое значение будет у меня на входе IW0.0, когда энкодер совершит 1 оборот?» (почитал форумы и пришел к выводу, что это число не будет равно 1000, а подскажите сколько точно ?)
4000 на оборот
https://upload.wikimedia.org/wikiped...1%82%D1%8B.jpg
Канал покажет накопленные до отметки Z. После Z будет 0. Т.е. за 3999 будет 0. Если вращение в обратную то до 0 и сразу 3999.
Добрый день, форумчане. При ознакомлении с описанием модуля МВ210-221 возник первый вопрос: "Важна ли батарейка для нормальной работы модуля или она только влияет на питание часов реального времени (ее можно не менять)?"
В руководстве по модулю указана следующая информация:
"8.2 Батарея
В приборе используется сменная батарея типа CR2032. Батарея предназначена для питания часов реального времени. Если заряд батареи опускается ниже 2 В, то индикатор "Авария" засвечивается на 100 мс один раз в две секунды. Такое свечение индикатора сигнализирует о необходимости замены батареи. Если напряжение батареи часов реального времени меньше 1,6 В, то запись конфигурационных параметров выполняется во флеш-память модуля.
Порядок записи конфигурационных параметров при разряженной батарее:
1. Новые значения конфигурационных параметров записываются в батарейный ОЗУ около 5 секунд.
2. Из батарейного ОЗУ значения конфигурационных параметров переносятся во флеш-память и
запускается таймаут не менее 2 минут (в зависимости от нагрузки на модуль).
ПРИМЕЧАНИЕ
Состояния батареи обновляется после подачи питания или по истечении 12 часов с момента подачи питания.
ПРЕДУПРЕЖДЕНИЕ
Не рекомендуется выполнять циклическую запись конфигурационных параметров в случае разряда батареи. Ресурс флеш памяти ограничен."
Второй вопрос: "При нормальной работе модуля и при должном напряжении питания батареи конфигурационные параметры хранятся для работы модуля в ОЗУ и при их изменении через OWEN configurator они изменяются в ОЗУ?"
Третий вопрос: "Что является конфигурационными параметрами? Все настройки Owen configuratora?"
Думаете, если несколько раз напишите, быстрее ответ получите? https://owen.ru/forum/showthread.php...l=1#post458443
Лучше в тех поддержку напишите.
Спасибо, все понял, прямо по полочкам. Вот возник еще по ходу вопросик, если я от 3-го быстрого входа откину Z метку, т.е. подключу только А и В фазы, то в этом случае счет будет идти до 65535 (макс значение для типа Word), а за ним будет уже 0 и снова по нарастающей до 65535, верно, или ошибаюсь? Или просто счет остановится на максимальном числе и дальше не будет меняться?
P.S. Тут еще родилась мысль. А можно ли использовать 3-й вход для сброса(обнуления) показаний энкодера. То есть, подключить вместо Z метки на 3-й вход сигнальный провод и в нужный мне момент подавать на него импульс, как будто сработала метка Z, и при этом значение на входе IW0.0 станет равным 0? Вроде логично и выглядит просто, но может есть подвох и так не возможно сделать?
Буду благодарен за разъяснения.
Значение в канале - это номер позиции. Это значение обнуляется всегда, когда приходит фронт на вход Z или когда позиция накапливает значение Range.
Получается если событие-Z не наступит, то сброс произойдет по Range, и на оборот.
Дойдет ли канал до 65535 сказать не могу. Возможно при Range = 0.
Добрый день! Подскажите новичку пожалуйста. Можно ли к одной группе аналоговых входов ПР200 подключить и датчик давления (4-20мА) и датчик температуры ДТС (Pt1000)? У меня на COМ3 порту сидит минус от блока питания. На АI3 подключаем датчик давления (4-20мА). Ток пойдет от блока питания (+) в датчик и потом в СОМ порт (-). При подключении датчика температуры вход AI4 сам является источником тока и посылает его в СОМ3, где у нас уже висит минус от блока питания. Можно ли так делать?Вложение 82280
Здравствуйте. Создаю простенькую программу для проверки в Codesis 2.3 программа видит ошибку, не понимаю что не так?
Вложение 82423
А все библиотеки подключены? Стандартная есть?
Кликал уже, ни чего не показывает.
Конечно библиотеки на месте иначе была бы другая картинка блоков.
Должно быть так Вложение 82424 Не TIME на выходе, а переменная типа TIME.
Да, вы правы, если удалить TIME или объявить ET то ошибка уходит и все работает. Спасибо.
Добрый день!
Требуется мнение компетентных людей по вопросу организации задач ПЛК (Codesys 2.3). В существующей версии программы есть две задачи, работающие циклически, с интервалом 200 мсек каждая (задача №1 отвечает за получение технологических данных и обмен с подчиненными устройствами по Modbus, задача №2 производит расчеты и определяет состояния для подчиненных устройств). Есть предположение что такая организация задач создает неточности в управлении исполнительным механизмом, управляемым по времени его хода. Коротко говоря, контроль времени и работы реализован через сравнение времени активности шага SFC и заданного времени хода. Так как на очередном цикле, при сравнении этих времен, может быть так, что время активности шага на несколько мсек меньше заданного, то соответственно следующая проверка будет в следующем цикле, то есть через 200 мсек. То есть реальное время хода механизма может быть больше на 200 мсек. При заданном времени хода, допустим 2 сек, погрешность в 200 мсек это 10%. Причем это будет накапливающаяся погрешность, на каждом такте управления.
Возможным решением кажется иная организация задач. Задаче №1 устанавливается меньший приоритет, и тип выполнения "свободная". Задача №2 имеет более высокий приоритет, и тип "по событию". В конце выполнения задачи №1 по триггеру запускается выполнение задачи №2, по завершению второй задачи, выполняется первая. Лишних задержек нет, конфликт задач исключен вроде как. Один из незначительных недостатков, как я понимаю, в том, что при запуске выполнения задачи №2, выполнение задачи №1 прерывается, и после выполнения задачи №2, происходит завершение выполнения задачи№1 (по сути просто возврат управления системе ПЛК, то есть это дополнительный цикл, но с очень малым временем цикла).
Есть ли какие-то недостатки в таком решении?
Александр TL;DR =) А почему просто задачам не поставить меньшее время выполнения-то? Например 50 мсек?
И вообще. Почему это не может быть одна задача, внутри которой будет крутиться таймер, который каждые 200 мсек дёргает нужный код?