Segnetics

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.04.2008, 16:19   #151
Silver
Новичок
 
Регистрация: Oct 2007
Сообщения: 20
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Диспетчеризация, OPC-сервер и modbus

Я не спрашиваю что мне нажимать
Если внимательно читали - то вопрос был по сути - нужно было связать NI OPC и Segnetic... Были непонятные вопросы - потому и спрашивал.
И не считайте меня блондинкой - я даже по вашим интсрукциям могу научиться и понять на будущее

NI OPC я так понял не поддерживает ModBus в той реализации которая есть на Segnetics потому работаем сейчас через Лектус

Спасибо за помощь!
Silver вне форума   Ответить с цитированием
Старый 02.04.2008, 12:48   #152
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 072
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Диспетчеризация, OPC-сервер и modbus

Дык я и ответил - расписал разницу, рассказал где искать...

Если рассмотреть сам ваш вопрос "Как перевести адрес А000h", то он некорректен. На некорректный вопрос невозможно дать корректный ответ.

Объясню некорректность вопроса. В модбасе есть ЧЕТЫРЕ разных адресных пространства, диапазоном 0000h..FFFFh. Одно пространство охватывает статусные регистры, второе охватывает статусные биты, третье и четвёртое - выходные регистры и биты соответственно.

Вы упоминаете адрес A000h. Это понятно, но к какому виду данных относится этот адрес? Статусный регистр номер A000h, статусный бит номер A000h? Или может выходной регистр A000h ??? В диапазонной адресации это имеет принципиальное значение.


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

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 02.04.2008, 12:51   #153
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 072
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Диспетчеризация, OPC-сервер и modbus

Будет тормозить. Именно поэтому тайм-аут нужно выставлять вдумчиво, а не от балды несколько секунд

Подбрать можно методом последовательного приближения - понизить тайм-аут до такой степени, что появятся ошибки (допустим, это случилось при цифре 10 мсек). Добавьте 30% (13 мсек) и не беспокойтесь - задержки будут минимальными.


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

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 02.07.2008, 13:09   #154
kostkost
Senior Member
 
Регистрация: Apr 2008
Сообщения: 204
Благодарил(а): 1 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Диспетчеризация, OPC-сервер и modbus

Чем закончилась история с настройкой NI OPC Server под
SMH2010
У меня таже ситуация
Может кто посоветует бесплатный сервер
kostkost вне форума   Ответить с цитированием
Старый 02.07.2008, 15:50   #155
AlexG
Senior Member
 
Регистрация: Jan 2006
Сообщения: 172
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Диспетчеризация, OPC-сервер и modbus

http://www.complexsystems.ru/modbus_opc_server.html
Работает. Отличается отсутствием графического интерфейса, конфигурируется с помощью файла в формате XML.
AlexG вне форума   Ответить с цитированием
Старый 02.07.2008, 18:29   #156
kostkost
Senior Member
 
Регистрация: Apr 2008
Сообщения: 204
Благодарил(а): 1 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Angry Ответ: Диспетчеризация, OPC-сервер и modbus

Цитата:
Сообщение от Arsie
Объясню некорректность вопроса. В модбасе есть ЧЕТЫРЕ разных адресных пространства, диапазоном 0000h..FFFFh. Одно пространство охватывает статусные регистры, второе охватывает статусные биты, третье и четвёртое - выходные регистры и биты соответственно.

Вы упоминаете адрес A000h. Это понятно, но к какому виду данных относится этот адрес? Статусный регистр номер A000h, статусный бит номер A000h? Или может выходной регистр A000h ??? В диапазонной адресации это имеет принципиальное значение.
Я типа все читал но тоже не вдупляюсь
Есть смш2010
есть в SMLogix переменные разных типов ну например
in1 и out1
в файлике типа

Request0]
Direction=read
Type=bit
Baudrate=115200
Address=0
Period=100
var0=1#bool#Out1
var1=9#bool#Out2
[Request1]
Direction=read/write
Type=bit
Baudrate=115200
Address=0
Period=100
var0=3c00#bool#In1
[Request3]
Direction=read/write
Type=reg
Baudrate=115200
Address=0
Period=100
var0=a400#int#In2

