Я ненавижу невежественность и невнимательность.
Мои FB и готовый пример лежит в первой странице моей темы, на которую ссылался kondor3000, причём уже даже советовал открыть первую страницу моей темы, цитирую
Вид для печати
Так всем брейк, не надо нервничать)))
Распишу по порядку
1) Вы пропустили ( вероятно), что в передаче через STRING порядок не меняется.
2) Техподдержка, вероятно ответила про обычную конфигурацию, где меняется порядок регистров и байт по Модбас.
Вот и вся проблема, выложенные проекты проверены, можете повторить и проверить сами. Мой проет проверяли уже раз сто, никто проблем не нашёл)))
Благодарю.
Меня БЕСЯТ невежды. У меня в той теме лежит готовый пример, рабочий.
Нет, надо всем повыносить мозги, (мне ещё и в личку понаписать), наговорить на две страницы темы - и про пример забыть.
Прошу помощи. все устройства пришли
1. на столе собрал связку плк110-30 (мастер) + 4 МВ110-8А (слайв).
2. МВ110-8А настроены через конфигуратор (адреса заданы, типы датчиков определены, параметры modbus заданы)
3. создаю тестовый проект ПЛК110-30
https://disk.yandex.ru/i/3WCEZavcfY-UEA
4. тестовая программа получает доступ к элементам стринг, отображает последний адрес устройства modbus и ошибку
5. нет никакой активности по modbus
подскажите пожалуйста, что упустил?
Вот ваша программа, где у вас 4 модуля? Что у вас за байты в основной программе и что вы сделали в ФБ Opros_MVA ? а=в это что такое? Вложение 69290
А вот что должно бытьКод:w_1:=ADR(Str14); (*Начальный адрес в массиве WORD *)
w_2:=ADR(Str58);
это просто тест, и переменные просто для ознакомления с codesys ни какого смысла в них нет
меня интересует почему нет обмена по модбус, должно быть периодическое считывание со slave устройства и
в переменой LastAdress должен быть адрес последнего опрощенного устройства и ошибка если устройства нет.
у меня в них значение всегда 0.
сейчас создал проект с нуля по чтению одного регистра по инструкции
https://cs-cs.net/plk-oven-110-programmiruem-na-codesys
всё работает, обмен начался..
Благодарю всех.
Так возьмите пример, и ничего не переделывая проверьте, поменяйте конфигурацию под свой ПЛК и поставьте адрес своего МВ8А
Вот повыкидывал, всё что не работало, проверьте адрес МВ8А ( в программе 31) подключите 1 блок к RS-485-2 и проверьте, все переменные будут в глобальных
Зачем скорость поставили 9600, у вас ведь 4 блока, и поллинг 300 ms ? Вот зачем это ?
и так информация для начинающих (как и я)
в МВ110-08А порядок следования байт при считывании регистров сначала младший, потом старший байт;
для значения температуры в формате Float32 в регистре 4 передаётся порядок и старшая часть мантиссы (сначала младший байт, потом старший)
в регистре 5 передаётся младшая часть мантиссы (сначала младший байт, потом старший)
в стандартном представлении чисел Float32 в памяти мк сначала идёт младшая часть мантиссы, потом порядок и старшая часть,
поэтому при получении данных с МВ110-8а необходимо слова переставить местами.
считываем данные для 4 датчиков через строковую переменную,
копируем в массив temp данные для одного датчика, через указатель типа word,
температуру в формате Float32 получаем путём копирования, через указатель типа word:
ptr:=ADR(var_real);
ptr^[0]:=temp[5];
ptr^[1]:=temp[4];
параметр Byte Sequence (trace_mode и native) при конфигурировании ModBus влияет только на порядок байт в слове при считывании Real input module (сам проверил и находил в каком-то мануле).
Спасибо большое.