Segnetics

Вернуться   Segnetics > Форум Segnetics > Связь с внешним миром

Связь с внешним миром Modbus, RS232, RS485, Lon и другое.

Ответ
 
Опции темы Поиск в этой теме
Старый 20.04.2010, 21:13   #1
Dron
Новичок
 
Регистрация: Sep 2009
Сообщения: 21
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Ошибка Logix'а?

Я как-то поднимал вопрос о группировке входов и выходов с адресацией по-порядку, для того чтобы читать всё одним запросом функцией 3.
В версии 3.18.0013 такое смог реализовать. Формировал стандартную карту модбас, делал компоновку, затем в карте убирал галочку автоматической нумерации, задавал свои адреса и загружал проект. После этого всё читалось функцией 3 одним запросом.
В версии 3.19.0050 такого сделать не могу. Может оно так и должно быть, но из-за этого пришлось вернуться на версию 3.18.0013, где мою задачу можно нормально реализовать.
Почему нельзя сделать чтение выходов функцией 3?
Dron вне форума   Ответить с цитированием
Старый 21.04.2010, 10:57   #2
Sergey Cherevko
Senior Member
 
Аватара для Sergey Cherevko
 
Регистрация: Jul 2007
Адрес: Калининград
Сообщения: 422
Благодарил(а): 0 раз(а)
Поблагодарили: 1 раз в 1 сообщении
По умолчанию Ответ: Ошибка Logix'а?

Цитата:
Сообщение от Dron
Почему нельзя сделать чтение выходов функцией 3?
Holding registers по-любому читаются функцией 3.
Может быть в карте адресов есть "пробелы", поэтому формируются несколько запросов?
Sergey Cherevko вне форума   Ответить с цитированием
Старый 21.04.2010, 12:10   #3
Dron
Новичок
 
Регистрация: Sep 2009
Сообщения: 21
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Ошибка Logix'а?

Цитата:
Сообщение от Sergey Cherevko
Holding registers по-любому читаются функцией 3.
Может быть в карте адресов есть "пробелы", поэтому формируются несколько запросов?
а я про Input Registers
Изображения
Тип файла: jpg Scr00.jpg (63.8 Кбайт, 201 просмотров)
Dron вне форума   Ответить с цитированием
Старый 22.04.2010, 11:12   #4
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 086
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Ошибка Logix'а?

Цитата:
Сообщение от Dron
Я как-то поднимал вопрос о группировке входов и выходов с адресацией по-порядку, для того чтобы читать всё одним запросом функцией 3.
В версии 3.18.0013 такое смог реализовать. Формировал стандартную карту модбас, делал компоновку, затем в карте убирал галочку автоматической нумерации, задавал свои адреса и загружал проект. После этого всё читалось функцией 3 одним запросом.
В версии 3.19.0050 такого сделать не могу. Может оно так и должно быть, но из-за этого пришлось вернуться на версию 3.18.0013, где мою задачу можно нормально реализовать.
Почему нельзя сделать чтение выходов функцией 3?
Потому что это противоречит стандарту modbus. Раньше у нас адресные пространства не разделялись, а тип переменной обработчиком определялся по адресу переменной. Однако многих это не устраивало и мы сделали честный modbus с неперекрывающимися адресными пространствами.

К тому же я не совсем понимаю проблему, почему вы против использования двух запросов?


.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 22.04.2010, 14:03   #5
Dron
Новичок
 
Регистрация: Sep 2009
Сообщения: 21
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Ошибка Logix'а?

Цитата:
Сообщение от Arsie
Потому что это противоречит стандарту modbus. Раньше у нас адресные пространства не разделялись, а тип переменной обработчиком определялся по адресу переменной. Однако многих это не устраивало и мы сделали честный modbus с неперекрывающимися адресными пространствами.

К тому же я не совсем понимаю проблему, почему вы против использования двух запросов?
Вот тема, в которой я поднимал вопрос...

Связь между компьютером (ОРС-сервером) и контроллерами организована на радио-модемах. Один запрос выполняется 1-1.5 секунды. Опрашивать надо порядка 40 устройств опросить. Вот и приходится компоновать данные...
Dron вне форума   Ответить с цитированием
Старый 23.04.2010, 10:36   #6
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 086
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Ошибка Logix'а?

Цитата:
Сообщение от Dron
Вот тема, в которой я поднимал вопрос...

Связь между компьютером (ОРС-сервером) и контроллерами организована на радио-модемах. Один запрос выполняется 1-1.5 секунды. Опрашивать надо порядка 40 устройств опросить. Вот и приходится компоновать данные...
Ну тут уж либо ёлка, либо одно из двух. Одновременно влезть на ёлку и ничего при этом не ободрать не получится.

По идее при установленном флажке "Старая карта" ядро работает в режиме совместимости. Если это не помогает, то увы...


