PDA

Просмотр полной версии : ПЛК 110 [м02] разница в отладке и работе



dvmitry
08.12.2020, 21:12
Исходные данные:
1.Программа, работает в эмуляторе.
2. Некорректно работает при подключенном ПЛК.
3. В пошаговом режиме при подключенном ПЛК - работает.

Если коротко, программа считывает значения кнопок визуализации и включает выходы ПЛК в нескольких режимах.
Ошибки заключаются в некорректном выборе режима в рабочем режиме ПЛК.
В отладке все работает, как и в эмуляторе.

Вопрос: Что это может быть.?
Поскольку новичок, мог упустить простую вешь.

При необходимости проект выложу завтра, с ПК.

krollcbas
08.12.2020, 22:08
Не понятно. Несколько раз перечитал.

Доказывает только одно: постановка задачи - 90% успеха.

Если бы Вы приложили скрины с тем что получается, что вообще должен делать ПЛК?

dvmitry
09.12.2020, 09:37
Да, согласен. Просто с телефона не очень удобно.
Приложил проект.
Сама задача довольно сложная. Добавил ТЗ файлом.
Поскольку не было железа, проект отлаживали в эмуляторе.
Есть, конечно, недоработки. Но, в целом, все работает.
Теперь приехал контроллер. И программа на нем не работает.
Причем как-то интересно. Если начать с отладки, потом все в порядке.

По шагам:
1. Запускаем. Режим Stop-Stop.
52394

2. Выбираем режим. Например "Наладка".
Система быстро (меньше секунды) перебирает режимы и встает обратно в Stop-stop.
То есть визуально ничего не меняется.

Проблемное место локализовать не получается, так как при отладке все работает. Режим Settings.
52395

Можно управлять выходами, менять режимы и пр.

Так как в системе предполагается наличие модуля ввода и других устройств, запуск с одним контроллером требует предварительной настройки.
Инструкцию (Работа с ПЛК без внешних модулей) прилагаю.

Готов оплатить консультацию. (почта для связи dvmitry@mail.ru).
Не готов оплатить весь проект :) Все равно добьем.

krollcbas
09.12.2020, 09:55
1. Техническое задание - образцовое. Все понятно. Встречаю намного худшие.
2. Тут и бесплатно помогут, но должно быть очень понятно
3. Вложения по п1 и п2 не опубликовались. Попробуйте исправить.

И самое интересное. Часто встречаю чужие программные коды с большим количеством вложенных программ, причем Менеджер задач на программы не задействован.
Как это вообще работает?
52393

dvmitry
09.12.2020, 10:00
Спасибо за быструю реакцию!
Вложения вроде поправил.
По поводу "менеджера задач" - тоже туда смотрел. Но, навскидку, не увидел необходимости.
Все функции и функциональные блоки управляются из основной программы.
Или я не прав?

krollcbas
09.12.2020, 10:10
Все зависит от тех целей, которые Вы преследуете.
Если это ответственное АСУ ТП применение, где важно относиться с пониманием, где, когда и с какой периодичностью опрашивается каждая секция кода - такой подход "наплевательский".
Вы отдаете все на откуп одной задаче и не хотите помочь Вашему другу (ПЛК) разобраться с этим "адовым компотом".

Так никогда не делаю. Более скажу что основа работы со сложностью - иерархия.
Меня еще мать учила - "потри полотенцем там, где чувствуешь мокро", так и тут...
Разложите всю эту "кузинатру" по полочкам и начните решать с самых проблемных мест

dvmitry
09.12.2020, 10:15
Да, как раз на Вашем? сайте прочитал статью про менеджер задач. Сейчас помозгуем.

Sergey666
09.12.2020, 13:24
1. Добавьте в конфигурацию модуль статистики и посмотрите что с загрузкой ЦП ПЛК;
2. MinCycleLength поставьте для начала 10;
3. Конфигурация конечно...все по традиции "опытных" извращенческое именование каналов в конфигураторе... но, это у Овенцев болезнь хроническая;
4. Тасками голову себе не забивайте, это инструмент очень специфичный, у вас принцип организации программы более-менее правильный.