а к какому адресному пространству (виду данных ) они относятся?
как это определяется?
адреса типа есть но куда их засунуть?
kostkost вне форума   Ответить с цитированием
Старый 02.07.2008, 22:01   #157
Николаич
Новичок
 
Регистрация: Dec 2007
Адрес: Санкт-Петербург
Сообщения: 17
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Диспетчеризация, OPC-сервер и modbus

Arsie, вопрос на другую тему.
Как поменять модбас-адрес в SMH-слейве изнутри SMH? Не пользуясь лоджиком и внешним компьютером.
По аналогии со многими приборами, например, частотниками или моими приборами. Которые позволяют менять свой сетевой адрес через своё меню.
Может у SMH есть какая-нибудь возможность? недокументированная?
Добавить вход Address к блоку DEVICE(Link) и все дела
Николаич вне форума   Ответить с цитированием
Старый 04.07.2008, 15:53   #158
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 072
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Диспетчеризация, OPC-сервер и modbus

В SMH никак, в Pixel - через системное меню.

Над софтом в SMH работа идёт, адрес и скорость можно будет менять.


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

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 06.07.2008, 02:34   #159
Николаич
Новичок
 
Регистрация: Dec 2007
Адрес: Санкт-Петербург
Сообщения: 17
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Диспетчеризация, OPC-сервер и modbus

Цитата:
Сообщение от Arsie
Над софтом в SMH работа идёт, адрес и скорость можно будет менять.
Очень хорошо! А как я об этом узнаю? Это будет новая версия лоджика?

Хорошо бы на вашем сайте выдавать информацию об обновлениях лоджика (это есть), прошивок SMH, хелпа, новых блоках, изменениях в старых блоках, изменениях в железе (про EEPROM с оч. большим ресурсом я, например, узнал случайно) и т.д.
Николаич вне форума   Ответить с цитированием
Старый 07.07.2008, 14:34   #160
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 072
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Диспетчеризация, OPC-сервер и modbus

Думаю, это появится в рестайлинговом SMH, в нынешнем с ресурсами уже, к сожалению, туговато...


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

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 23.07.2008, 16:45   #161
gtfox
Новичок
 
Регистрация: Dec 2007
Сообщения: 28
Благодарил(а): 1 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Question ModBus RTU

Есть задача: управлять устройствами LanDrive по ModBus RTU (Формат команд ниже).

Вот здесь увидел "Соответствие функций чтения/записи переменным"

Устройства LanDrive используют функции 02, 05, 16 (02h, 05h, 10h)

Как выяснилось отсюда , из-за ошибки, вместо 05 они используют функцию 06.

Цитата:
SMH-master посылает запросы с функциями 01h, 02h, 03h, 04h, 0Fh, 10h - если разрешено использование групповых запросов и использует функции 01h, 02h, 03h, 04h, 05h, 06h, если использование групповых запросов запрещено.
Возьмем к примеру
Цитата:
=== Блок "Вход" типа bool.
Название_modbus: coil status
Функция_logix: R/W(out)
Тип_logix: boolean
Функция_OPC: R01/W05 или R01/W15
Тип_OPC: boolean
или
Цитата:
=== Блок "Вход" типа int.
Название_modbus: holding registers
Функция_logix: R/W(out) либо R(out)
Тип_logix: integer
Функция_OPC: R03/W06 или R03/W16
Тип_OPC: small integer
Вопросы:
1) Если разрешено использование групповых запросов то использует функции R01/W15 или R03/W16, а если не разрешено, то R01/W05 или R03/W06? Соответственно первый косячек - не возможно использование одновременно 05/06 и 16 (и как тут быть? )
2) Вот тут написано, что после записи SMH _обязательно_ делает запрос на чтение этих данных. Так вот пишет он 05/06, а читает 01/03, соответственно? LanDrive позволяет читать только функцией 02. Соответственно, после записи он нихрена не прочитает, и что произойдет в SMH/Pixel?
3) Чатать функцией 02 можно
Цитата:
=== Блок "Выход" типа bool.
Название_modbus: input status
Функция_logix: R(in)
Тип_logix: boolean
Функция_OPC: R02
Тип_OPC: boolean
Не совсем понятно, Тип_logix: boolean, значит в лоджике будет либо 0 либо 1, хотя в документации ModBus RTU написано
Цитата:
02 Read Input Status
ОПИСАНИЕ
Чтение ON/OFF состояния дискретных входов (ссылка 1Х) в пдчиненном.
ЗАПРОС
Запрос содержит номер начального входа и количество входов для чтения. Входа адресуются начиная с 0.
Ниже приведен пример запроса на чтение входов 10197-10218 с подчиненного устройства 17.
Запрос
Имя поля Пример
(Hex)
Адрес подчиненного 11
Функция 02
Начальный адрес ст. 00
Начальный адрес мл. C4
Кол-во входов ст. 00
Кол-во входов мл. 16
Контрольная сумма --

