Главная   Downloads   Разное  
FAQ     Поиск   Регистрация   Вход 
Текущее время: Чт мар 28, 2024 19:54

Часовой пояс: UTC + 3 часа (Russia: MSK)




Начать новую тему Ответить на тему  [ 57 сообщений ]  На страницу 1, 2, 3, 4  Вперёд
Автор Сообщение
 Заголовок сообщения: ModBus RTU? SCU
СообщениеДобавлено: Ср дек 16, 2009 17:41 
Не в сети

Регистрация: Пт янв 30, 2009 21:25
Сообщения: 518
Прошу подсказать.

Требуется прочитать 3 регистра данных начиная с нулевого из удаленного измерителя температуры.
Протокол общения Модбас РТУ.ModbusRTU.
С настройками порта (скорость, битность, четность) все ясно.

Не понятно как описать протокол в CX-Protocol. А именно как создать паузу в начале посылки. И В каком формате отсылать данные, ASCII или BIN? но что BIN. Вообщем вопрос по временам начала посылки.

Заранее спасибо.

_________________
А нам, все равно, и ровно.


В начало
 Профиль  
 
 Заголовок сообщения: Re: ModBus RTU? SCU
СообщениеДобавлено: Ср дек 16, 2009 21:21 
Не в сети

Регистрация: Вт фев 12, 2008 11:30
Сообщения: 324
Откуда: Cherepovets
В начале посылки пауза? Не уверен, что она необходима для модбаса... Но если это действительно необходимо, создаешь последовательность, указываешь Send Wait
Подскажу немного...
передаем:
Address <а> ~(R(1),1) - сетевой номер (указываешь его в первом слове передачи)
Data <a>+~(R(2),1)+R(3),2)+R(4),2)+с - код команды, адрес, количество байт (второе, третее, четвертое слово)
Check code <c> ~CRC16(65535)(2Bytу BIN)
принимаем:
~(W(1),1)+~(R(2),1)+(*,1)+(W(2),2)+(W(3),2)+(W(4),2)+с
Check code <c> ~CRC16(65535)(2Bytу BIN)


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


В начало
 Профиль  
 
 Заголовок сообщения: Re: ModBus RTU? SCU
СообщениеДобавлено: Ср дек 16, 2009 22:26 
Не в сети

Регистрация: Пт янв 30, 2009 21:25
Сообщения: 518
Да спасибо, с этими вещами разобрался.
Мануалы W336 b W344 изучены и дочитаны до дыр.

RTU пртокол всеже требует молчания в линии втечении не менее 4 тактов, (таков протокол). ASCII этого не требует у него есть заголовок и окончание.
Пауза достаточной длительности видимо создается самой аппаратной частью SCU модуля в любом случае, при любых параметрах ожидания отправки запроса.

Связь по RTU пртоколу добил, работает. А вот ASCII ModBus похоже SCU модуль рассчитать не может. Контрольную сумму берет не от шестнадцатиричных данных а от преобразованных в ASCII, жаль. Попробывал посчитать LRC в контролере отдать в протокол устройство ответило. Но в таком случае при приеме тоже придется заниматься рассчетом CRC принятых данных.

_________________
А нам, все равно, и ровно.


В начало
 Профиль  
 
 Заголовок сообщения: Re: ModBus RTU? SCU
СообщениеДобавлено: Ср дек 16, 2009 22:58 
Не в сети

Регистрация: Вт фев 12, 2008 11:30
Сообщения: 324
Откуда: Cherepovets
А какой прибор? Случайно не ТМ 5103 ?
Можно обойтись вовсе без подсчета суммы. Запрос отправить с уже заранее вычисленной на калькуляторе суммой, а принимать только данные. Вероятность ошибки ничтожна.


В начало
 Профиль  
 
 Заголовок сообщения: Re: ModBus RTU? SCU
СообщениеДобавлено: Чт дек 17, 2009 09:30 
Не в сети

Регистрация: Вт фев 12, 2008 11:30
Сообщения: 324
Откуда: Cherepovets
Кстати, контрольная сумма должна вычисляться модулем не от преобразованных данных в АSCII, а от самих данных в шестнадцатиричном формате. Может быть прибор вычисляет ее в десятичном? Я столкнулся с таким в ТМ5103. Пришлось хитрить. И тип контрольной суммы для модбаса кажется должен быть CRC-16 Default 65535 Reverse Order
Паузы для передачи помоему нужны только если несколько мастеров в сети и есть повторители. Добиться паузы можно задержав вызов последовательности PMCR таймером


