Руководство по счетчику СИ8 Овен   Скачать   Объем: 1.3 Mb
Рис.1 Счетчик импульсов DA-5 Pepperl+Fuchs
Рис.2 Счетчик импульсов AS-8 Kracht
Рис.3 Счетчик импульсов СИ8 Овен
Рис.4 Реальная характеристика расходомера
Рис.5 Простейшая аппроксимация характеристики расходомера
Протокол обмена с приборами Овен   Скачать    Объем: 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М таким же способом или нет?
Другой особенностью протокола Овен (и наверно его недостатком) является передача байта информации тетрадно-символьным способом. То есть каждый передаваемый байт разбивается на две тетрады, каждой из которой присваивается заранее определённый символ, эти символы передаются в линию связи. На приёмной стороне для получения байта информации необходимо правильно склеить эти тетрады.
тетрада | символ | байт которой перелается по линии связи (код символа) |
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 |
Кроме набора символов для передачи тетрад предусмотрено два маркера посылок(кадра).
Это символ # (код 23hex) который служит для обозначения начала посылки(кадра) и символ CR( код 0Dhex) концом посылки.
Рис.7 Структура кадра протокола ОВЕН
имя параметра | 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.
Рис.8 Алгоритм вычисления контрольной суммы протокола ОВЕН для одного байта
Остался вопрос получения hash-свертки имени параметра, подробно описывать я его не буду. ОВЕН конструкторы здесь зачем-то намудрили. Имена параметров прибора записаны ASCII однозначно отображаются в передаваемые тетра-символы в ASCII. Для чего преобразовывать ASCII в ASCII. Например имена параметров DCNT->SHNJ, DSPD-> OVST, DTMR->UMPS всегда отображаются в одно и тоже. Овен предлагает взять имя параметра в ASCII (например DCNT), перевести его в двойчный вид не по кодовой странице ASCII, а кодовой странице придуманной ОВЕН. Потом сделать hash-свертку с полиномом 8F57hex по алгоритму несколько отличающемся от представленного на рис.8 и получившуюся hash-свертку перевести в тетрада-символы по таблице Овен. Чем обусловлен такой ход мысли разработчиков я объяснить не могу, почему сразу не назвать параметры как нужно для вставки в кадр?
Вы можете не использовать все эти преобразования для работы с СИ8, необходимо только знать какую посылку нужно послать для каждого адреса прибора.
Это легче сделать вручную на листке бумаге чем писать алгоритмы всех этих обработок.
Можете воспользоваться таблицей 3, где посылки посчитаны для первых 15 адресов.
адрес прибора | формат | запрос 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