Главная   Назад  

Овен СИ8 - счетчик импульсов


Руководство по счетчику СИ8 Овен   Скачать   Объем: 1.3 Mb


§1 Описание счетчика импульсов Овен СИ8

Счетчик импульсов - это одно из старейших и простейших устройств промышленной электроники.
Требования к ним давно известны и реализованы. Фирма которая не в состояние сделать хороший счетчик импульсов вряд ли сможет сделать что-нибудь стоящее.
Фирма Овен выпускает один из лучших отечественных микропроцессорных счетчиков, хотя в нем много существенных недостатков. Я опишу опыт применения этого счетчика, его особенности (недостатки). Полное функциональное описание СИ8 вы можете найти на сайте компании Овен , я не ставлю перед собой цели давать полное описание СИ8.
Если посмотреть по функциональным возможностям, то всё выглядит неплохо. Но, чтобы понять как оно работает давайте сравним СИ8 с другими счетчиками. Для сравнения возьмем счетчики AS-8 Kracht и DA-5 Pepperl+Fuchs. По функциональным возможностям СИ8 превосходит эти счетчики. Остается только вопрос по мелочам: как это работает?

Рис.1 Счетчик импульсов DA-5 Pepperl+Fuchs
DA-5 Pepperl+Fuchs

Рис.2 Счетчик импульсов AS-8 Kracht
AS-8 Kracht

Рис.3 Счетчик импульсов СИ8 Овен
СИ8 Овен

§2 Мелочи не значат ничего - они определяют всё!

§3 Протокол обмена СИ8 Овен по интерфейсу RS-485

Из описанного выше понятно, что наибольший интерес представляет использование этого счетчика в сети RS-485, если бы это было невозможно , я бы назвал этот счетчик никудышным (из-за п.4 §2).

Протокол обмена с приборами Овен   Скачать    Объем: 1285 kb Изменен:30.06.2009

Вторичные приборы-счетчики (slave) соединяются последовательно кабелем типа "витая пара" с волновым сопротивлением 100 Ом. Длина кабеля допустима до 1000 метров. На последнем вторичном приборе необходимо установить терминатор. Терминатор это обычное сопротивление, величина его должна быть равна волновому сопротивлению кабеля (в нашем случае 100 Ом). Он необходим для гашения вторичной волны, которая отражается от конца линии связи, а также для токовой запитки "витой пары".

Рис.6 Построение линии связи RS-485 из руководства по АС3 Овен
Линия связи RS-485 Овен

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

В сети RS-485 по протоколу Овен предусмотрено присутствие только одного ведущего (master), обычно это ПК с программой опроса вторичных приборов. Счетчики СИ8 выступают в роли ведомых (slaves), они не могут сами инициировать обмен данными и ждут команду с запросом данных от ведущего. При получении команды запроса данных от ведущего счетчик посылает затребованные данные в сеть RS-485. При этом счетчик не проверяет свободна или занята линия связи и примерно через 1.1мс выдает ответ. Это является недостатком протокола ОВЕН, так как может вызывать коллизии в линии связи. Кроме этого если использовать конвертер интерфейсов в котором прием/передача данных в линию связи выбирается сигналом RTS (АС3 Овен), то всегда есть вероятность не успеть снять его активность в течении 1мс, что приводит к потере целостности ответа от счетчика. Это особенно чувствительно в ОС XP/Vista где приостановка действий вашей программы может значительно превышать интервал в 1мс. Настройки времени задержки ответа в счетчике СИ8 нет. Для решения этой проблемы используйте конверторы интерфейсов с автоматическим определением приёма/передачи (АС3М Овен). Я решаю эту проблему с АС3 замыканием сигнала TD на RTS перемычкой и не использование сигнала RTS от СОМ порта ПК. С таким соединением АС3 начинает работать как АС3М. Интересно, фирма ОВЕН разработала АС3М таким же способом или нет?

Другой особенностью протокола Овен (и наверно его недостатком) является передача байта информации тетрадно-символьным способом. То есть каждый передаваемый байт разбивается на две тетрады, каждой из которой присваивается заранее определённый символ, эти символы передаются в линию связи. На приёмной стороне для получения байта информации необходимо правильно склеить эти тетрады.

Таблица 1. Принятые ОВЕН символы для отображения тетрад
тетрада символ байт которой перелается по линии связи (код символа)
0000(0h) G 47hex
0001(1h) H 48hex
0010(2h) I 49hex
0011(3h) J 4Ahex
0100(4h) K 4Bhex
0101(5h) L 4Chex
0110(6h) M 4Dhex
0111(7h) N 4Ehex
1000(8h) O 4Fhex
1001(9h) P 50hex
1010(Ah) Q 51hex
1011(Bh) R 52hex
1100(Ch) S 53hex
1101(Dh) T 54hex
1110(Eh) U 55hex
1111(Fh) V 56hex
Недостатком (или точнее сказать неиспользованными возможностями) я здесь считаю то, что при 100% избыточности кода, Овен не использует возможности исправления битовых ошибок, а только предлагает обнаруживать их. При этом адресное пространство символов расположено слитно, без зазоров, тем самым существенно снижая детектирование битовых ошибок (так как байты символов слишком похожи, а вероятность однобитовой ошибки самая высокая!). Современный счетчик должен использовать корректирующее избыточное кодирование.

Кроме набора символов для передачи тетрад предусмотрено два маркера посылок(кадра).
Это символ # (код 23hex) который служит для обозначения начала посылки(кадра) и символ CR( код 0Dhex) концом посылки.

Рис.7 Структура кадра протокола ОВЕН
Структура кадра протокола ОВЕН

Маркер начала кадра - информирует о начале посылки
Адрес прибора в сети - может быть 8 или 11 бит
Бит запроса - равен 1 если это команда запроса параметра счетчика, 0 - если это ответ счетчика
Длина блока данных - указывает размер блока данных в байтах
Идентификатор команды- hash свертка имени параметра
Блок данных- здесь передаются показания счетчика
Контрольная сумма - контрольная сумма пакета без маркеров
Маркер конца кадра - информирует о конце посылки
Таблица 2. Счетчик СИ8 имеет три параметра:
имя параметра hash-свертка тетрада-символ описание команды
DCNT C173hex SHNJ считывание показания счетчика
DSPD 8FC2hex OVSI считывание показания расходомера
DTMR E69Chex UMPS считывание показания таймера

Отсюда видно, что можно только считывать показания счетчика, программировать его параметры по сети нельзя.

К примеру, чтобы прочитать показания счетчика с 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 Алгоритм вычисления контрольной суммы протокола ОВЕН для одного байта
Алгоритм вычисления CRC протокола ОВЕН

Остался вопрос получения hash-свертки имени параметра, подробно описывать я его не буду. ОВЕН конструкторы здесь зачем-то намудрили. Имена параметров прибора записаны ASCII однозначно отображаются в передаваемые тетра-символы в ASCII. Для чего преобразовывать ASCII в ASCII. Например имена параметров DCNT->SHNJ, DSPD-> OVST, DTMR->UMPS всегда отображаются в одно и тоже. Овен предлагает взять имя параметра в ASCII (например DCNT), перевести его в двойчный вид не по кодовой странице ASCII, а кодовой странице придуманной ОВЕН. Потом сделать hash-свертку с полиномом 8F57hex по алгоритму несколько отличающемся от представленного на рис.8 и получившуюся hash-свертку перевести в тетрада-символы по таблице Овен. Чем обусловлен такой ход мысли разработчиков я объяснить не могу, почему сразу не назвать параметры как нужно для вставки в кадр?

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

Таблица 3. Посылка запроса на СИ8 без маркеров
адрес прибора формат запрос DCNT запрос DSPD запрос DTMR
01 hex 0110C173A818 01108FC2D5F5 0110E69C92C6
посылка GHHGSHNJQOHO GHHGOVSITLVL GHHGUMPSPISM
02 hex 0210C173E71A 02108FC29AF7 0210E69CDDC4
посылка GIHGSHNJUNHQ GIHGOVSIPQVN GIHGUMPSTTSK
03 hex 0310C173DDE4 03108FC2A009 0310E69CE73A
посылка GJHGSHNJTTUK GJHGOVSIQGGP GJHGUMPSUNJQ
04 hex 0410C173791E 04108FC204F3 0410E69C43C0
посылка GKHGSHNJNPHU GKHGOVSIGKVJ GKHGUMPSKJSG
05 hex 0510C17343E0 05108FC23E0D 0510E69C793E
посылка GLHGSHNJKJUG GLHGOVSIJUGT GLHGUMPSNPJU
06 hex 0610C1730CE2 06108FC2710F 0610E69C363C
посылка GMHGSHNJGSUI GMHGOVSINHGV GMHGUMPSJMJS
07 hex 0710C173361C 07108FC24BF1 0710E69C0CC2
посылка GNHGSHNJJMHS GNHGOVSIKRVH GNHGUMPSGSSI
08 hex 0810C173CA41 08108FC2B7AC 0810E69CF09F
посылка GOHGSHNJSQKH GOHGOVSIRNQS GOHGUMPSVGPV
09 hex 0910C173F0BF 09108FC28D52 0910E69CCA61
посылка GPHGSHNJVGRV GPHGOVSIOTLI GPHGUMPSSQMH
10 hex 0A10C173BFBD 0A108FC2C250 0A10E69C8563
посылка GQHGSHNJRVRT GQHGOVSISILG GQHGUMPSOLMJ
11 hex 0B10C1738543 0B108FC2F8AE 0B10E69CBF9D
посылка GRHGSHNJOLKJ GRHGOVSIVOQU GRHGUMPSRVPT
12 hex 0C10C17321B9 0C108FC25C54 0C10E69C1B67
посылка GSHGSHNJIHRP GSHGOVSILSLK GSHGUMPSHRMN
13 hex 0D10C1731B47 0D108FC266AA 0D10E69C2199
посылка GTHGSHNJHRKN GTHGOVSIMMQQ GTHGUMPSIHPP
14 hex 0E10C1735445 0E108FC229A8 0E10E69C6E9B
посылка GUHGSHNJLKKL GUHGOVSIIPQO GUHGUMPSMUPR
15 hex 0F10C1736EBB 0F108FC21356 0F10E69C5465
посылка GVHGSHNJMURR GVHGOVSIGJLM GVHGUMPSLKML

Получив ответ от счетчика, в поле данных будут находиться его показания в символьном виде. Переведите символы в двоичные тетрады согласно таблицы 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 разрядов на экране :))
Назад   Главная