Sergey666
09.12.2020, 15:22
Там MinCycleLength=1 по умолчанию в конфигурации.
Я уже сталкивался с подобным поведением этой [M02] версии, проект не маленький и когда ЦПУ не хватает мощи уложится в заданное время он, по ходу, бросает прогон где-то и начинает сначала, поэтому у ТС при пошаговом прогоне вроде норм.
Вообще офигенное оборудование.

Sergey666
09.12.2020, 16:00
так то программа работает между минимальным временем цикла и максимальным, её не зачем укладываться ниже заданной 1мс. Другое дело коммуникационные связи по протоколам могут как то от этого зависеть или влиять на работу проги.

Вот под каждым словом кровью можно подписаться.
А вот почему в Овенских ПЛК цикл прогона стремится со страшной силой вложиться в это мин. время я не могу понять. Возможно повлияли как-то не так, с инверсией дискуссии Филоненко и Валенка:rolleyes:

(нет возможности посмотреть проект) - ну и не очень-то много потерял.

З.Ы :cool:
как тут многократное выборочное цитирование вставлять хоть убей не пойму, а новая версия форума эт вааще полный... Андроид

petera
09.12.2020, 16:34
З.Ы :cool:
как тут многократное выборочное цитирование вставлять хоть убей не пойму, а новая версия форума эт вааще полный... Андроид

Под сообщениями есть "кнопочка"
52408

Нажимаешь эту кнопочку под цитируемыми и дальше как обычно "Ответить с цитированием"

Sergey666
09.12.2020, 16:57
Нажимаешь эту кнопочку под цитируемыми и дальше как обычно "Ответить с цитированием"

;):D А потом галочку с кнопошки снимать надо?
В общем хочу отметить неизменяемо-прогрессирующий корпоративный стиль во всем.

Sergey666
09.12.2020, 17:38
//
по поводу стремления уложится в минц - тема отдельная
Цикл всегда завершается. Или собака. Без вариантов.

А теперь добавляем немного вытесняющей многозадачности, хорошенько перемешиваем и получите [M02].

dvmitry
09.12.2020, 18:21
Там MinCycleLength=1 по умолчанию в конфигурации.
Я уже сталкивался с подобным поведением этой [M02] версии, проект не маленький и когда ЦПУ не хватает мощи уложится в заданное время он, по ходу, бросает прогон где-то и начинает сначала, поэтому у ТС при пошаговом прогоне вроде норм.
Вообще офигенное оборудование.

Пробовали 10 - без разницы.
И 50 пробовали и максимальное время увеличивали.
Поведение аналогичное.
Только программа грузится медленнее в соответствующее количество раз. Совсем непонятно.

Sergey666
10.12.2020, 08:45
Грубые косяки:
1.ФБ FB_WORK_OFF запись в глобальную переменную regime в теле ФБ;(Это только по одной "типо ключевой" переменной)
2.Множественная запись выходов.

Обратить внимание-компилятор выдает множественное перекрытие областей памяти.

Проект трудночитаем из-за:
1. Отсутствуют отступы;
2. Увлечение автора Типами и Енамами. Если придумать и создать достаточное количество пользовательских TYPE, то можно превратить достаточно простую программу в мутную хрень.