ОТВЕТ
Статус входов в ответном сообщении передается как один выход на бит.
Если возвращаемое количество входов не кратно восьми, то оставшиеся биты в последнем байте сообщения будут установлены в 0. Счетчик байт содержит количество байт передаваемых в поле данных.
Имя поля Пример
(Hex)
Адрес подчиненного 11
Функция 01
Счетчик байт 4 005
Данные(Входы 10204-10197) AC
Данные(Входы 10212-10205) DB
Данные(Входы 10218-10213) 35
Контрольная сумма (CRC или LRC) --
Ну прочитать один дискретный вход еще можно, а вот получить знаечение ИК-пакета с ИК-приемника LD-IR про помощи "=== Блок "Выход" типа bool" с функцией 02 не получится?
Гы, открыв Лоджик, увидел что для любого "типа" можно выставить любое "направление"... Мда, конечно лучше бы можно было выставить номер функции...
--------
Что-то я вообще не пойму что делать, может я чего-то недопонимаю?
Вложения
Тип файла: zip Формат команд Modbus серии LanDrive.zip (49.2 Кбайт, 185 просмотров)

Последний раз редактировалось gtfox, 23.07.2008 в 17:14
gtfox вне форума   Ответить с цитированием
Старый 23.07.2008, 17:23   #162
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 072
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: ModBus RTU

Не представляю, как вместо ф-ции 06h можно использовать 05h, это же две "большие разницы" (c). Настолько большие, что без изменения протокола "под них" не обойтись.

Теперь вопросы:

1) Быть тут запросто. Создать два слейва с одинаковыми адресами. Одному включить групповые запросы, другому выключить! Дальше, думаю, поймёте, что да как

2) Ничего не произойдёт. В лучшем случае ландрайв скажет "81/83" - запрос не поддерживается и SMH перейдёт к следующему запросу - это если ландрайв _правильно_ работает.

В худшем случае ландрайв не скажет ничего, SMH подождёт таймаут и перейдёт к следующему запросу.

3) Вы документацию-то с ног на голову не переворачивайте! В модбасе принято правило, когда биты передаются не по одному, а упакованными в байт (единица передачи данных - байт). Но битами-то они быть не перестают!

Одному адресу один бит, для передачи до 8 _подряд_ идущих битов используется один байт. Если значащих битов меньше 8, то незначащие биты сброшены. После распаковки получаете до 8 битов на байт (сколько читали).

Про LD-IR я вообще ничего не понял


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

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 23.07.2008, 20:08   #163
gtfox
Новичок
 
Регистрация: Dec 2007
Сообщения: 28
Благодарил(а): 1 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Unhappy Ответ: Диспетчеризация, OPC-сервер и modbus

Во первых открыл английский вариант описания протокола (в руском переводе ошибки б... ).