Отредактировал I1. Дата редактирования: Чт дек 17, 2009 09:46.

В начало
 Профиль  
 
 Заголовок сообщения: Re: ModBus RTU? SCU
СообщениеДобавлено: Чт дек 17, 2009 09:43 
Не в сети

Регистрация: Пт янв 30, 2009 21:25
Сообщения: 518
В том то идело что LRC должна вычисляеться не от проебразованных файлов, а модуль SCU вычисляет только от преобразованных. Но может я что то не понял, или читаю не правильно. Но так и приходиться работать в Modbus RTU.

А проект приходиться делать по желанию заказчика на ТРМ201 от ОВЕН.

Для модбас RTU да CRC-16
Для модбас ASCII по описанию протокола LRC, а по функциям SCU модуля больше подхоит SUM1 но все равно не то.

_________________
А нам, все равно, и ровно.


В начало
 Профиль  
 
 Заголовок сообщения: Re: ModBus RTU? SCU
СообщениеДобавлено: Чт дек 17, 2009 10:27 
Не в сети

Регистрация: Вт фев 12, 2008 11:30
Сообщения: 324
Откуда: Cherepovets
в примерах есть протокол для ТРМ138. Сам не знаю что это, но может быть подойдет в чем то
Сам не делал аски, но все же попробуй CRC16 и Data Type укажи ASCII. Должно заработать. Описание протокола есть? Тогда хотелось бы взглянуть на него. Трассировку бы увидеть...
Если прибор работает с RTU, то это намного лучше медленного аски. И не будет проблем с преобразованием данных после запятой


Отредактировал I1. Дата редактирования: Чт дек 17, 2009 10:59.

В начало
 Профиль  
 
 Заголовок сообщения: Re: ModBus RTU? SCU
СообщениеДобавлено: Чт дек 17, 2009 10:49 
Не в сети
Site Admin
Аватара пользователя

Регистрация: Вт сен 19, 2006 21:13
Сообщения: 3510
Откуда: Москва
По поводу контрольной суммы конечно интересно...
c ModBus ASCII нормально работает
http://www.terring.ru/files/TerringModbus.html
т.е. можно сравнить посылки которые формирует утилита, с теми что идут в порт с помощью трассировки порта CSU или просто подключив его к компу на котором стоит какая- либо терминальная прога.

Цитата:
RTU пртокол всеже требует молчания в линии втечении не менее 4 тактов


почти верно, не помню как точно, но между посылками должна быть пауза на время нужное для передачи какого-то кол-ва байтов, т.е. эта пауза зависит от скорости передачи. Реально никаких задержек в CSU не нужно, если делаешь несколько шагов для одного слейва, (подряд несколько запросов с ответами) то ему без разницы, паузой для него будет время пока он передаёт данные, а когда с одного слейва переходишь к опросу другого, вызывая PMCR в контроллере, проходит как минимум один цикл в контроллере, по времени его обычно достаточно чтобы обеспечить паузу между посылками чтобы следующий слейв смог распознать посылку. Если по каким-то причинам слейв не может определить посылку, тогда да, нужно использовать в первом шаге send wait, но ни разу такого не видел.

RTU более шустрый чем ASCII, если конечно производитель не заложил в слейв слишком длинный send wait, а ASCII скорее предназначен для реализации в простых языках программирования, которые плохо дружат с разными форматами данных, все сорта бейсика например.


В начало
 Профиль  
 
 Заголовок сообщения: Re: ModBus RTU? SCU
СообщениеДобавлено: Чт дек 17, 2009 10:53 
Не в сети

Регистрация: Пт янв 30, 2009 21:25
Сообщения: 518
Протокол ТРМ138 это стандартный протокол фирмы ОВЕН. ТРМ138 не поддерживают ModBus, а вот ТРОМ201 поддерживат ModBus.
Если надо то есть описание и стандартного протокола ОВЕН
Описание есть и на МОдбас RTU и Модбас ASCII.
Куда выкладывать? Здесь вроде не то место.

А так есть решение и опроса модулей ICPCON по DCON протоколу, и решение опроса ТРМ201 по ModBus RTU.

Пока остановился на общении с ТРМ201 по Модбас РТУ.

_________________
А нам, все равно, и ровно.


В начало
 Профиль  
 
 Заголовок сообщения: Re: ModBus RTU? SCU
СообщениеДобавлено: Чт дек 17, 2009 11:01 
Не в сети

Регистрация: Пт янв 30, 2009 21:25
Сообщения: 518
Вот именно с помощью этой утилиты я на той неделе и выяснял что должно сформироваться, и с помощью трассировкиSCU смотрел что получаем. Но пока сам в контроллере не посчитал контрольную сумму как требует протокол модбас, совпадения с посылкой утилиты не получил.

Раз приходиться считать контрольную сумму самим то с приемом сообщения дела обстоят не очень хорошо, можно конечно откидывать данные по контрольной сумме, и руководствоваться только адресом ответившего, типом функции в ответе, и количеством ожидаемых данных. Но для чистоты лучше потом пересчитывать контрольку. и все ничего в цикле на несколько регистров считается без проблем. Но вот хотел создать внутри функционального блока, а он гад не дает рассчитать индексный регистр командой MOVR внутри FB. Надо пересылать с внешних данных, хотя знаю еще один спосб. Создать стек данных в описанном массиве слов, вот там будет адрес ячейки памяти для реализации коссвенной адресации.
Но это все долго, ест шаги программы, а хотелось крато и быстро.

_________________
А нам, все равно, и ровно.


В начало
 Профиль  
 
 Заголовок сообщения: Re: ModBus RTU? SCU
СообщениеДобавлено: Чт дек 17, 2009 11:13 
Не в сети

Регистрация: Вт фев 12, 2008 11:30
Сообщения: 324
Откуда: Cherepovets
Ярослав, отдаю Вас в надежные руки Олега. Вечером посмотрю что получится :)
И советую - пользуйся подпрограммами SBS(091) а не блоками


В начало
 Профиль  
 
 Заголовок сообщения: Re: ModBus RTU? SCU
СообщениеДобавлено: Чт дек 17, 2009 12:19 
Не в сети

Регистрация: Пт янв 30, 2009 21:25
Сообщения: 518
SBS конечно можно, но не очень явные входа и выхода. А инженеров у нас много и каждому объяснять где что, и за какую веревочку дергать долго. Вот поэтому и пишу на FB.

Еще можно через вызов макросов кажется. MCRO.

О, нашел подсчет контрольной суммы по ModBus ASCII для контроллера, команда SUM+NEG. Далее можно сравнить. И не надо париться с перебором данных в цикле.

_________________
А нам, все равно, и ровно.


В начало
 Профиль  
 
 Заголовок сообщения: Re: ModBus RTU? SCU
СообщениеДобавлено: Чт дек 17, 2009 13:30 
Не в сети

Регистрация: Вт фев 12, 2008 11:30
Сообщения: 324
Откуда: Cherepovets
дак прибор поддерживает RTU или есть ограничения?
Упорно рекомендую этот протокол. Он лучше потому что проще :)


В начало
 Профиль  
 
 Заголовок сообщения: Re: ModBus RTU? SCU
СообщениеДобавлено: Чт дек 17, 2009 14:51 
Не в сети

Регистрация: Пт янв 30, 2009 21:25
Сообщения: 518
Прибор RTu поддерживает. Но изначально хотел ASCII, вот и заморочился.

_________________
А нам, все равно, и ровно.


В начало
 Профиль  
 
 Заголовок сообщения: Re: ModBus RTU? SCU
СообщениеДобавлено: Чт дек 17, 2009 15:55 
Не в сети

Регистрация: Вт фев 12, 2008 11:30
Сообщения: 324
Откуда: Cherepovets
если хочется помучаться, то никто возражать не станет. :) это почетное право любого программиста. Для полноты ощущений тогда лучше сделать оба протокола и выложить в примеры. Уж очень хочется увидеть расчет контрольной суммы в контроллере. Мне оно тоже надо.


В начало
 Профиль  
 
Показать сообщения за:  Сортировка  
Начать новую тему Ответить на тему  [ 57 сообщений ]  На страницу 1, 2, 3, 4  Вперёд

Часовой пояс: UTC + 3 часа (Russia: MSK)


Кто сейчас на конференции

Сейчас этот форум просматривают: в настоящее время на конференции нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Переход:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская документация по phpBB 3