Овен СИ8 — счетчик импульсов
СИ-8 имеет только две точки привязки характеристики (F и di). Поэтому он отображает данные только по прямой линии, которая начинается со смещения di (синие линии на рис.5 при di=0 см. ниже).
Рис.5 Простейшая аппроксимация характеристики расходомера
§3 Протокол обмена СИ8 Овен по интерфейсу RS-485
Из описанного выше понятно, что наибольший интерес представляет использование этого счетчика в сети RS-485, если бы это было невозможно , я бы назвал этот счетчик никудышным (из-за п.4 §2).
Протокол обмена с приборами Овен   Скачать    Объем: 1285 kb Изменен:30.06.2009
Вторичные приборы-счетчики (slave) соединяются последовательно кабелем типа «витая пара» с волновым сопротивлением 100 Ом. Длина кабеля допустима до 1000 метров. На последнем вторичном приборе необходимо установить терминатор. Терминатор это обычное сопротивление, величина его должна быть равна волновому сопротивлению кабеля (в нашем случае 100 Ом). Он необходим для гашения вторичной волны, которая отражается от конца линии связи, а также для токовой запитки «витой пары».
Рис.6 Построение линии связи RS-485 из руководства по АС3 Овен
Обратите внимание на то, что витая пара должна подходить и уходить от контактов вторичных приборов, а не так, как это нарисовано в руководстве Овен, где приборы соединяются отводами проводов от вторичных приборов к линии связи (это технически не грамотно).
В сети RS-485 по протоколу Овен предусмотрено присутствие только одного ведущего (master), обычно это ПК с программой опроса вторичных приборов. Счетчики СИ8 выступают в роли ведомых (slaves), они не могут сами инициировать обмен данными и ждут команду с запросом данных от ведущего. При получении команды запроса данных от ведущего счетчик посылает затребованные данные в сеть RS-485. При этом счетчик не проверяет свободна или занята линия связи и примерно через 1.1мс выдает ответ. Это является недостатком протокола ОВЕН, так как может вызывать коллизии в линии связи. Кроме этого если использовать конвертер интерфейсов в котором прием/передача данных в линию связи выбирается сигналом RTS (АС3 Овен), то всегда есть вероятность не успеть снять его активность в течении 1мс, что приводит к потере целостности ответа от счетчика. Это особенно чувствительно в ОС XP/Vista где приостановка действий вашей программы может значительно превышать интервал в 1мс. Настройки времени задержки ответа в счетчике СИ8 нет. Для решения этой проблемы используйте конверторы интерфейсов с автоматическим определением приёма/передачи (АС3М Овен). Я решаю эту проблему с АС3 замыканием сигнала TD на RTS перемычкой и не использование сигнала RTS от СОМ порта ПК. С таким соединением АС3 начинает работать как АС3М. Интересно, фирма ОВЕН разработала АС3М таким же способом или нет?
Другой особенностью протокола Овен (и наверно его недостатком) является передача байта информации тетрадно-символьным способом. То есть каждый передаваемый байт разбивается на две тетрады, каждой из которой присваивается заранее определённый символ, эти символы передаются в линию связи. На приёмной стороне для получения байта информации необходимо правильно склеить эти тетрады.
Кроме набора символов для передачи тетрад предусмотрено два маркера посылок(кадра).
Это символ # (код 23hex) который служит для обозначения начала посылки(кадра) и символ CR( код 0Dhex) концом посылки.
Рис.7 Структура кадра протокола ОВЕН
- ALEn — 8 битный или 11 битный формат адреса прибора
- Adr — адрес прибора в сети (он должен быть уникальный)
- SPd — скорость обмена в сети RS-485
Перед началом работы в сети нужно выставить параметры счетчика СИ8
Отсюда видно, что можно только считывать показания счетчика, программировать его параметры по сети нельзя.
К примеру, чтобы прочитать показания счетчика с Adr=4, необходимо послать в сеть следующую посылку:
#GKHGSHNJNPHU(CR)
в hex формате при преобразования по алгоритму Овен(таблица 1):
23 04 10 C1 73 79 1E 0D
В ответ получим (если счетчик по нулям) ответ:
#GKGKSHNJGGGGGGGGRSTL(CR)
в hex формате после преобразования по алгоритму Овен(таблица 1):
23 04 04 C1 73 00 00 00 00 BC D5 OD
маркеры # и CR не преобразуются по таблице 1.
Для формирования запроса и чтения посылки необходимо вычислять контрольную сумму. Как я уже говорил для вычисления контрольной суммы берется вся посылка за исключением маркеров и контрольной суммы(естественно) и производится её побайтная свертка с полиномом 8F57hex по алгоритму изображенному на рис.8.
Рис.8 Алгоритм вычисления контрольной суммы протокола ОВЕН для одного байта
Текстовое описание алгоритма:
Остался вопрос получения hash-свертки имени параметра, подробно описывать я его не буду. ОВЕН конструкторы здесь зачем-то намудрили. Имена параметров прибора записаны ASCII однозначно отображаются в передаваемые тетра-символы в ASCII. Для чего преобразовывать ASCII в ASCII. Например имена параметров DCNT->SHNJ, DSPD-> OVST, DTMR->UMPS всегда отображаются в одно и тоже. Овен предлагает взять имя параметра в ASCII (например DCNT), перевести его в двойчный вид не по кодовой странице ASCII, а кодовой странице придуманной ОВЕН. Потом сделать hash-свертку с полиномом 8F57hex по алгоритму несколько отличающемся от представленного на рис.8 и получившуюся hash-свертку перевести в тетрада-символы по таблице Овен. Чем обусловлен такой ход мысли разработчиков я объяснить не могу, почему сразу не назвать параметры как нужно для вставки в кадр?
Вы можете не использовать все эти преобразования для работы с СИ8, необходимо только знать какую посылку нужно послать для каждого адреса прибора. Это легче сделать вручную на листке бумаге чем писать алгоритмы всех этих обработок.
Можете воспользоваться таблицей 3, где посылки посчитаны для первых 15 адресов.
Получив ответ от счетчика, в поле данных будут находиться его показания в символьном виде. Переведите символы в двоичные тетрады согласно таблицы 1. Получившееся двоичное число нужно перевести в показания счетчика согласно формату данных определённых фирмой ОВЕН.
Для DCNT
Имеет знак (S), десятичный порядок (Exponent) указывающий положение десятичной точки
(0 для целого числа, 1 для числа с десятыми долями и т.п.) и ненормализованную мантиссу (Mantissa).
S — старший бит
Exponent — 3 следующих бита
Mantissa — остальные биты (длина мантиссы определяется размером поля данных)
Суммарная длина должна составлять целое число байтов
числа можно вычислить, как
(-1)^S * 10^(-Exponent) * Mantissa
Мантисса может выражаться как в двоичном, так и в двоично-десятичном виде.
Например:
-10.38 выражается как 0xA01038 при двоично-десятичном представлении мантиссы
или как 0xA40E, то есть на байт короче, при ее двоичном представлении.
Для DSPD аналогично DCNT только без бита знака
Для DTMR
0-й байт – сотые доли секунды;
1-й байт – секунды;
2-й байт – минуты;
3, 4, 5-й байты – часы.
§4 Заключение
Как я писал в начале статьи СИ8 один из лучших отечественных счетчиков, и это не насмешка.
СИ8 был выпущен в 90-е годы и в то время был довольно продвинутым. Он более 10 лет находится в эксплуатации. Фирма Овен несколько запаздывает с модернизацией счетчика и эту статью я писал в надежде что они учтут пожелание потребителей при разработки нового счетчика. Насколько мне известно к выпуску готовиться счетчик СИ30 ОВЕН(надеюсь у него не будет 30 разрядов на экране :)) Назад   Главная