Берем в лоджике тип boolean, направление R(in) => будет отправлен такой запрос
А_Ф_Адрес перемен_ Кол-во перем._CRC
01_02_00 01_00 01_xx xx
Ответ придет
А_Ф_Число байт_Сост. входов_CRC
01_02_01_01_xx xx
Сост. входов = 01h = 0000 0001b и на выходе блока будет 1, т.е. нулевой бит в этом байте.

Берем в лоджике тип integer, направление R(in) => будет отправлен такой запрос
А_Ф_Адрес перемен_Кол-во перем._CRC
01_02_00 01_00 10_xx xx
т.к. integer занимает 2 байта = 16 бит = 10h бит
Ответ придет
А_Ф_Число байт_Сост. входов_CRC
01_02_02_00 01_xx xx
Сост. входов = 00 01h = 0000 0000 0000 0001b и на выходе блока будет 1 в формате integer.

Теперь берем модуль LD-IR (из документации на модули ) "получить принятый ИК пакет" => это не не булева переменная, а значит тип нужен минимум integer (или byte, если бы он был)
надо сделать запрос(по документации)
А_Ф_Адрес перемен_Кол-во перем._CRC
01_02_00 01_00 01_xx xx
а лоджик сделает запрос
А_Ф_Адрес перемен_Кол-во перем._CRC
01_02_00 01_00 10_xx xx
и что об этом запросе подумает LD-IR
Это все верно, если я правильно понимаю как работает тип integer - направление R(in), и если в документации верно написано.
gtfox вне форума   Ответить с цитированием
Старый 24.07.2008, 11:26   #164
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 072
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Диспетчеризация, OPC-сервер и modbus

Цитата:
Сообщение от gtfox
Во первых открыл английский вариант описания протокола (в руском переводе ошибки б... ).
Наверное, с этого и стоило начинать

Хотя у данфоса, например, чувствуется, что инструкцию с китайского перевели на французский, затем на английский, а только потом - на русский Мясо полное



Цитата:
Сообщение от gtfox
Берем в лоджике тип boolean, направление R(in) => будет отправлен такой запрос
А_Ф_Адрес перемен_ Кол-во перем._CRC
01_02_00 01_00 01_xx xx
Ответ придет
А_Ф_Число байт_Сост. входов_CRC
01_02_01_01_xx xx
Сост. входов = 01h = 0000 0001b и на выходе блока будет 1, т.е. нулевой бит в этом байте.
Вроде так.



Цитата:
Сообщение от gtfox
Берем в лоджике тип integer, направление R(in) => будет отправлен такой запрос
А_Ф_Адрес перемен_Кол-во перем._CRC
01_02_00 01_00 10_xx xx
т.к. integer занимает 2 байта = 16 бит = 10h бит
Ответ придет
А_Ф_Число байт_Сост. входов_CRC
01_02_02_00 01_xx xx
Сост. входов = 00 01h = 0000 0000 0000 0001b и на выходе блока будет 1 в формате integer.
А вот тут - не так. Будет использована ф-ция 04h, а не 02h. Input registers это не то же самое, что Input status.

Запрос: 01_04_00 01_00 01_xx xx

Ответ: 01_04_02_значение_xx xx

Так гласит закон джунглей, т.е. описание modbus PI–MBUS–300.

В общем случае адреса у регистров и статусов не пересекаются, т.е. чтение функцией 01h с адреса 0000h даст один результат, чтение ф-цией 02h с адреса 0000h даст другой результат, ф-ция 03h даст третий результат, ф-ция 04h - четвёртый.

Не то, чтобы данные интерпретируются по разному, данные _приходят_ разные и источники этих данных также разные.

Но это в общем случае, конкретному производителю не запрещено объединять эти четыре адресных пространства в любых комбинациях.



