Просмотр полной версии : ПЛК200 + весы Ньютон 42
Нужно подключить Ньютон 42 по модбасу к плк200. При запуске программы выдает что шина не запущена с ошибкой ILLEGAL DATA ADDRESS. В документации к весам указано что нужно читать входные регистры, код функции указан 3, но в кодесисе 3 коду функции соответствует чтение регистров хранения. Может ли быть в этом проблема? Если да то можно это как то согласовать? Документацию к весам и программу прикладываю (таблица регистров на стр.56)73615
73618
ILLEGAL DATA ADDRESS вроде как это ответ прибора по протоколу Modbus, иначе у вас бы был timeout при запросах а не "неверный адрес регистра" в простом переводе.
Но ведь при этом пишет: Шина не запущена. Данные значения, возможно, не актуальны.
МихаилГл
16.02.2024, 12:23
Нужно подключить Ньютон 42 по модбасу к плк200. При запуске программы выдает что шина не запущена с ошибкой ILLEGAL DATA ADDRESS. В документации к весам указано что нужно читать входные регистры, код функции указан 3, но в кодесисе 3 коду функции соответствует чтение регистров хранения. Может ли быть в этом проблема? Если да то можно это как то согласовать? Документацию к весам и программу прикладываю (таблица регистров на стр.56)73615
73618
Попробуйте считать не с 0х0001, а 0х0000 либо 0х0002 и 3х функцию попробуйте. Исключение "Неверный адрес" согласно документации прибор выдает, если читается не полное значение флоата
Пробовал на 4х функции с 0х0000 начинать, при этом 0х0001 дает данные, а 0х0000 нет
73619
При функции 3х вроде что то выдает но я не уверен что это то что надо
73620
И хотелось бы знать чем такой сдвиг обусловлен:confused:
МихаилГл
16.02.2024, 12:36
Сдвиг обусловлен производителем. Эти 2 цифры вместе дают флоат.
Если в настройках чтения вместо 2 поставите длину 1, то тоже должна вывалиться ошибка.
Так что все регистры уменьшайте на 1... в адресации. И преобразуйте 2 ворда во флоат.
То есть мне нужно создать переменные типа WORD и привязывать их по отдельности к регистрам, затем переводить в REAL (он же FLOAT)? И как сдвиг может быть обусловлен самим производителем если в документации четко указаны регистры?
МихаилГл
16.02.2024, 12:48
То есть мне нужно создать переменные типа WORD и привязывать их по отдельности к регистрам, затем переводить в REAL (он же FLOAT)? И как сдвиг может быть обусловлен самим производителем если в документации четко указаны регистры?
Согласно документации по протоколу 0001 вполне может быть 0000. Не заморачивайтесь.
TYPE DUT_MODBUS_Real_Word:
UNION
U_RealInModbus: ARRAY [0..1] OF WORD;
U_RealInProgramm: REAL;
END_UNION
END_TYPE
Иногда ворды надо менять местами, зависит от настроек прибора (старшим словом вперед и т.п.)
МихаилГл
16.02.2024, 12:54
А опрос ком порта в программе зачем хотели делать?
А то хотел чего-нибудь интересного сплагиатить, а там пусто...
Может не делать ворды? Он вроде сразу в рил нормально показывает. Посмотрим. Спасибо за помощь.
планировал что то вроде своего протокола сделать) кстати сейчас запустил программу и мне выдает это73622
Получается что в данный момент в регистре нет никаких значений?
МихаилГл
16.02.2024, 13:02
планировал что то вроде своего протокола сделать) кстати сейчас запустил программу и мне выдает это73622
Получается что в данный момент в регистре нет никаких значений?
Это глюк, переоткройте страницу.
73623 а это разве не означает что данные какие то некорректные и он просто максимальное значение берет?
МихаилГл
16.02.2024, 13:08
73623 а это разве не означает что данные какие то некорректные и он просто максимальное значение берет?
Это не флоат, используйте "объединение" что я дал выше, и увидите что это разные числа. Или ворды надо еще потом поменять. Сверяйте данные с прибором. Должно быть идентично.
Проблема в том что прибора рядом нет, удаленно делаю
МихаилГл
16.02.2024, 13:23
Проблема в том что прибора рядом нет, удаленно делаю
Без прибора перед глазами трудно будет понять, те ли это данные. Все равно придется сверяться. Ну главное вы сделали, начали что-то с него получать, там проще будет.
Николай Суриков
16.02.2024, 14:12
https://ftp.owen.ru/CoDeSys3/11_Documentation/03_3.5.11.5/CDSv3.5_Modbus_v3.2.pdf стр 142
73625
73626 что с включеннным свапом что с выключенным одно и то же показывает
KorSerO подключитесь вместо ПЛК удаленно либо Scada системой либо используя Modpoll например. Используя всего одну переменную float из документации. Желательно чтобы было понимание что за переменная.
я подключаюсь удаленно к ПК, а с него уже к ПЛК
МихаилГл
19.02.2024, 06:34
я подключаюсь удаленно к ПК, а с него уже к ПЛК
Вам не про это советовали. Говорили чтобы вы попробовали к прибору сторонней утилитой подключиться, чтобы понять что там за регистры и как перевернуты.
как я могу это сделать с помощью того же модбаспола? знаю как подключиться физически, а вот удаленно нет
МихаилГл
19.02.2024, 06:55
Да это не нам нужно, а вам.
Как вы собираетесь проверить правильность своей программы без понимания того, что с прибора приходят адекватные величины? Вы так месяц будете мучиться.
Никто вас не заставляет никуда идти и подключаться, просто советуют наиболее быстрый способ решения всех проблем. Но если у вас много времени на разработку и изучение документации, тогда работайте так как работаете.
Да, это нужно мне. Вот я и спрашиваю как можно удаленно прочитать модбас, чтобы знающие люди подсказали как это сделать ибо я не знаю.
МихаилГл
19.02.2024, 07:11
Да, это нужно мне. Вот я и спрашиваю как можно удаленно прочитать модбас, чтобы знающие люди подсказали как это сделать ибо я не знаю.
RTU никак, потребуется преобразователь и физическое переподключение на месте.
KorSerO если прибор физически подключен к ПЛК2хх то вероятно никак. Там конечно Linux на борту у ПЛК, но он основан насколько я понял на базе openWRT. Если сможете найти пакет socat для данной системы и установить его на этот ПЛК, то возможно отключив в программе работу с этим COM портом пробросить его как TCP сервер для удаленной работы.
Но мне кажется проще местных попросить прицепить весы на USB-RS485 преобразователь к любому ПК на объекте и дать доступ на этот ПК. (а доступ к какому-то ПК у вас есть, единственно где он территориально на объекте, рядом с ПЛК или не совсем)
Просто напрямую через ПЛК вы потратите времени больше, разбираясь что не так...
Если с ПЛК вы все же можете крутить программу, то в принципе опрашивая какую-то одну переменную и переставляя байты, регистры + изменить адрес на 1 можно найти правильное сочетание, которое требуется.
Весы лабораторные так понимаю, установить на них определенный вес и фотку показаний с его экрана. Ну и комбинируя определить правильность запросов.
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot