PDA

Просмотр полной версии : тестирование проекта ПЛК



high_roll
13.01.2024, 22:43
Доброго времени суток всем!

Такая ситуация: с плк110 никогда плотно не работал, только какие-то общие знания, но нужно разобраться.
Есть исходная программа, загруженная в контроллер для управления КНС на 2 насоса (в прикреплённых файлах как исходик)
Контроллер связан ещё с панелью оператора СП307-р (также будет как исходный)
Схема сигналов приходящих на контроллер будет в последнем файле в пдф
Для меня задача стояла в передаче данных на верхний уровень, для чего я на всякий случай создавал не только битовую передачу (чтобы в одном байте по 8 переменных битовых передавались), а чтобы они ещё дублировались в виде вордовских (целочисленных) переменных
При этом если смотреть исходные проекты ПЛК и панельки, то там (если я правильно считал и понимаю) идёт несоответствие в адресах переменных в которые заложены float значения

Далее я прикреплю 2 файла, которые загружены и в ПЛК и в СП307-р, а также скрин с адресами всех переменных, которые я читал через ОПС-сервер (не думаю, что это важно, но пользовался kepserverex)
В ОПС-клиенте я вообще подбирал многие адреса путём проб и ошибок (там есть несоответствие адресов переменных с проектом, загруженным в плк) - здесь все адреса соответствуют своим адресам в контроллере (их я проверял эмитируя аварии различные), но соответствие флотовских значений проверить не удалось, т.к. на объекте в самой КНС воды не было и насосы не включались из-за сухого хода, соответственно рабочие токи при работе насосов не передавались.

Мне кажется, что флотовские значения всё ломают, но я не понимаю что и как, у меня нет в наличии плк, чтобы я мог тестировать и пробовать различные варианты
Быть может у кто-то есть возможность посмотреть и глянуть в чём причина несоответствия адресов?

Человек, который делал проект, мне прямым текстом сказал, что у него что-то не получалось, и сделал на костылях грубо говоря
Постарался всё максимально коректно расписать, буду благодарен за любую помощь!

high_roll
13.01.2024, 23:43
В tcp-slave c "PE1_M" всё поехало.
флоат - с четного регистра. Выравнивание - неявное, коли сами не вставили
я понял, не знал, что в ПЛК тоже флоты должны начинаться с чётных регистров, про ПРку знаю, но про ПЛК нигде не видел информацию
т.е. в теории если все флоты поровнять к чётным регистрам, то всё будет хорошо?
(выравнивание Вы здесь имеете ввиду именно про нумерацию флотов?)

high_roll
14.01.2024, 23:00
Спасибо, взаимно!

ну и "дружбу" с панелькой и OPC-клиентом по правильным регистрам это тоже восстановит по логике?

high_roll
16.01.2024, 14:49
Доброго времени суток снова!
Глянул на проект, который загружен в ПЛК на другом объекте (основа проекта сделана тем же человеком, что и в начальном проекте) - проект тоже подвергся моим минимальным изменениям (также дублировал битовые переменные в отдельные целочисленные) и тут я пытался выравнивать все флотовские значения по чётным регистрам
72969

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

melky
16.01.2024, 14:51
high_roll что значит не передавались?, совсем или не так как вы ожидали?

kondor3000
16.01.2024, 15:38
Доброго времени суток снова!
Глянул на проект, который загружен в ПЛК на другом объекте (основа проекта сделана тем же человеком, что и в начальном проекте) - проект тоже подвергся моим минимальным изменениям (также дублировал битовые переменные в отдельные целочисленные) и тут я пытался выравнивать все флотовские значения по чётным регистрам
Проблема была абсолютно идентичная, и с учётом "правильной" нумерации регистров всё равно флотовские значения не передавались
Быть может есть какие-то ещё мысли\варианты решения?

В ПЛК теперь адреса чётные, всё правильно, первый адрес- 4, а в панели первый адрес Float - 24, адреса пробовали поставить в соответствие?

Если Float в панели не правильно будут отображаться, в настройках панели, в TCP , поставьте галку Изменить порядок регистров.
В панели мастере все адреса должны быть правильные, иначе панель будет тормозить.

high_roll
16.01.2024, 16:26
melky в ОПС-клиенте я не видел прям нулей на флотовских адресах, там число приходило в экспоненциальном виде (я так понимаю это именно ввиду специфики флота)
может там и был ноль, но только в экспоненциальной форме (если такое может быть)
я пытался и порядок бит менять, но это не влияло на общую картину это не повлияло (там были 3 датчика: 2 по давлению и один гидростатический, и вот все они передавали одно и ттоже число в экспоненциальной форме, при смене порядка бит число было другим но одинаковым соответственно)

МихаилГл
16.01.2024, 16:30
Протестите переменные модбас пулом каким нибудь... Где то ошиблись.

high_roll
16.01.2024, 16:30
В ПЛК теперь адреса чётные, всё правильно, первый адрес- 4, а в панели первый адрес Float - 24, адреса пробовали поставить в соответствие?

Если Float в панели не правильно будут отображаться, в настройках панели, в TCP , поставьте галку Изменить порядок регистров.
В панели мастере все адреса должны быть правильные, иначе панель будет тормозить.

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

melky
16.01.2024, 16:37
1. перестановка регистров
2. возможно указание адреса + 1

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

kondor3000
16.01.2024, 18:20
скриншот конкретно с этого сообщения я приложил уже с другого проекта, в нём соответствие номеров в панели и в проекте ПЛК есть
но данные тоже приходили в экспоненциальном виде на флотовских адресах и не менялись по значениям

Это и есть не правильное отображение, переставлены регистры ( чаще всего) или байты. Выше уже написал, что сделать.