Цитата:
Сообщение от gtfox
Теперь берем модуль LD-IR (из документации на модули ) "получить принятый ИК пакет" => это не не булева переменная, а значит тип нужен минимум integer (или byte, если бы он был)
надо сделать запрос(по документации)
А_Ф_Адрес перемен_Кол-во перем._CRC
01_02_00 01_00 01_xx xx
а лоджик сделает запрос
А_Ф_Адрес перемен_Кол-во перем._CRC
01_02_00 01_00 10_xx xx
и что об этом запросе подумает LD-IR
Это все верно, если я правильно понимаю как работает тип integer - направление R(in), и если в документации верно написано.
Я бы не спешил делать вывод, что под словом "пакет" подразумевается именно байт, а не последовательность битов.


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

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 25.07.2008, 14:40   #165
gtfox
Новичок
 
Регистрация: Dec 2007
Сообщения: 28
Благодарил(а): 1 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Red face Ответ: Диспетчеризация, OPC-сервер и modbus

Начнем по порядку

Функция 02
В запросе можно указать кол-во бит, которые хотим прочитать, например 22 бита=0016h с адреса 10197d => первая еденица - указывает на диапазон Input Status, т.к адресация с нуля, то 0197d-1d=196d=00С4h
Запрос:
А_Ф_Адрес перемен_ Кол-во перем._CRC
01_02_00 C4_00 16_xx xx
Ответ придет:
А_Ф_Число байт_Сост. входов_CRC
01_02_03_AC BD 35_xx xx
причем AC - для входов 10204-10197, 35 - для входов 10218-10213

1) В лоджике единственный тип использующий функцию 02 это boolean, направление R(in), которым не получается организовать чтение нескольких Input Status. Логично было бы сделать выбор типа переменной лиш для указания размера принимаемых данных и отдельно выбор функции, которая будет реализовывать чтение/запись. Т.е. тип
integer и функция 02 => прочитает 16 бит и положит их в переменную, или тип long и функция 02 => прочитает 32 бита и положит их в переменную.
Примерно так сделано в CoDeSys(см. рисунок)
Конечно идиальный вариант был бы с возможностью ручного указания числа читаемых битов
Можно извратиться, и прочитать N битов создав N блоков boolean R(in) с нужными адресами, но при этом "скорость передачи" одного "пакета битов" упадет в N раз...
2) Про функцию 04 можно сказать то же самое... По идее возможность указания кол-ва регистров предусмотрена протоколом, но не реализована.

3)
Цитата:
В общем случае адреса у регистров и статусов не пересекаются, т.е. чтение функцией 01h с адреса 0000h даст один результат, чтение ф-цией 02h с адреса 0000h даст другой результат, ф-ция 03h даст третий результат, ф-ция 04h - четвёртый.
Если выполнить такой запрос к SMH/Pixel, то, возможно мы что-то и получим, но не то что надо. Я так понял такие запросы относятся только к устройствам с диапазонной адресацией, а в SMH/Pixel
3800-37FF - Input Status
3C00-4000 - Coil Status
A000-A3FF - Input Reg
A400-A800 - Holding Reg

4)В документации на LanDrive явно не указан тип адресации, и я не уверен в достоверности информации указанной в ней. Функция 05 уже явно не подходит по формату, а вот чтение "ИК пакета" из модуля LD-IR может быть осуществлена и при помощи функции 02 (при явном указании кол-ва бит в запросе), и при помощи функции 04 (при условии, что в документации очередная ошибка)
Вобщем надо покупать эти устройства, брать Лектус и отправлять строку запроса в явном виде
Цитата:
Я бы не спешил делать вывод, что под словом "пакет" подразумевается именно байт, а не последовательность битов.
Вот тут есть инфа по кодировке сигналов пультов. Не знаю когда передается то что в начале, но сам код клавиши 2 байта.
Вобщем без эксперементов не обойтись
Большое спасибо за потраченное, на меня, время!
Цитата:
#
# this config file was automatically generated
# using lirc-0.8.0(serial) on Tue Oct 31 00:16:39 2006
#
# contributed by Dusan Milovanovic, Serbia
#
# brand: LG LG
# model no. of remote control: 6710CDAL01G
# devices being controlled by this remote: DVD HT
#

begin remote

