Реклама / ООО «ИЗОЛПРОЕКТ» / ИНН: 7725566484 | ERID: 2Vtzqx6kV7S
IPB IPB
Проектирование, монтаж, наладка, сервис


Здравствуйте, гость ( Вход | Регистрация )

- Стандарт НП «АВОК» 7.11-2024
«Рекомендации по проектированию инженерных систем
дошкольных образовательных организаций»

АВОК в соц. сетях
ИНН: 7714824045 | erid: 2VtzqwzKQiU
 
Добавить ответ в эту темуОткрыть тему
> Kinco Hmi и Modbus, прошу совета по составлению макросов
ddark
сообщение 12.7.2014, 10:37
Сообщение #1





Группа: New
Сообщений: 10
Регистрация: 12.7.2014
Пользователь №: 239194



Добрый день!

Суть проблемы в следующем: есть панель Kinco HMI MT4210 и есть 200 одинаковых контроллеров, подключенных по Modbus. Необходимо с этих контроллеров считывать определенный набор переменных...

Обычно для этих целей я создаю одно окошко визуализации, куда "подставляю" переменные для выбранного контроллера (т.е. грубо говоря влево-вправо перещелкиваю эти 200 контроллеров, окно одно и то же, а данные меняются, типа мультиплексор)

в среде разработки Kinco HMI я ладу не могу дать, как это сделать.. =(( получается только сделать 200 окошек с разными переменными... ну или же как то перегонять данные с устройств в некий массив огромный и из него заполнять... но это надо его вручную обновлять - не круто совсем

вообщем может кто подскажет как с помощью макросов опрашивать Modbus устройства чтобы можно было изменять адрес в сети как параметр

Спасибо заранее!
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
todatul
сообщение 12.7.2014, 11:49
Сообщение #2





Группа: Участники форума
Сообщений: 203
Регистрация: 13.6.2014
Пользователь №: 236611



Цитата(ddark @ 12.7.2014, 10:37) *
Добрый день!

Суть проблемы в следующем: есть панель Kinco HMI MT4210 и есть 200 одинаковых контроллеров, подключенных по Modbus. Необходимо с этих контроллеров считывать определенный набор переменных...

Обычно для этих целей я создаю одно окошко визуализации, куда "подставляю" переменные для выбранного контроллера (т.е. грубо говоря влево-вправо перещелкиваю эти 200 контроллеров, окно одно и то же, а данные меняются, типа мультиплексор)

в среде разработки Kinco HMI я ладу не могу дать, как это сделать.. =(( получается только сделать 200 окошек с разными переменными... ну или же как то перегонять данные с устройств в некий массив огромный и из него заполнять... но это надо его вручную обновлять - не круто совсем

вообщем может кто подскажет как с помощью макросов опрашивать Modbus устройства чтобы можно было изменять адрес в сети как параметр

Спасибо заранее!

У многих панелей есть индексные регистры (смещение косвенной адресации), они позволяют индексировать адреса в пределах одного диапазона (одного адреса станции)
разместите несколько modbus-slave устройств (есть ограничение по колич устройств) с одинаковым адресом станции modbus-slave но с разными адресами регистров , например

3000-3020
4000-4020
5000-5020
6000-6020
7000-7020
8000-8020

изменяйте значение индексного регистра как
0
1000
2000
3000
4000

и будете поочередно иметь доступ к разным контроллерам



Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
spectrum48k
сообщение 14.7.2014, 12:09
Сообщение #3





Группа: Участники форума
Сообщений: 130
Регистрация: 18.1.2014
Пользователь №: 220026



Цитата(todatul @ 12.7.2014, 11:49) *
У многих панелей есть индексные регистры (смещение косвенной адресации), они позволяют индексировать адреса в пределах одного диапазона (одного адреса станции)
разместите несколько modbus-slave устройств (есть ограничение по колич устройств) с одинаковым адресом станции modbus-slave но с разными адресами регистров , например

3000-3020
4000-4020
5000-5020
6000-6020
7000-7020
8000-8020

изменяйте значение индексного регистра как
0
1000
2000
3000
4000

и будете поочередно иметь доступ к разным контроллерам

простите, а как индексный регистр в данном случае может быть связан с динамическим адресом rtu ?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
goldenlife
сообщение 14.7.2014, 12:34
Сообщение #4





Группа: Участники форума
Сообщений: 99
Регистрация: 27.2.2011
Из: Макеевка
Пользователь №: 96144



Гляди личку. Может быть помогу. Там нет ничего сложного.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
todatul
сообщение 14.7.2014, 13:43
Сообщение #5





Группа: Участники форума
Сообщений: 203
Регистрация: 13.6.2014
Пользователь №: 236611



Цитата(spectrum48k @ 14.7.2014, 12:09) *
простите, а как индексный регистр в данном случае может быть связан с динамическим адресом rtu ?



про динамический речь не шла, а индексный регистр для смещения в косвенной адресации

например
base=3000 базовый адрес регистра slave modbus
index=2000 текущее значение индексного регистра
qty=20 колич слов для считывания

тогда начиная с адреса [3000 + index] будет считано 20 слов
меняя index меняем положение окна считывания (записи)
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
ddark
сообщение 15.7.2014, 7:08
Сообщение #6





Группа: New
Сообщений: 10
Регистрация: 12.7.2014
Пользователь №: 239194



todatul, спасибо за верное направление!!!

вообщем с экранами моя проблема решается так:


т.е. на поле проекта вытаскивается один Modbus Slave RTU, а номер станции (контроллера) прописан в регистре, который соответственно можно менять... по событию макросом подставляю нужный адрес - все ок

однако это еще не все мои проблемы: мне бы разобраться как с помощью макросов считывать значение Modbus переменной... не могу дать ладу как корректно прописать ее адрес.. в мануале такая схемка:

а сама стандартная функция чтения записи идет вот так:

Read,Write Local address function:
int ReadLocal( const char *type, int addr, int nRegs, void *buf, int flag );
int WriteLocal( const char *type, int addr, int nRegs, void *buf , int flag );

Parameter: type is the string of "LW","LB" etc;
address is the Operation address ;
nRegs is the length of read or write ;
buf is the buffer which store the reading or writing data;
flag is 0,then codetype is BIN,is 1 then codetype is BCD;
return value : 1 ,Operation success
0, Operation fail.

как мне считать переменную, например из контроллера с адресом 10, адрес переменной 10h? подскажите пожалуйста
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения

Добавить ответ в эту темуОткрыть тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

Реклама
ООО «Арктика групп» ИНН: 7713634274



ООО "Русич" ИНН 9721068883 / ЕРИД 2VtzqvMjLF8


ООО «УНИСПЛИТ» ИНН: 6453155081 erid:2VtzqxXgvJi

Реклама: ООО «СибСтронг» | ИНН 6670013662 | ERID: 2VtzqwyM2dc
Реклама: ООО «СЛ-ЛАЗЕР» ИНН 7727447267 | erid: 2VtzquvhFWx

Последние сообщения Форума






RSS Текстовая версия Сейчас: 30.7.2025, 13:35
Политика ООО ИИП «АВОК-ПРЕСС» в отношении обработки персональных данных