Newcomer, Вы документ открывали? Там все написано.
Вид для печати
Newcomer, Вы документ открывали? Там все написано.
Подскажите в М02 с Modbus.lib нормально работает?
Взял проект из старого ПЛК, пишу в модуль МУ110-16К
Изначально буфер писался как в руководстве:
BufferOut[1]:=WORD_TO_BYTE(MY16K);
BufferOut[0]:=WORD_TO_BYTE(SHR(MY16K,8));
send2_modbus(
При таком раскладе постоянно ошибка err=255.
Затем переделал как в СПК (буфер изменять начал в предыдущем шаге)
Err=0, но в модуль прилетают какие то значения.
Замыкаются выхода 12,13,14,15,16.
При этом переменная не изменяется и равна 0.
До этого все работало через конфигуратор. (Но и прошивка была старая 0.3.62)
После обновления таргета (3.9 на 3.10) и прошивки (0.3.64 на 0.3.66) возникли проблемы с загрузкой программы в ПЛК110-Х.30[М02]. При загрузке программы теряется связь.
Есть ли проект на ПЛК в момент загрузки?
Интерфейс загрузки?
как обновляли?
работает
жалко что не получается следовать инструкции, ожидаемого UpdateCore Ok так и не приходит, вместо этого происходит обрыв связи, узнать что перепрошился можно только после последующего соединения и выполнении команды PLCInfo. Перемычку можно и не убирать, а вот нажать сброс как требуется в инструкции по прошивальщику через сом-порт вроде помогло избавится от постоянных обрывов связи. В работе через бибку сервер рвет соединение если нет обмена данных через семь секунд
Разрыв соединения при отсутствии по нему обмена - штатный функционал любой реализации сокетов. В ПЛК, т.к. это всё же промавтоматика, а не офисный компьютер, таймаут обмена сильно сокращён (с часов до секунд).
Просто надо что-нибудь посылать - и разрывов не будет.
Для получения UpdateCore Ok увеличьте таймауты в среде разработки
А targets новые рекомендуемые выложены где-то?
И ещё вопрос - если меняем таргет 3.10 на 3.12, то это повлечёт за собой переписывание конфигурации ПЛК, или там всё останется на месте?
Поменять стоит. 3.11 скачать можно здесь: http://www.owen.ru/catalog/codesys_v2/73292499
Спасибо! Будем тестировать...
Что с батарейками на ПЛК М02?
Уже второй ПЛК с севшей батареей.
Причем изначально лампочка красная не горела, все было нормально.
Затем красная лампочка и время в 2000 год.
А замена батарейки - тот еще акт....:(
Перешился на 0.3.66 - было 0.3.53 Разумеется отлаженные проекты ( с UDP сокетами ) перестали работать ))))
Полчаса матюгов и волшебная палочка найдена:
IF sock_adr_out.sin_addr = (*SysSockHtonl( 16#0A000601 )*) 16#0A000601 THEN
нужно перестать переставлять байты в принятом адресе... так и будем с каждой прошивкой туда - сюда прыгать?
Они не перестали работать, а сокеты UDP были приведены к предполагавшемуся 3S Software виду. Немного нестандартному :(
Меняли, потому что штатные библиотеки 3s не работали как надо.
к тому же в поведении UDP с 0.3.64 ничего не поменялось
Просмотрел стр. форума с 1 по 55 и с 90 по последнюю. Не нашел ответа на одну хр..нь. Итак: КДС v2.3.9.41, PLC 110-24.P.M (02), Target 3.10, периферия блок Input 8 бит, ПЛК мастер на Modbus (RTU). Создаю целевую функцию, вхожу в конфигуратор ПЛК, включаю Modbus (Master) RS485, подключаю Universal Modbus device, вставляю 8 bit input module, и получаю:
8 bit input module [VAR]
AT %QB6.1.0.0:BYTE;(**) [CHANNEL(Q)]
Т.е., входные сигналы попадают в область выходов!? Звоню в тех. поддержку... Уверяют, что так и должно быть, мол, ускоряется обработка. 20 лет работаю с Сименсом, Омроном и пр., такого не видел. Ладно, пишу простенькую программку:
LD %IX1.0.0 (*вход на ПЛК*)
AND %IX1.0.1 (*вход на ПЛК*)
ST %IX6.1.0.0.2 (*вход на внешнем модуле входов*)
Компилирую. И... все ОК: 0 ошибок, 0 предупреждений. Ладно добавляю:
LD %IX1.0.0 (*вход на ПЛК*)
AND %IX1.0.1 (*вход на ПЛК*)
ST %QX6.1.0.0.2 (*вход на внешнем модуле входов*)
LD %IX1.0.0 (*вход на ПЛК*)
AND %IX1.0.1 (*вход на ПЛК*)
ST %IX1.0.2 (*вход на ПЛК*)
Компилирую.Получаю: Ошибка 4020:Odin(7): Операндом для "ST";"STN";"S";"R" должна быть переменная или прямой адрес, доступные по записи. 1 ошибка, 0 предупреждений. Е.о. КДС не видит, что %QX6.1.0.0.2 входной сигнал. Сразу мысль: у меня в проекте более 60 входов и более 60 выходов. Если я "очепятнусь" и вместо %QX6.2.0.0.2 (выходной сигнал) поставлю %QX6.1.0.0.2 (входной сигнал), то КДС проглотит и не поморщится. Найти сие потом...ой! И еще: как поведет себя вход на модуле входов с 24в на выходе, если я на него подам еще и 24в с контроллера. Есть ли какие-либо мысли по данному поводу. У меня приличный опыт по Сименсу, Овен только однажды пуско-наладил. Сейчас нужно запрограммировть СУ на Овен (времена то тяжелые).
Ну так зачем же бросать уютный Сименс и переходить на плохой CoDeSYs.
Это разные языки программирования и особенности их надо понять и простить :)
http://www.kipshop.ru/CoDeSys/steps/...figuration.pdf страница 14, рисунок 1.6
и не надо будет этого кода через %
Владислав, причем тут CoDeSys? Он все понимает правильно: I - это входной сигнал, Q - это выходной сигнал. А переход на Овен это не от хорошей жизни. Мы тут на "земле" работаем в режиме выживания. Заказчики не воспринимают контроллеры за 2500 - 4500 евро. Да и за отечественного производителя я обеими руками. В Сименсе такие снобы. Я все прекрасно понимаю. Сименс контроллерами занимается с 70-х годов и коллективчик там, как заметил кто-то на форуме, размером со Сколково. Естественно у них все вылизано. Но нарушать общепринятые соглашения... это как-то чересчур. Непонятна сама логика. Входа/выхода самого контроллера распределены как принято, а периферия нет.
Работал я как-то с STEP7, исплевался весь. Наворочено там много чего, но все до ужаса заорганизованно. Ни какой свободы. Некоторые моменты там вообще из каменного века. Компиляция проекта длится ужасно долго. То что в CoDeSys компилируется 3 секунды в STEP7 компилируется 3 минуты.
Прямую адресацию привел для наглядности. Применение символьных имен переменных картину не меняет. Применение входов в адресном пространстве выходов делает программу понятной только его создателю. В отделе я единственный программист (не идет народ в промышленное программирование). А ехать по первому чиху в Мурманск, Красноярск или в Верхнюю Туру ни возможности ни желания нет.
Все входа/выхода специально сделаны Q, чтобы можно было включать как подмодули мастера и Slave в modbus slave и иметь к их данным прямой доступ из SCADA верхнего уровня.
P.S. Правилом хорошего тона при написании программ на CoDeSys является не использование прямого доступа к данным в slave и master, т.к. они не являются достоверными по умолчанию. Всегда нужен блок-прокладка с проверкой "а не мусор ли в данных". В нем, для перфекционизма, можно и преобразовать Q в I
Замечательно?! А как же с входами/выходами самого контроллера (используется ПЛК 110-24.60.Р.М (02))?
Прямую адресацию в примере применил умышленно для наглядности и сокращения объема сообщения.
Не достоверность прямого доступа просто пугает! Если на 7-й вход блока расширения приходит сигнал от кнопки "Аварийный стоп" и транслируется в область памяти %IX 6.0.0.0.6, то я должен быть абсолютно уверен, что этот бит и есть сигнал от кнопки "Аварийный стоп", а не что-либо другое.
Присвоение прямому адресу имени не снимает вопрос. CoDeSys все равно видит эту переменную как выход, Назначение такой переменной значения "Входной" не меняет ситуацию, все равно CoDeSys позволяет туда писать (проверено).
Не путаем собственные входа/выхода ПЛК, где данные достоверны и обмен по сети, где возможна, к примеру, подмена модуля.
Вот о чём речь идёт.
Пришла уставка Ткотла=500 градусов - блок анализа сразу понимает - липа и переводит ПЛК в аварийный режим.
Ну хорошо. Прочитал в руководстве управлением работой программы от внешней SCADA. Понятна логика желаемого. Тогда предложение: можно ли в параметрах модуля ввести дополнительный параметр, например, SCADA. Если Yes, то входа в области выходов, если No, то в области входов. Тогда распределение будет логичнее. Из последних 16 проектов требование выдавать данные во внешнюю SCADA было только дважды.
60 килоевро 3S software, ещё ххх килоевро программисту для модификации среды разработки CoDeSys под желания клиента и нет ничего невозможного.
А разве это не зависит от Target файла? При конфигурировании ПЛК 110-24.60.Р.М (не 02) этот вопрос не вставал. Распределенная периферия вставала как и положено: входа - в область входов, выхода - в область выходов.
Если или/или - то таргет, а если кнопочкой - то готовьте евры :)
При конфигурировании ПЛК 110-24.60.Р.М - да, так и было и было очень неудобно.
То есть ради кнопочки было уплачено 60 килоевро 3S Software xxx килоевро программисту (10% проектов), в остальных 90% проектов в пояснительных записках жирным шрифтом пишите "здесь читать, а здесь не читать"? И вся борьба, чтобы Скадники не писали маленький блочек перенаправления данных?
ну так мы не платили, поэтому волшебной кнопочки у нас нет :) Пользуемся стандартными возможностями среды
Владислав удачи! Пора домой. Я все понял. Будем как-то жить.
Очень не хватает в [M02] средств для установки идентификатора ПЛК. Дип-переключателя, али джамперов, али ещё чего.. Чтобы можно было использовать одну программу по разному, в зависимости от установки идентификатора.