Таки да размерность массивов с [1.. , что мешает с [0.. начинать ?

dvmitry
10.12.2020, 09:09
Спасибо Sergey666 за конкретные замечания. Покопаем.
Действительно, проект длинный, коллективный. Поэтому есть проблемы даже с "красотой" кода.

Прошу пояснить:
1. Насколько я понял, в функциональных блоках глобальные переменные использовать нельзя?
2. Можно ли поподробнее пояснить "2.Множественная запись выходов."? Где встретили и в чем проблема?

Sergey666
10.12.2020, 09:47
Спасибо Sergey666 за конкретные замечания. Покопаем.
Действительно, проект длинный, коллективный. Поэтому есть проблемы даже с "красотой" кода.

Прошу пояснить:
1. Насколько я понял, в функциональных блоках глобальные переменные использовать нельзя?
2. Можно ли поподробнее пояснить "2.Множественная запись выходов."? Где встретили и в чем проблема?

1. Функциональный блок выполняется в виде экземпляра и представляет собой некую "капсулу" с собственной выделенной памятью экземпляра и взаимодействовать этот экземпляр с вызывающей программой должен через интерфейс входов-выходов. Некоторые пакеты ПО позволяют вольности и слабости, приводящие к извращениям. Читайте справку к Кодесис, что такое ФБ и что такое Функция (Не так, как в Симатике) и что такое программа.
2. Заходим в Проект\Опции\Генератор кода и ставим галочки на пунктах "Проверять автоматически" и запускаем компиляцию, смотрим результаты, анализируем, разбираемся. А если кратко то у вас в разных частях программы идет запись в физический выход ПЛК, понятно что обновление произойдет в конце прогона, но это грубый косяк, напр. на некоторых ПЛК Роквелл это привело-бы срабатываниям непосредственно при обращении к выходу.

dvmitry
13.05.2021, 13:56
Возвращаясь к теме этого проекта.
Переделали достаточно основательно.
В принципе, все работает.
Но, возникла очередная проблема.
В системе к контроллеру (110[M02]) по 485-му подключаются три устройства: Модуль аналогового ввода ОВЕН МВ110, Преобразователь частоты ОВЕН ПЧВ102-2К2 и Owen Cloud ПМ210-24.
По отдельности они работают нормально. Но, если два или более устройств подключить на один порт, то начинаются ошибки.
В основном, проблемы у ПЧВ. При обращении к другому устройству (например, при считывании данных с модуля ввода) он выключается и включается. при этом на ПЛК ошибка 81 - нет подключения. И так по кругу.
Пока придумали несколько вариантов исправления:
1. Поставить шунтирующие резисторы (120 Ом).
2. Увеличить промежуток между адресами устройств. Сейчас адреса 16 и 25 соответственно.
3. Кроме того, теоретически нужно переводить устройства в третье состояние. Но соответствующих настроек нигде не нашли.
Пока проверить не можем. Надо ехать на объект на той неделе.

Собственно вопрос к спецам: На что еще можно обратить внимание?

YuriBel
13.05.2021, 14:22
Если всё это подключено к одному порту RS485, то это полная хрень, потому что ПМ для ПЛК будет мастером, а ПЛК для модуля и частотника тоже должен быть мастером. Если подключено к разным портам, то нужно внимательно смотреть настройки обмена, что-то явно некорректно настроено. сделайте новый пустой проект и настройте в нем обмен, так чтобы всё работало, потом уже накручивайте на него всю логику. Если будут неразрешимые затыки, попробуйте разнести модуль и частотник по разным портам, тогда для связи с облаком нужно будет докупить преобразователь 232-485 и подключать ПМ к 232. В общем, варианты есть.

A.Simonov
13.05.2021, 15:04
В системе к контроллеру (110[M02]) по 485-му подключаются три устройства: Модуль аналогового ввода ОВЕН МВ110, Преобразователь частоты ОВЕН ПЧВ102-2К2 и Owen Cloud ПМ210-24.


Добрый день, очень похоже, что у Вас 2 мастера в сети RS485, и они друг другу мешают.

In_Da_Cher_A
14.05.2021, 12:25
В системе к контроллеру (110[M02]) по 485-му подключаются три устройства: Модуль аналогового ввода ОВЕН МВ110, Преобразователь частоты ОВЕН ПЧВ102-2К2 и Owen Cloud ПМ210-24.
По отдельности они работают нормально. Но, если два или более устройств подключить на один порт, то начинаются ошибки.
В основном, проблемы у ПЧВ. При обращении к другому устройству (например, при считывании данных с модуля ввода) он выключается и включается. при этом на ПЛК ошибка 81 - нет подключения. И так по кругу.
корректно было бы написать так
В плк 110 на порту RS485 номер 1 (к примеру) создан Модбас Мастер с такими-то настройками.
К нему подключены следующие "слейвы"
модуль такой-то с такими-то настройками
и т.д.
и как только начнёте писать, то тут же сразу вылезет какая-то фигня:)
поэтому картинки сделайте что у вас в кодесис творится и что у вас по остальным устройствам в сети, особенно ПЧВ и шлюз ПМ

wladimirovich
18.05.2021, 01:01
Настройки RS-485-1
55142

МВ110
55143

ПЧВ
55144

Все подключены на один RS-485-1 и заранее настроены на разные адреса
По отдельности работают все, а если вместе то нормально работает только МВ110, ПЧВ начинает самопроизвольно включаться и включаться

In_Da_Cher_A
18.05.2021, 02:40
ну начнём с того, что есть.
вы говорили, что у вас в сети RS-485 три устройства.

В системе к контроллеру (110[M02]) по 485-му подключаются три устройства:
На ваших скриншотах я вижу, что на 110 поднят на RS485-1 Модбас Мастер с настройками RTU/9600....
на котором сидит 2 слейва
1. Universal Modbus Device с адресом 16
2. Universal Modbus Device с адресом 25
55145

Где у вас третье устройство и какое оно - для Мастера в ПЛК на RS485-1 - неизвестно.

так сколько устройств у вас в сети Модбас?

wladimirovich
18.05.2021, 13:32
Третье устройство на RS-485-2, с ним все нормально
55153

In_Da_Cher_A
18.05.2021, 14:42
Третье устройство на RS-485-2, с ним все нормально
никак не стыкуется с

Но, если два или более устройств подключить на один порт, то начинаются ошибки.
так что вы делаете с портом №1? какое третье устройство вы туда сажаете?

и название слейва 1 с адресом 16 почему-то называется (ПМ(датчики)) - хотя ПМ у вас только один ПМ-210. Что значит ПМ на слейве 1?

и что за слейв с 16 регистрами Float у вас настроен на втором порту? что за Мастер опрашивает 16 Float?

и если с МВ трудно ошибиться, то скриншот настроек ПЧВ не помешат. Зачем вы смешали в одну кучу медленный аналоговый модуль и ПЧВ

wladimirovich
18.05.2021, 15:24
ПЧВ настроен точно так же как RS-485-1.

суть вот в чем:
когда к RS-485-1 подключен только один slave ПЧВ, то он работает нормально,
если к этому же RS-485-1 рядом с slave ПЧВ(адрес 25) подключить slave МВ110(аналоговый датчик, адрес 16), то ПЧВ начинает примерно раз в секунду самопроизвольно выключаться\включаться.
при этом если на один RS-485-1 подключить slave МВ110(аналоговый датчик, адрес 1) и slave СП315(сенсорная панель, адрес 2) то они работают нормально.

In_Da_Cher_A
18.05.2021, 16:24
ПМ210 уже как-то отпал в сторону. Ну ок, х с ним.
Потому как я вообще перестал что-то понимать.

если к этому же RS-485-1 рядом с slave ПЧВ(адрес 25) подключить slave МВ110(аналоговый датчик, адрес 16), то ПЧВ начинает примерно раз в секунду самопроизвольно выключаться\включаться.если ПЧВ вдруг включается/выключается КОМАНДОЙ мастера, а ничем другим он не может быть управляем - значит вы накосячили где-то с адресацией регистров либо вашим кодом - ибо считывание Мастером с МВ110 данных ну никак не может быть командой для ПЧВ включиться. Вот просто тупо логически, не залезая никуда ни в какие дебри протокола.
Я не вижу никаких проблем с ПЧВ, кроме неправильных настроек обмена данными

и читая про ваши действия

Пока придумали несколько вариантов исправления:
1. Поставить шунтирующие резисторы (120 Ом).
2. Увеличить промежуток между адресами устройств. Сейчас адреса 16 и 25 соответственно.
я вообще не вижу никакой логической связи между вашими проблемами и вашими действиями.
И уж тем более задать адрес устройства со сдвижкой на 9 единиц ( - почему 9????? какой логикой вы руководствовались выбирая 9?) и думать, что это как-то поможет побороть залипание частотника - это просто за гранью

3. Кроме того, теоретически нужно переводить устройства в третье состояние. Но соответствующих настроек нигде не нашли.
какое третье состояние может быть в Модбасе? что за новые модные веяния в простом консервативном протоколе?

dvmitry
18.05.2021, 17:28
ПМ210 уже как-то отпал в сторону.
Да. Опечатка прошла. Сначала был 210, потом заказчик поменял на 110.


Я не вижу никаких проблем с ПЧВ, кроме неправильных настроек обмена данными
По приведенным скриншотам все нормально? Настройки ПЧВ скопируем, когда до него доедем.


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


какое третье состояние может быть в Модбасе?
Это был один из советов.

In_Da_Cher_A
19.05.2021, 11:55
я тогда не пойму - чего мы вообще обсуждаем?
изначально речь шла о трёх приборах - ПМ, ПЧВ и МВ
потом ПМ внезапно отвалился и вообще никак в обсуждении не участвует.
судя по скрину - Слейв на РС485-2 со скоростью 115к поднят как раз для него, так как ПМ идёт по-дефолту Мастером и во всех своих кино Овен ставил такую скорость на настройку обмена с ПМ - тоже вопрос - нахуа? но это уже другая история

то есть ПМ полностью выпал из участника сетевого обмена и возможного источника проблем. Его превращение в ПМ110 никак не влияет, так как вероятно (хотя уже можно ждать любых приколов) он всё-таки посажен правильно на отдельную сеть РС485-2

приколы с появлением панели слейвом с адресом 2 мне вообще непонятно, так какая у вас структура сети????77 вы какую-то кучу намешали, в которой каждый участник требует своих нюансов, выдержать которые муторно и опытному специалисту, поэтому траблы с ПЧВ совсем не удивительны

идём дальше.
Итак, сеть РС485-1 с МВ и ПЧВ. Третьего там уже нет, и судя по скрину - не будет.
по вашим утверждениям (но это не точно, да?) каждый из участников в отдельности работает нормально.
При этом жалоб на то, что МВ работает "ненормально" в полном составе - нет. Значит проблема только в ПЧВ
и Отдельно работает нормально - это как? Вы снимаете питание с модуля и ПЧВ? или вы удаляете в структуре подсети Мастера этого участника?
что значит Включается/выключается? - он физически выполняет команду Вкл/Выкл или что он делает?
вопросы вопросики....
если вы физически удаляете из структуры, то это говорит только о том, что вы неправильно настроили обмен в ПЛК для двух участников
так как если бы вы выключали физически из сети и при этом проблема бы исчезала, то неправильно настроен обмен в ПЧВ, так как Мастеру похрен - он запросил Адрес/Регистр, получил в ответ тишину, написал нули, показал ошибку по адресу и так до следующего цикла


По приведенным скриншотам все нормально? Настройки ПЧВ скопируем, когда до него доедем.так что мы тогда здесь обсуждаем?
в приведённых скринах нет ничего, что вы могли бы сломать, это банальные настройки для Мастера, сами настройки обмена по регистрам вы не дали.

Еще ничего не делали. Собираем информацию и советы, чтобы на месте решать проблему.Но настройки адреса слейва на 16 и 25 вы сделали? так вы это сделали сейчас, а на месте у вас другое? чего тогда обсуждать....это уже какое-то шаманство типа лечения по фотографии

Вы сделайте элементарные вещи для начала, чтобы они заработали, а потом уже наворачивайте функционал и "низкоуровневое" программирование


Это был один из советов.тройной фейспалм.жпг

dvmitry
19.05.2021, 16:02
вы неправильно настроили обмен в ПЛК для двух участников.
сделайте элементарные вещи для начала, чтобы они заработали, а потом уже наворачивайте функционал и "низкоуровневое" программирование.


В основном и хотелось бы узнать, как правильно настраивать обмен в ПЛК для нескольких участников на одном порту RS-485.
Особенно при участии ПЧВ. Очень мало информации по ним. Может подскажете ссылки?
Если по конфигурации контроллера особых огрехов нет (Или есть? Непонятно), то подождем дополнительно информацию "с полей".
Опять же желательно знать конкретно, что нужно для анализа. Понятно, что настройки ПЧВ. Может еще что?

In_Da_Cher_A
21.05.2021, 10:41
если есть возможность - возьмите в ОВЕН оборудование на тестирование, они дают под гарантийное письмо, чтобы помучать железку в офисе, а не страдать в цеху

с зоопарком на одном порту проблем может быть две
1. из-за невнимательности косячишь с адресацией регистров по слейвам и частный случай этого - в какие-то моменты требуется учитывать чётность регистров для "сложных" переменных и делать вручную сдвижку, чтобы переменная, занимающая два регистра попадала началом на "чётный" регистр. Поэтому работая с той же панелью, на слейве лучше сначала сделать поставить битовые, а потом "аналоговые"
2. разные по своей сути устройства работают в принципе с разной скоростью обмена из-за особенностей внутренней организации - тот же аналоговый МВ отдаёт данные через буфер и 8 каналов обновляться быстрее полсекунды не будут, поэтому и задрачивать его запросами на 115к смысла нет - модуль отдаст в ответ "прошлое" значение, лежащее в буфере обмена. Это если на пальцах объяснять, погружаться в физику лень

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

и делайте степ бай степ, если сложное устройство. по шагу добавляете регистр, грузите, проверяете что всё работает, что получаете всё что нужно и в нужном формате, преобразовываете если нужно и идёте дальше, дальше следующий регистр. заодно и траблы какие есть сразу отловите - до этого всё работала, а теперь перестало, значит проблема в этом месте
да немного муторно, но надёжно, учитывая что вы не кодеры 80 лвл

ну и конечно всё это работает при условии, что у вас правильный код. А то может у вас в коде два тригера с одним именем идут или закольцевали логику и вы свой ПЧВ задрачиваете командами раз в секунду

dvmitry
15.07.2021, 13:45
Проблему в итоге решила техподдержка ОВЕН через удаленное управление. Спасибо еще раз Дмитрию!
Оказалось, что при использовании для модуля ввода "String input module" могут быть подобные проблемы. После замены на "Real input" всё заработало.
Также рекомендовано разделить входные и выходные параметры ПЧВ по разным "Universal modbus device". Не знаю, насколько это обязательно, но вруг кому пригодится.

Всем спасибо за участие. В частности, воспользовались советом взять оборудование на тестирование. Оказалось, что ОВЕН не дает, но некоторые дилеры так работают.

dvmitry
16.07.2021, 12:36
В выложенном проекте нету stringов.
Да. Виноват. Не обновил скриншот после изменения проекта.
В предпоследней версии было так:
56062
Чего вам там навешали на уши то в техподдержке ? Поделитеся[/QUOTE]
После общения с техподдержкой только хорошие впечатления.
Сначала девушка на телефоне насоветовала простые методы, типа перезагрузки и пр. Но быстро сориентировалась, к кому переправить.
Дальше все делал спец удаленно. Поэтому "навешали на уши" нельзя сказать. Скорее, наоборот, хотелось бы побольше информации.
Конкретно про string он говорил, что были проблемы с ним в нескольких проектах.

In_Da_Cher_A
16.07.2021, 12:39
Оказалось, что ОВЕН не дает
*посмотрел на кучу железа, которое надо вернуть - что я делаю не так????

Оказалось, что при использовании для модуля ввода "String input module" могут быть подобные проблемы.
а зачем Стринг инпут и кто вам сказал это делать?

Всем спасибо за участиеЭтой теме надо номинироваться на Оскар за лучшее переобувание в воздухе. Не теряйте такого шанса

In_Da_Cher_A
16.07.2021, 13:11
Стринг затем чтоб не заниматься мелкозапросным онанизмом
да у него один модуль всего, там даже Дзюба не вспотеет
и автор базу ещё не может никак сделать без граблей, стринг ему вообще не нужен