.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 23.04.2010, 10:40   #7
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 086
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Ошибка Logix'а?

Цитата:
Сообщение от Dron
а я про Input Registers
Инпут регистры это "входы", а не "выходы". Слово "input" на это вроде как намекает.

input n
информ.
1) входные данные; исходные данные
2) вводное устройство
3) ввод (данных)
4) предоставление сведений, данных и т. п.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 23.04.2010, 11:14   #8
Dron
Новичок
 
Регистрация: Sep 2009
Сообщения: 21
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Ошибка Logix'а?

Цитата:
Сообщение от Arsie
Ну тут уж либо ёлка, либо одно из двух. Одновременно влезть на ёлку и ничего при этом не ободрать не получится.

По идее при установленном флажке "Старая карта" ядро работает в режиме совместимости. Если это не помогает, то увы...
.
При установке флажка нумерация становится стандартная для Input Regs и Holding Regs, но всё читается функцией 3.
Если галочку убрать и задать нужные адреса для Holding Regs, то те адреса, что отведены под Input Regs читаются только функцией 4. А адреса под Holding Regs как и любые другие отличные от описанных в карте - функцией 3. Например A100h или A500h.
Выход пока оставаться на старом лоджике.
Хотя если бы сделали возле галочки "Старая карта" ещё отдельно галочку "Назначить автоматически" как в старом лоджике. Чтобы при "старой карте" можно было задавать свои адреса.
Хотя нигде не написано, что по стандарту модбаса нельзя читать Input Regs функцией 3.
Dron вне форума   Ответить с цитированием
Старый 26.04.2010, 10:46   #9
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 086
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Ошибка Logix'а?

Цитата:
Сообщение от Dron
Хотя нигде не написано, что по стандарту модбаса нельзя читать Input Regs функцией 3.
Я уже начинаю сомневаться в своём английском:



Цитата:
Function Codes Supported by Controllers:

01 Read Coil Status
02 Read Input Status
03 Read Holding Registers
04 Read Input Registers
Цитата:
03 Read Holding Registers

Description
Reads the binary contents of holding registers in the slave.
Broadcast is not supported.
Вас не затруднит перевести вышеприведённые абзацы оригинального описания MODBUS?


.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 26.04.2010, 13:59   #10
Dron
Новичок
 
Регистрация: Sep 2009
Сообщения: 21
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Ошибка Logix'а?

Цитата:
Сообщение от Arsie
Я уже начинаю сомневаться в своём английском:
Цитата:
Сообщение от Dron
Хотя нигде не написано, что по стандарту модбаса нельзя читать Input Regs функцией 3.
...

Вас не затруднит перевести вышеприведённые абзацы оригинального описания MODBUS?
.
Да что вы всё цепляетесь к словам и увиливаете от сути вопроса...

Цитата:
Сообщение от Dron
При установке флажка нумерация становится стандартная для Input Regs и Holding Regs, но всё читается функцией 3.
Если галочку убрать и задать нужные адреса для Holding Regs, то те адреса, что отведены под Input Regs читаются только функцией 4. А адреса под Holding Regs как и любые другие отличные от описанных в карте - функцией 3. Например A100h или A500h.
Выход пока оставаться на старом лоджике.
Хотя если бы сделали возле галочки "Старая карта" ещё отдельно галочку "Назначить автоматически" как в старом лоджике. Чтобы при "старой карте" можно было задавать свои адреса.
Хотя нигде не написано, что по стандарту модбаса нельзя читать Input Regs функцией 3.
Последнее предложение можно пропустить...
Dron вне форума   Ответить с цитированием
Старый 27.04.2010, 09:55   #11
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 086
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Ошибка Logix'а?

Цитата:
Сообщение от Dron
Да что вы всё цепляетесь к словам и увиливаете от сути вопроса...
Последнее предложение можно пропустить...
На остальное я уже ответил:

"Потому что это противоречит стандарту modbus. Раньше у нас адресные пространства не разделялись, а тип переменной обработчиком определялся по адресу переменной. Однако многих это не устраивало и мы сделали честный modbus с неперекрывающимися адресными пространствами."

"По идее при установленном флажке "Старая карта" ядро работает в режиме совместимости. Если это не помогает, то увы..."


Вы предлагаете откат назад. Вашу проблему я понимаю и сам не раз с ней сталкивался. И всегда её решал тем, что НЕ читал holding registers, выстраивая алгоритм так, что мне эта информация была не важна. Если же это было уж очень нужно, то перекидывал данные на input registers и читал всё единым блоком.

Используя недокументированные функции какого-либо девайса всегда нужно отдавать себе отчёт в том, что в любой момент они могут перестать работать.


.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Ответ


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

BB code is Вкл.
[IMG] код Вкл.
HTML код Выкл.



Часовой пояс GMT +4, время: 23:04.


Версия vBulletin: 3.8.7
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Segnetics 2005 - 2024