PDA

Просмотр полной версии : МК110-8Д.4Р Modbus RTU s7-1200



Vadik2881
31.05.2023, 11:05
Привет всем, может кто поможет. Соединяю S7 1200 и модуль ввода вывода МК110-8Д.4Р через Modbus RTU
В принципе опрос входов и управление выходами идёт но никак не могу считать и записать более одного слова.
Т.е. если параметр Data_len ставишь больше 1 то ошибка сети 8383(Error in the data adress or address outside the valid range of DATA_PTR)
Уже всё перепробовал. Сетка тестовая, 1 метр, с одного конца на S7 терминатор, 9600, нет контроля чётности, 8 бит.
Так то оно всё работает, но не получается к примеру опросить сразу два регистра 50 и 51 что сразу считать состояние входов/выходов и придётся делать на каждый регистр свой блок MB_master.
Посмотрел много материалов, как делают, вроде всё так же. Может чего на стороне овена какая проблема?
Да данный момент единица по входу 1 и единица на выход 1

kondor3000
31.05.2023, 11:12
Привет всем, может кто поможет. Соединяю S7 1200 и модуль ввода вывода МК110-8Д.4Р через Modbus RTU
В принципе опрос входов и управление выходами идёт но никак не могу считать и записать более одного слова.
Т.е. если параметр Data_len ставишь больше 1 то ошибка сети 8383(Error in the data adress or address outside the valid range of DATA_PTR)
Уже всё перепробовал. Сетка тестовая, 1 метр, с одного конца на S7 терминатор, 9600, нет контроля чётности, 8 бит.
Так то оно всё работает, но не получается к примеру опросить сразу два регистра 50 и 51 что сразу считать состояние входов/выходов и придётся делать на каждый регистр свой блок MB_master.
Посмотрел много материалов, как делают, вроде всё так же. Может чего на стороне овена какая проблема?
Да данный момент единица по входу 1 и единица на выход 1

А что вы одновременно опросить пытаетесь? В один регистр записывается маска выходов, из другого читается маска входов

Vadik2881
31.05.2023, 11:22
А что вы одновременно опросить пытаетесь? В один регистр записывается маска выходов, из другого читается маска входов
не, согласно описанию на MK: регистр 50 битовая маска значений выходов, регистр 51 битовая маска значений входов. А для записи значения к примеру на выход 1 регистр 0
Как понимаю, 50 и 51 должны легко считываться

Vadik2881
31.05.2023, 11:35
Нормально)) в книжном варианте пишется в регистре 0 значение на выход 1, а web Коэффициент заполнения ШИМ на выходе 1
Но это всё равно не решает проблемы, запись отключал. Я же могу одновременно считать все регистры...
Ну и потом, можно же считывать и писать одновременно один и тот же регистр...

Vadik2881
02.06.2023, 08:20
DATA_LEN стоит в единице, как Вы планируете с этим значением считать несколько слов?
68087

Ну это я уже поставил 1 чтоб работало, как только ставишь 2 и более ошибка...
Не ужели никто не делал? Это же сейчас будущее наше)

krollcbas
02.06.2023, 10:47
Делал.

Была задача соединить S7-1200 по Modbus RTU с Rockwell
Промучавшись с неделю, соеденил с панелью ИП320 (была в наличии) и все вышло.
Затем масштабировал систему на больший объем данных

Описал в статье (возможно поможет):
https://fast-project.ru/articles/s7-1200-svyaz-s-ip320.html

68129

Vadik2881
02.06.2023, 15:02
ребята, в принципе разобрался. Получается нельзя считывать одновременно регистр 51 битовая маска выходов и следующий регистр 52 битовая маска входов.
А дальше остальные регистры без проблем считывает массивом. Так то считывать битовую маску выходов и не нужно, заморочился, думая проблемы с сетью какие-то...

