Просмотр полной версии : 4 датчика DS18B20 +плк150
g.alexsandr
22.11.2022, 21:27
Добрый день. Помогите пожалуйста разобраться. Задача измерить температуру в четырёх точках и отправить значение на плк. Нашёл решение в интернете человек подключал датчики к ардуино которое являлось
модбас слейв устройством. Он передавал данные на комп. в опс сервер , а мне нужно на плк. Добавил конвертер в rs485, подкорректировал скетч ардуино чтобы переключала приём передачу.
Потом создал проект в кодесис , настроил модбас рту подключился и появилась проблема .Данные с трёх датчиков поступают а с четвёртого ноль. Создал проект в MasterOPC Universal Modbus Server подключаю к компьютеру
через переходник rs485 в usb и там вижу данные с четырёх датчиков из чего делаю вывод что ардуино передаёт всё правильно. Проекта для плк практически нет , там только конфигурация .
Просьба проверить нумерацию регистров.
В папке, которая называется "Файл конфигурации OPC сервера", она начинется с нуля: 0, 2, 4, 6
А в проекте ПЛК начинается с единицы: 1, 3, 5, 7. Если моя догадка верна, то в последнем случае ПЛК пытается читать регистры 7-8, а при нумерации с нуля их будет 0...7.
У самого ПЛК там есть в ветке Modbus флаги ошибок "Last address" и "Last error". Если бы читалось всё верно, то "Last error" был бы равен нулю. А тут, скорее всего, будут какие-то другие значения, указывающие на ошбки.
kondor3000
23.11.2022, 09:32
Добрый день. Помогите пожалуйста разобраться. Задача измерить температуру в четырёх точках и отправить значение на плк. Нашёл решение в интернете человек подключал датчики к ардуино которое являлось
модбас слейв устройством.
через переходник rs485 в usb и там вижу данные с четырёх датчиков из чего делаю вывод что ардуино передаёт всё правильно. Проекта для плк практически нет , там только конфигурация .
После изменения адресов на 0, 2, 4, 6 в ПЛК, должны читаться все 4.
А для правильного отображения, последнюю настройку в UMD (универсал модбас девайс) возможно придётся поставить Native.
зы: И ещё, заданные переменные в конфигурации di1, do1 и так глобальные, не надо повторять их в программе PLC_PRG (тут они локальные). Иначе переменные входов, выходов не будут работать в программе и наоборот.64001
g.alexsandr
23.11.2022, 20:38
Нумерация адресов 0,2,4,6 я сделал изначально ,но тогда значения были бредовые поэтому я и изменил . А вот при значении Native и адресах 0,2,4,6 всё заработало. Всем спасибо.
И ещё один вопрос . ПЛК150 использовался для теста а проект будет на СПК107. Вопрос в кодесис 3.5 Native тоже где-то надо ставить?
g.alexsandr
проект будет на СПК107. Вопрос в кодесис 3.5 Native тоже где-то надо ставить
Не, там такого уже нет. Там можно сделать более интересно и круто:
а) Прочитать все регистры с 0 по 7 одним запросом: указать стартовый адрес 0, количество регистров = 8 штук. Такой запрос будет работать быстрее (если его Arduino поддержит, по идее поддержит).
б) В результате этого получится массив WORD'ов, из которых при помощи функций можно склеить Float (Real) в нужном порядке байт.
kondor3000
23.11.2022, 21:54
Нумерация адресов 0,2,4,6 я сделал изначально ,но тогда значения были бредовые поэтому я и изменил . А вот при значении Native и адресах 0,2,4,6 всё заработало. Всем спасибо.
И ещё один вопрос . ПЛК150 использовался для теста а проект будет на СПК107. Вопрос в кодесис 3.5 Native тоже где-то надо ставить?
Надо будет склеивать, пример склейки REAL из двух WORD есть тут, в виде ФБ (функц. блока), блок на ST, достаточно скопировать текст в Codesys 3.5 https://owen.ru/forum/showthread.php?t=35094#10
g.alexsandr
24.11.2022, 19:52
Всё понял спасибо.
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot