|
Вопросы о SMH-2G(i) Здесь всё, что касается работы контроллера SMH-2G(i). |
|
Опции темы | Поиск в этой теме |
27.01.2012, 14:34 | #1 |
Новичок
Регистрация: Jan 2012
Сообщения: 12
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Реализация протокола СЭТ-4ТМ
Добрый день!
Поставлена задача: считать данные с электросчетчика СЭБ-1ТМ.02Д (использует протокол СЭТ-4ТМ) контроллером SMH-2Gi, полученные данные записать в файл. В основу организации связи со счетчиком взял код С программы из примера master_hex. В итоге написания программы имею следующее: 1. Фрейм запроса от SMH электросчетчик принимает и обрабатывает: выдает фрейм ответа с корректной контрольной суммой, в случае запроса на запись записывает значение в указанный во фрейме параметр (проверено ПО "Конфигуратор"); 2. SMH (программа на С) из фрейма ответа принимает только крайние два байта (а это как раз контрольная сумма). Проблема: указана в п.2. Прошу помочь в решении проблемы. P.S. Множитель таймаута в электросчетчике увеличивал, проблема не решилась. |
27.01.2012, 16:27 | #2 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 115
Благодарил(а): 15 раз(а)
Поблагодарили:
660 раз(а) в 604 сообщениях
|
Ответ: Реализация протокола СЭТ-4ТМ
Цитата:
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|
27.01.2012, 19:35 | #3 |
Новичок
Регистрация: Jan 2012
Сообщения: 12
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Реализация протокола СЭТ-4ТМ
Допускаю мысль, что решение проблемы кроется в определениях функций-членов writeBlock, select, readChar класса rlSerial.
Был ли у кого-нибудь опыт в реализации проприетарного протокола обмена, использую код С программы из примера master_hex? |
29.01.2012, 17:14 | #4 |
Новичок
Регистрация: May 2010
Сообщения: 26
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Реализация протокола СЭТ-4ТМ
1) Убедитесь что Смлоджик неопрашивает этот порт
2) Есть подозрение что в ответе содержатся 0-ли, поэтому программа делит фрейм на отдельные части по правилам строк в СИ. Исправьте реализацию rSerial))))) 3) Для последовательных линий есть параметр RtsDelay (так же иногда обзывается задержкой перед ответом, не путать с таймаутом) имеет смысл поставить её не менее 20 мс .(проверено часто помогает, особенно с овеновскими датчиками опрашиваемыми по Rs - ке) |
31.01.2012, 13:05 | #5 |
Новичок
Регистрация: Jan 2012
Сообщения: 12
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Реализация протокола СЭТ-4ТМ
Точно! Стр. 10 из Быстрого старта. Кое-кто мне уже приводил пример про скорость чтения электронных документов...
Исправил, все заработало! Спасибо за помощь! |
29.04.2013, 00:56 | #6 |
Member
Регистрация: Apr 2013
Адрес: Санкт-Петербург
Сообщения: 34
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Реализация протокола СЭТ-4ТМ
Ребята помогите сообразить. У меня есть железка работающая по очень простому протоколу. ;4 байта засылается контроллером и 4 читается в ответ. Причём инфу несут только 2 и 3 байты. Перечитал руководство до дыр уже просто нет сил. Не могу сообразить откуда беруться первые 2 байта сообщения. Мне не сумму считать не нужно(точнее нужно,но я не буду). Байты которые нужно отправлять в порт выглядят 0х22, 0х00, 0х00, 0х22. На ява переводил эту строку в бинарный вид и отправлял в порт. А тут что-то не могу сообразить . Думаю присвоить msg[0]=0x22, msg[1]=0, msg[2]=0, msg[3]=0x22. Получится? Или так не делается? Железка ультразвуковой дальномер URM37 и из всего что там в ней есть нужен только запрос из перечисленных мной байт.
|
07.05.2013, 13:11 | #7 |
Новичок
Регистрация: Jan 2012
Сообщения: 12
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Реализация протокола СЭТ-4ТМ
Рекомендую Вам использовать пример master_hex , при этом откорректировать функции CheckCRC и CalcCRC (по описанию протокола на URM37 крайний четвертый байт - это контрольная сумма, состоящая из младших 8 бит результата арифметического сложения всех предыдущих байтов).
|
17.05.2013, 16:52 | #8 |
Member
Регистрация: Apr 2013
Адрес: Санкт-Петербург
Сообщения: 34
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Реализация протокола СЭТ-4ТМ
Да мне бы и без контрольной суммы жилось хорошо. Потому что запрос всегда одни и те же 4 байта и ответ тоже. Ну а ошибки мониторятся 2 и 3 байт забивается числом FFFF. Я уже юзал этот датчик раньше под явой. Просто теперь надо написать прогу на си под сегнетикс. На досуге займусь.
|