Добрый день.
Если в настройках хранилища задано ограничение (на размер файла или кол-во записей), то при его достижении самые ранние записи начнут удаляться и заменяться новыми.
Вид для печати
Добрый день!
Вопрос по циклу опроса ПЛК в режиме Modbus TCP Master - как можно оценить частоту опроса Slave-устройств в случае конфигурации через шаблоны?
Верно ли предположение, что можно сделать опрос через ФБ, тогда скорость опроса будет зависеть от времени цикла задачи?
Для понимания: имеется ПЛК (TCP Master), в проекте через шаблон добавлен преобразователь Ethernet-RS485 (TCP Slave), в котором несколько датчиков RS485 с Modbus RTU на скорости 9600.
Связь неустойчивая, по датчикам постоянные ошибки MB_ERRORCODES - «TCP_COMMUNICATION_ERROR» - TCP Port error. Request was not sent.
Данных много, похоже, что ПЛК слишком часто опрашивает датчики через преобразователь, на скорости 9600 они не успевают отвечать.
Добрый день.
Мы не разрабатывали шаблон какого-либо преобразователя.Цитата:
в проекте через шаблон добавлен преобразователь Ethernet-RS485 (TCP Slave)
Приложите скриншоты вашей конфигурации обмена. Лучше всего - выложите проект.
Укажите модель используемого преобразователя.
Предположительно, предыдущие разработчики снизили умышленно, т.к. не работало на бо'льшей скорости.
Посчитал кол-во регистров со всех устройств - около 500 регистров, это 8000 бит чистой информации (очень много лишнего, планирую сильно уменьшить).
Теперь вопрос возник - сколько раз в секунду ПЛК хочет опрашивать датчики. Если 1 раз в секунду - то скорости 9600 может и хватило бы.
А если цикл 100 мс, то это 10 раз в секунду, а значит 80 кбит, тогда уже 115200 только.
Используются стандартные шаблоны Codesys, конфигурация Ethernet выглядит так:
- Modbus TCP Master (ПЛК)
... - Modbus TCP Slave (Преобразователь WirenBoard MGE v2 - не знаю, как он оказался в этом проекте АСУ ТП :mad:)
...... -Modbus Slave, COM Port (датчик с Modbus RTU)
Цикл ПЛК должен быть 10 мс.
Цикл в целом никому не должен и 10 мс не догма. А ошибки идут из-за маленького времени таймаута. Ответ просто не успевает приходить. Плюс возможно витая пара(если она вообще витая там) неграммотно разведена по датчикам (например звездой или без терминаторов). Если все это устраните должно работать.
Добрый вечер, всех с вечером пятницы. Подскажите, вот так будет корректно читаться, с учетом того, что row_data - это массив из двух вордов?
Вложение 87428
Скорее каждый элемент массива row_data по отдельности придется привязать. Точно не могу сказать, OCL использую, мне там проще сделать так как я хочу.
Зачем вообще привязывать что то, у вас массив из 12 WORD, объявите Вложение 87429
W AT%IW0 : ARRAY [0..11] OF WORD; или
Sensors AT%IW0 : ARRAY [0..11] OF WORD; где AT%IW0 ваш адрес в конфиге
и используйте Sensors[0], Sensors[1] и т. д.
Добрый день.
Есть вопрос по корректной загрузке проекта в ПЛК210.
Как наиболее правильно выполнить загрузку проекта с исходным кодом для возможности в последующем работы с проектом через выгрузку архива?
Если взять проект, создать загрузочное приложение, а затем выгрузить архив, среда Codesys все равно ругается на различия в проекте (появляется дата загрузки в контроллер, т.е. в выгруженной версии проекта даты нет)
Потому что одного проекта недостаточно для подключения онлайн без такого сообщения. Вы все файлы, которые в папке проекта сохраните, или в архив сожмите. Там 2...3 как раз и, с которыми онлайн идёт без проблем. В факе к плк тут на форуме где то есть, у Евгения Кислова...
"Создать загрузочное приложение" - это не загрузка исходного кода, а загрузка во флэш, чтобы после снятия питания исполняемое ПО осталось в ПЛК.
Для загрузки исходного кода нужно нажать "Файл" - "Загрузка исходного кода".
Если будете пробовать, напишите, получилось ли. Сам не пользовался, чтобы не оставлять свободный доступ к проекту, с возможностью выгрузить проект и сделать какие-то изменения.
У меня была хорошая статья (там про 2.3 и 3.5): https://cs-cs.net/codesys-archiv-pro...ishodniye-kody
Тебе надо загружать Исходные тексты проекта
Такой подход с сохранением исходника на плк считаю неправильным. Во первых плк может умереть вместе с исходниками. Отсюда во вторых, лучше их передать на носителе каком нибудь, это и приемо передаточные акты поможет подписать, и в дальнейшем послать нерадивого заказчика, если он профукал исходники. Ну или передать это ещё раз за определённую небольшую, но всё таки плату:
Исходники переданы, бумаги подписаны. Потеряли, ваши проблемы... Ну конечно если в договоре эти исходники есть...
Вашу статью читал, как раз выставлено "при создании загрузочного приложения, онлайн загрузке и тд", так что исходный код загружается каждый раз.
Мой вопрос именно в том, что даже при таком подходе, невозможно подключиться к контроллеру с "нуля" и перейти в онлайн, все равно приходится перезаписывать загрузочное приложение.
Понимаю, но исходники и так есть у заказчика. Вопросы передачи и тд немного другая область. Мой вопрос больше о том, существует ли способ, чтоб к контроллеру можно было подключиться и перейти в онлайн, не имея проекта (условно с голым codesys и библиотеками)
Подскажите, где посмотреть насколько проект нагружает "железо" СПК210, как примерно рассчитать или измерить задержку между появлением сигнала входе модуля DI и срабатыванием выхода модуля DO? Естественно вопрос в рамках обсуждения Codesys. В мануале нашёл вот это:к СПК210 это применимо или нет? Не увидел такой опции.Цитата:
Tab: CPU Load
Object: Task Configuration
The CPU Load tab is available in online mode for multicore devices only. The load of the individual CPUs is presented in the trace editor.
For more information, see: Accessing All Traces on the Controller
If CODESYS Trace is installed, then you can open the trace configuration by double-clicking the legend in the window on the right side. Adding more variables is not possible here.
В CODESYS при подключении к контроллеру: Конфигурация задач - Мониторинг.Цитата:
где посмотреть насколько проект нагружает "железо" СПК210
В web-конфигураторе: Состояние - Графики в реальном времени и Статистика.
Завести DO на другой DI модуля. В программе фиксировать относительное время при детектировании сигнала на каждом из входов - например, с помощью оператора TIME()Цитата:
как примерно рассчитать или измерить задержку между появлением сигнала входе модуля DI и срабатыванием выхода модуля DO?
Неприменимо, объект Device Trace не поддерживается.Цитата:
к СПК210 это применимо или нет? Не увидел такой опции.
Не очень понятно, каковы критерии "нормы".
Для общего представления можно почитать эту статью:
https://habr.com/ru/companies/vk/articles/335326/
Если смотреть на страницу "Графики в реальном времени" на рисунке 3.15 руководства " Web-конфигуратор ПЛК/СПК с системой исполнения CODESYS V3.5" то у шкалы Y максимальное значение 1.50 (предположу в верхней части будет 2.00) собственно это и есть максимальный предел, или шкала динамическая? В таком случае при каком значение станет заметна нехватка ресурсов и заметно снизится быстродействие ПЛК?
Динамическая.Цитата:
или шкала динамическая?
"Заметность" зависит от качеств наблюдателя.Цитата:
при каком значение станет заметна нехватка ресурсов и заметно снизится быстродействие ПЛК?
Здравствуйте! Не могу понять на что ругается CodeSYSВложение 87553
Понятно. Спасибо.
На новом ПК поставил Codesys
В проекте моя библиотека теперь ругается на библиотеку VisuElems:
Вложение 87562
Сама библиотека компилируется без проблем, никаких библиотек не просит. VisuElems там даже нет в списках
Но, тем не менее, у вашей библиотеки есть зависимость от нее.
Можете доустановить отдельно через Репозиторий библиотек:
https://ftp.owen.ru/TechSupportShare...mpiled-library
Спасибо, это помогло!
P.S. Я её искал, но не смог найти, откуда её скачать
Нашёл только это: https://forge.codesys.com/prj/codesy...ogs/home/Home/
Но это оказалось не то
Добрый день! Такой вопрос будет, как в протоколе Modbus сделать передачу булевого значения, только при изменении значения, чтоб сеть не нагружать и чтоб не конфликтовать если по этому же адресу с другой переменной пойдут отправляться данные
Например: на панели я нажимаю кнопку включить устройство, мне надо отправить 1 один раз и больше не отправлять
Знаю как через триггер по переднему фронту это сделать, но тут я тпе понимаю больше для большого пакета данных который отправляется один раз, а для просто булевых значений используется тригер "Приложение" с которым я не очень разобрался, может кто подсказать как правильнее сделать
Ну тоесть булевую переменную подставить в сам канал и её же в тригер?
(на самом деле только понял что если я включу то 1 отправится,а если выключу 0 не отправится)
я думал есть способ чтоб при изменении значения, ну включил выключатель, отправил 1, выключил,отправил 0
Добрый день.
Работаю над проектом с шиной CAN, симулирую аварии. Логика простая: проблема на шине = запрет работы, нет проблем = работа разрешена.
С определением работоспособности разобрался, после устранения неисправности шина поднимается, но в проекте на шине висят восклицательные знаки. Убираются только нажатием кнопки "Подтвердить" на странице "Состояние" устройства. В принципе алгоритму не мешает, но лампочка "Авария шины" на ПЛК (не Овен) мыргает, что напрягает. Хотелось бы узнать как можно программно "нажать" эту кнопку.
Вложение 87567
CODESYS V3.5 SP18 Patch 5