Vadik2881
02.06.2023, 15:18
А так всё работает:D Планирую сеть из 8 16-канальных модулей и аж звездой метров 700, посмотрим как работать будет...

Сергей0308
02.06.2023, 20:49
А так всё работает:D Планирую сеть из 8 16-канальных модулей и аж звездой метров 700, посмотрим как работать будет...

Не часто такое встретишь, чтобы изначально стремились сделать через заднее место, в смысле, принципиально неправильно!
Надеюсь Вы будете принципиальны до конца, в смысле, когда восторжествует здравый смысл, всё переделаете за свой счёт?

Vadik2881
06.06.2023, 09:30
Не всё так однозначно в этой жизни! Надо постоянно пробовать и экспортировать, это учит!
По факту, у многих работает. Весь вопрос в загруженности данными. Тут крайне минимальный обмен. Надо считывать по одному слову из каждого узла и хоть на самой минимальной скорости и максимальном периоде. Просто так проще сделать, ввиду уже присутствующих кабельных линий. Ну не пойдёт, значит будет делать новый монтаж... Отпишусь тут обязательно.

Vadik2881
04.08.2023, 13:25
Короче, сделал всё работает! Получилась звезда от мастера S7-1200 на 8 модулей. Длина лучей от 30 до 70 метров. Один терминатор на S7-1200. Всё стабильно работает на 9600. На других скоростях не тестировал, но и не нужно.
Вот теперь вопрос как WORD из модуля входов разложить на Byte, что младший были входы 1-8 старший 9-16. По в сименсе не понял как это сделать...

melky
04.08.2023, 13:31
математические, логические операции есть и сдвиг ?

для младшего байта AND 0x00FF, для старшего AND 0xFF00 и сдвиг на 8 бит.
Вариаций в языках МЭК предостаточно это сделать.

kondor3000
04.08.2023, 17:32
Короче, сделал всё работает! Получилась звезда от мастера S7-1200 на 8 модулей. Длина лучей от 30 до 70 метров. Один терминал на S7-1200. Всё стабильно работает на 9600. На других скоростях и не нужно.
Вот теперь вопрос как WORD из модуля входов разложить на Byte, что младший были входы 1-8 старший 9-16. По в сименсе не понял как это сделать...

Есть несколько вариантов, разложение на байты WORD и регистры (байты) DWORD и обратная сборка 69348

melky
04.08.2023, 18:45
kondor3000 мабудь предположу, что вы зря это показываете, сомневаюсь, что там куплен CFC (или как правильно этот вид называется в Tiaportal). :)

kondor3000
04.08.2023, 22:11
мабудь предположу, что вы зря это показываете, сомневаюсь, что там куплен CFC (или как правильно этот вид называется в Tiaportal). :)

Тоже самое можно сделать на LD.
Мне хватило 2 минут и 2 шагов. 69349

Vadik2881
05.08.2023, 08:08
Спасибо, ребята интересно. Но всё оказалось проще. В тиа портале есть слово в блоке данных, к примеру DB1.DBW0. Операцией move из него вытаскиваю нужный байт т.е. DB1.DBB0 и DB1.DBB1 соответственно.
Всё работает, но только выдаётся предупреждение при компиляции "The adress is not occupied by a tag". Принимаем к сведению и работаем дальше).

capzap
05.08.2023, 09:10
Спасибо, ребята интересно. Но всё оказалось проще. В тиа портале есть слово в блоке данных, к примеру DB1.DBW0. Операцией move из него вытаскиваю нужный байт т.е. DB1.DBB0 и DB1.DBB1 соответственно.
Всё работает, но только выдаётся предупреждение при компиляции "The adress is not occupied by a tag". Принимаем к сведению и работаем дальше).

тут хоть и форум ОВЕН, со своими приборами и средой разработки и не обязан ни кто знать как там у сименса, тем не менее прочтите в справке TIA про Overlaying tags with AT, может пригодится для проф.роста