name LG_6710CDAL01G
bits 16
flags SPACE_ENC|CONST_LENGTH|REPEAT_HEADER
eps 30
aeps 100

header 4552 4534
one 563 1681
zero 563 559
ptrail 545
repeat 531 1710
pre_data_bits 16
pre_data 0x3434
gap 108234
toggle_bit 0


begin codes
power ________0x7887
open-close________0x59A6
cd-dvd ________0xC03F
band ________0x9A65
aux ________0x906F
1 ________0x827D
2 ________0x42BD
3 ________0xC23D
4 ________0x22DD
5 ________0xA25D
6 ________0x629D
7 ________0xE21D
8 ________0x12ED
9 ________0x926D
0 ________0xD22D
sleep ________0x43BC
audio ________0x05FA
sound ________0x857A
s-title ________0xD52A
return ________0x45BA
setup ________0xA55A
display ________0xC53A
menu ________0x25DA
title ________0xF50A
up ________0xE51A
down ________0x659A
left ________0x15EA
right ________0x956A
enter ________0x55AA
plus ________0xC837
minus ________0x48B7
<< ________0x8D72
>> ________0x4DB2
volume+ ________0xE817
volume- ________0x6897
<<< ________0x609F
>>> ________0xE01F
stop ________0xA05F
pause ________0xF20D
play ________0x20DF
mute ________0xF807
program ________0xB24D
clear ________0x0DF2
repeat ________0x728D
repeata-b ________0xB54A
marker ________0x2DD2
search ________0xCD32
angle ________0x35CA
zoom ________0x758A
rds ________0x06F9
pty ________0x8E71
pty-search________0x9C63
dimmer ________0x7A85
end codes

end remote
Изображения
Тип файла: png Codesys.PNG (34.2 Кбайт, 185 просмотров)
gtfox вне форума   Ответить с цитированием
Старый 25.07.2008, 15:28   #166
gtfox
Новичок
 
Регистрация: Dec 2007
Сообщения: 28
Благодарил(а): 1 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Post Ответ: Диспетчеризация, OPC-сервер и modbus

И еще с адресацией как-то странно получается
Цитата:
3800-37FF - Input Status
3C00-4000 - Coil Status
A000-A3FF - Input Reg
A400-A800 - Holding Reg
________________
3С00 - бит0
3С01 - бит1
................ байт0
3С07 - бит7
________________
3С08 - бит0
3С09 - бит1
................ байт1
3С0A - бит7
________________
А тут уже
A000 - 2 байта Reg0
A001 - 2 байта Reg1
A002 - 2 байта Reg2
хотя по логике должно быть
A000 - 2 байта Reg0
A010 - 2 байта Reg1
A020 - 2 байта Reg2
gtfox вне форума   Ответить с цитированием
Старый 25.07.2008, 16:27   #167
gtfox
Новичок
 
Регистрация: Dec 2007
Сообщения: 28
Благодарил(а): 1 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Cool Ответ: Диспетчеризация, OPC-сервер и modbus

Цитата:
3С0A - бит7
3C0F - бит7
gtfox вне форума   Ответить с цитированием
Старый 25.07.2008, 18:36   #168
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 072
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Диспетчеризация, OPC-сервер и modbus

Меня очень впечатлила проделанная вами работа, но, мне кажется, вы слишком сильно теоретизируете.

Соедините два SMH, запустите портмонитор и посмотрите, как они общаются между собой. Там вы увидите и запросы 02h для нескольких битов.

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


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

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 25.07.2008, 18:57   #169
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 072
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Диспетчеризация, OPC-сервер и modbus

1) Не в лоджике, а в модбасе. А что кодесис позволяет программировать протокол, так это не новость. Вот только модбасом такой "изменённый" протокол уже не имеет права называться. Про падение производительности SMH вы явно придумываете

2) Также придумываете. Посмотрите внимательно в карту "мастерную" памяти: вы увидите "зебру" из полосок двух цветов. Все данные внутри одной полоски читаются групповым запросом. Т.е., по вашей терминологии, "с указанием количества регистров".

