Segnetics

Вернуться   Segnetics > Форум Segnetics > Вопросы о SMH-2G(i)

Вопросы о SMH-2G(i) Здесь всё, что касается работы контроллера SMH-2G(i).

Ответ
 
Опции темы Поиск в этой теме
Старый 27.01.2012, 14:34   #1
Varnak
Новичок
 
Регистрация: Jan 2012
Сообщения: 12
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Реализация протокола СЭТ-4ТМ

Добрый день!
Поставлена задача: считать данные с электросчетчика СЭБ-1ТМ.02Д (использует протокол СЭТ-4ТМ) контроллером SMH-2Gi, полученные данные записать в файл.
В основу организации связи со счетчиком взял код С программы из примера master_hex. В итоге написания программы имею следующее:
1. Фрейм запроса от SMH электросчетчик принимает и обрабатывает: выдает фрейм ответа с корректной контрольной суммой, в случае запроса на запись записывает значение в указанный во фрейме параметр (проверено ПО "Конфигуратор");
2. SMH (программа на С) из фрейма ответа принимает только крайние два байта (а это как раз контрольная сумма).
Проблема: указана в п.2.
Прошу помочь в решении проблемы.
P.S. Множитель таймаута в электросчетчике увеличивал, проблема не решилась.
Varnak вне форума   Ответить с цитированием
Старый 27.01.2012, 16:27   #2
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 085
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Реализация протокола СЭТ-4ТМ

Цитата:
Сообщение от Varnak
Добрый день!
Поставлена задача: считать данные с электросчетчика СЭБ-1ТМ.02Д (использует протокол СЭТ-4ТМ) контроллером SMH-2Gi, полученные данные записать в файл.
В основу организации связи со счетчиком взял код С программы из примера master_hex. В итоге написания программы имею следующее:
1. Фрейм запроса от SMH электросчетчик принимает и обрабатывает: выдает фрейм ответа с корректной контрольной суммой, в случае запроса на запись записывает значение в указанный во фрейме параметр (проверено ПО "Конфигуратор");
2. SMH (программа на С) из фрейма ответа принимает только крайние два байта (а это как раз контрольная сумма).
Проблема: указана в п.2.
Прошу помочь в решении проблемы.
P.S. Множитель таймаута в электросчетчике увеличивал, проблема не решилась.
И почему же это происходит?


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

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 27.01.2012, 19:35   #3
Varnak
Новичок
 
Регистрация: Jan 2012
Сообщения: 12
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Реализация протокола СЭТ-4ТМ

Допускаю мысль, что решение проблемы кроется в определениях функций-членов writeBlock, select, readChar класса rlSerial.
Был ли у кого-нибудь опыт в реализации проприетарного протокола обмена, использую код С программы из примера master_hex?
Varnak вне форума   Ответить с цитированием
Старый 29.01.2012, 17:14   #4
Antistatic
Новичок
 
Регистрация: May 2010
Сообщения: 26
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Реализация протокола СЭТ-4ТМ

1) Убедитесь что Смлоджик неопрашивает этот порт
2) Есть подозрение что в ответе содержатся 0-ли, поэтому программа делит фрейм на отдельные части по правилам строк в СИ. Исправьте реализацию rSerial)))))
3) Для последовательных линий есть параметр RtsDelay (так же иногда обзывается задержкой перед ответом, не путать с таймаутом) имеет смысл поставить её не менее 20 мс .(проверено часто помогает, особенно с овеновскими датчиками опрашиваемыми по Rs - ке)
Antistatic вне форума   Ответить с цитированием
Старый 31.01.2012, 13:05   #5
Varnak
Новичок
 
Регистрация: Jan 2012
Сообщения: 12
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Smile Ответ: Реализация протокола СЭТ-4ТМ

Точно! Стр. 10 из Быстрого старта. Кое-кто мне уже приводил пример про скорость чтения электронных документов...
Исправил, все заработало!
Спасибо за помощь!
Varnak вне форума   Ответить с цитированием
Старый 29.04.2013, 00:56   #6
Vorgehen
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 и из всего что там в ней есть нужен только запрос из перечисленных мной байт.
Vorgehen вне форума   Ответить с цитированием
Старый 07.05.2013, 13:11   #7
Varnak
Новичок
 
Регистрация: Jan 2012
Сообщения: 12
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Реализация протокола СЭТ-4ТМ

Рекомендую Вам использовать пример master_hex , при этом откорректировать функции CheckCRC и CalcCRC (по описанию протокола на URM37 крайний четвертый байт - это контрольная сумма, состоящая из младших 8 бит результата арифметического сложения всех предыдущих байтов).
Varnak вне форума   Ответить с цитированием
Старый 17.05.2013, 16:52   #8
Vorgehen
Member
 
Регистрация: Apr 2013
Адрес: Санкт-Петербург
Сообщения: 34
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Реализация протокола СЭТ-4ТМ

Цитата:
Сообщение от Varnak Посмотреть сообщение
Рекомендую Вам использовать пример master_hex , при этом откорректировать функции CheckCRC и CalcCRC (по описанию протокола на URM37 крайний четвертый байт - это контрольная сумма, состоящая из младших 8 бит результата арифметического сложения всех предыдущих байтов).
Да мне бы и без контрольной суммы жилось хорошо. Потому что запрос всегда одни и те же 4 байта и ответ тоже. Ну а ошибки мониторятся 2 и 3 байт забивается числом FFFF. Я уже юзал этот датчик раньше под явой. Просто теперь надо написать прогу на си под сегнетикс. На досуге займусь.
Vorgehen вне форума   Ответить с цитированием
Ответ

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

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

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

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



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


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