3) Тут я вас поправлю:

0000-FFFF - Input Status
0000-FFFF - Coil Status
0000-FFFF - Input Reg
0000-FFFF - Holding Reg

Это определено протоколом модбас, а не нами. Мы же используем для передачи _пользовательских_ данных именно те адреса, что удобны именно нам. Т.е. те, что вы привели. Попробуйте читать инпут статусы по адресам 0000-0030h, нажимая кнопки, вы будете удивлены

4) Я могу только повторить сказанное: "Я бы не спешил делать вывод, что под словом "пакет" подразумевается именно байт, а не последовательность битов". И относится это не к ландрайву, а к модбасу. Пока вы не проясните для себя предыдущие три пункта, разговаривать о ландрайве рано.


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

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 28.07.2008, 09:48   #170
gtfox
Новичок
 
Регистрация: Dec 2007
Сообщения: 28
Благодарил(а): 1 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Диспетчеризация, OPC-сервер и modbus

Спасибо, большое, за подробные ответы. Были бы эксперименты - может было бы меньше вопросов.
Желаю Вам хорошо отдохнуть от нас!
gtfox вне форума   Ответить с цитированием
Старый 11.08.2008, 11:28   #171
gtfox
Новичок
 
Регистрация: Dec 2007
Сообщения: 28
Благодарил(а): 1 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Cool Ответ техподдержки Support INSYTE

Цитата:
Сообщение от Arsie
Не представляю, как вместо ф-ции 06h можно использовать 05h, это же две "большие разницы" (c). Настолько большие, что без изменения протокола "под них" не обойтись.
Ответ техподдержки Support INSYTE

Цитата:
Zakyska (13:56:35 7/08/2008)
изначально формат команд модулей LanDrive не совсем совместим с Modbus/RTU, т.к. были ограничения на вычислительные ресурсы,
сейчас выпускается линейка с "нативным" Modbus/RTU на 100% совместимым со спецификацией,
на сайте информация немного запаздывает
gtfox вне форума   Ответить с цитированием
Старый 11.08.2008, 16:34   #172
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 072
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Ответ техподдержки Support INSYTE

Информация на Закуску? %)


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

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 22.08.2008, 19:05   #173
gtfox
Новичок
 
Регистрация: Dec 2007
Сообщения: 28
Благодарил(а): 1 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Диспетчеризация, OPC-сервер и modbus

Да.
(Ник: Zakyska Имя: Андрей )
Просто я долго добивался от них этого. Удивительно, как они рекламируют свою продукцию c "ModBus/RTU", заведомо зная о не соответствии, и ни слова нигде об этом, и только после мучительных задалбываний техподдержки это выясняется.
gtfox вне форума   Ответить с цитированием
Старый 06.10.2008, 19:46   #174
Silver
Новичок
 
Регистрация: Oct 2007
Сообщения: 20
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Диспетчеризация, OPC-сервер и modbus

Цитата:
Сообщение от kostkost
Чем закончилась история с настройкой NI OPC Server под
SMH2010
У меня таже ситуация
Может кто посоветует бесплатный сервер
Может и неактуально уже но увязать получилось.
Арсений был прав насчет адресации, но тогда я в неё просто не въехал.

Вобщем перевести переменную СМШ в адресацию NI OPC servers можно так:

Например, выход REG целого типа данных (int) с адресом A000. (функции доступа 03, 06, 16)

Переводим: по хелпу самого NI OPC видим что для этих функций адресный диапазон равен H400001 - H410000 (для типов данных Word, Short, BCD)

значит берем наш адрес A000 прибавляем 1 и добавляем префикс H40
Получаем H40A001 - адрес в hex для NI OPC servers

Внимательно смотреть таблицы в справке NI OPC - там отдельно dec отдельно hex адреса!

NI OPC работает даже пошустрее Лектуса. Вот так вот.
Silver вне форума   Ответить с цитированием
Старый 27.10.2008, 21:21   #175
SMH
НЕ сотрудник Segnetics
 
Аватара для SMH
 
Регистрация: Feb 2006
Сообщения: 540
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Реализация чтения длинных чисел Modbus

Цитата:
Сообщение от Николаич
Вопрос ко всем: как приборы посторонних фирм (потусторонних фирм :-) отвечают на запрос длинных данных (4-байтовых: real, float, long, 8-байтовых)?
Пытаюсь достучаться при помощи SMH до прибора, передающего переменную float "правильно". Получаю какую-то хрень. Возможно ли средствами Лоджика вернуть ей исходный вид? Пока додумался считать её в виде двух integer, которые разбил на биты. Завтра буду думать, как эти биты правильно собрать... Это вообще, возможно? И существуют ли какие-то другие способы такого преобразования?
SMH вне форума   Ответить с цитированием
Старый 28.10.2008, 10:49   #176
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 072
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Реализация чтения длинных чисел Modbus

А что такое "правильно"?

В модбасе не описана передача ничего, длиннее 2 байт (регистра). Поэтому понятие о правильности у всех может быть своё.

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


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

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 28.10.2008, 18:16   #177
SMH
НЕ сотрудник Segnetics
 
Аватара для SMH
 
Регистрация: Feb 2006
Сообщения: 540
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Реализация чтения длинных чисел Modbus

Цитата:
Сообщение от Arsie
А что такое "правильно"?
В модбасе не описана передача ничего, длиннее 2 байт (регистра).
Поэтому понятие о правильности у всех может быть своё.
Именно поэтому слово "правильно" было взято мною в кавычки. Это так, как описывал выше ув. Николаич. Но дело не в этом. То, что стандартом Модбас это якобы не регламентируется, не должно являться причиной невозможности стыковки устройств различных производителей между собой.
Цитата:
Сообщение от Arsie
Одно точно знаю, что float с нашего контроллера прекрасно читается кучей устройств и серверов безо всяких танцев с бубном.
Пока вопрос не в том, как float читается с СМШ, а как сам СМШ читает float с других устройств.
Цитата:
Сообщение от Arsie
Я бы лучше начал с проверки, как передаётся long, чтобы понять, а вообще хоть что-то читается полезное и в каком порядке при этом расположены байты.
При чём тут long? А вообще, проблема уже решена. . Лоджик это может.
SMH вне форума   Ответить с цитированием
Старый 29.10.2008, 11:31   #178
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 072
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Реализация чтения длинных чисел Modbus

Цитата:
Сообщение от SMH
Пока вопрос не в том, как float читается с СМШ, а как сам СМШ читает float с других устройств.
Ровно точно также, как float читается с SMH



Цитата:
Сообщение от SMH
При чём тут long? А вообще, проблема уже решена. . Лоджик это может.
По лонгу чётко видно, что и на каком месте стоит. Задаёте в целевом устройстве число 12345678h и смотрите, что считалось. Порядок байтов будет представлен до жути наглядно

Расскажете, в чём была проблема и как она была решена?


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

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 01.11.2008, 20:24   #179
SMH
НЕ сотрудник Segnetics
 
Аватара для SMH
 
Регистрация: Feb 2006
Сообщения: 540
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Реализация чтения длинных чисел Modbus

Цитата:
Сообщение от Arsie
Расскажете, в чём была проблема и как она была решена?
После сдачи объекта - не раньше декабря. Если не забуду.
SMH вне форума   Ответить с цитированием
Старый 01.01.2009, 21:51   #180
Zapa
Новичок
 
Регистрация: Dec 2007
Сообщения: 11
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Вопрос по количеству байт в регистре.

Вопрос по количеству байт в регистре.
При использовании команды R/W out для записи Longa с выключенными групповыми запросами SMH формирует 2 посылки с использованием команды 06h. Мне необходимо записать Long, находящийся у меня по адресу 01h. Как я понимаю, мой Лонг занимает два регистра 01h и 02h всего 4 байта. Вопрос, почему SMH последовательно обращается к двум регистрам 01h и 03h?
Zapa вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

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

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



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


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