PPER - связь с платой датчиков pPER
===================================

ВЫХОДЫ
Channel 0..63           Считанные значения (входы платы pDIO). Могут принимать значения 0 или 1.
Okta 00..07             Значения 8-ми входов, объедененные в байт
NetAddress              Сетевой адрес 
ComPort                 Com-порт ПЛК, по которому будет осуществляться взаимодействие с платой.
ErrorFlag               Флаг отсутствия связи
ErrorCounter            Счетчик отсутствия связи
Enable                  Разрешение работы:
                                b0 - прием Counter  0..15
                                b1 - прием Counter 15..31
                                b2 - прием Counter 32..47
                                b3 - прием Counter 48..63
                                b4 - прием Channel  0..63
Div                     Делитель значения Counter
Mul                     Множитель значения Counter
Counter 0..63           Счетчики (частотные входы платы)


Данное устройство может работать в COM-потоках.



******************************************************************************

ПРИЛОЖЕНИЕ
==========

Описание контроллера pPer1
===========================

Программа предназначена для обеспечения работы модуля микроконтроллера (MCU) с 
платой ввода информации от высокочастотных датчиков.

MCU вычисляет длительности периода входного сигнала для каждого входа платы.

Диапазон измеряемой частоты: 100 - 10000 Гц

Адреса MCU выставляется dip-переключателями на плате от 0 до 15.


Описание протокола обмена с модулем
===================================


1. Специальные коды:
   $55 - ключ (key) обращения к модулю
   $AA - преффикс (^) передачи байтов, равных значению специальных ко-
         дов, но не являющихся ими.

   Преффикс предназначен для передачи значения $55 в качестве данных,
а не в качестве ключа. Для этого значение $55 кодируется двумя байтами
$AA и $00. Для передачи значения $AA в качестве данных используется 
последовательность $AA$01.


2. Синтаксис обращения к модулю:
   Следующая последовательность символов посылается компьютером (main)
и принимается всеми модулями сети:

  main:   $55, $xx

Значение символа $xx получается суммированием кода модуля (KOD) и  ко-
да команды. После принятия кода модуля каждый модуль сравнивает его со
своим и тем самым определяет, к нему данный запрос или нет. Если  зап-
рос не к нему, то модуль переходит в режим  ожидания  нового запроса.

После приема команды данные передаются по соответствующей схеме для
каждой  команды.

Основные команды:
--------T-------------------------------T-----------------------------¬
¦ 20    ¦key:KOD+$20:                   ¦Принять массив измеренных    ¦
¦       ¦     :x1L:x1H..:x16L:x1H:cc.   ¦периодов (1..16 канал)       ¦
+-------+-------------------------------+-----------------------------+
¦ 40    ¦key:KOD+$40:                   ¦Принять массив измеренных    ¦
¦       ¦     :x1H:x1L..:x16H:x1L:cc.   ¦периодов (17..32 канал)      ¦
+-------+-------------------------------+-----------------------------+
¦ 60    ¦key:KOD+$60:                   ¦Принять массив измеренных    ¦
¦       ¦     :x1H:x1L..:x16H:x1L:cc.   ¦периодов (33..48 канал)      ¦
+-------+-------------------------------+-----------------------------+
¦ 80    ¦key:KOD+$80:                   ¦Принять массив измеренных    ¦
¦       ¦     :x1H:x1L..:x16H:x1L:cc.   ¦периодов (49..64 канал)      ¦
+-------+-------------------------------+-----------------------------+
¦ A0    ¦key:KOD+$A0:                   ¦Принять значения логических  ¦
¦       ¦           :x1..x8:cc.         ¦входов (0..63 канал)         ¦
+-------+-------------------------------+-----------------------------+
¦ EF    ¦key:$EF:........               ¦Дополнительная команда       ¦
¦       ¦               :...            ¦(описание см. ниже)          ¦
L-------+-------------------------------+------------------------------

Измеренное значение периода в милисекундах передаётся в виде
двухбайтового числа (старший первый),


Контрольная сумма cc - это сумма байтов команда или ответа модуля,
умноженная логически на 0xFF:

                   cc = (KOD + x1 + x2 + ... xN) & 0xFF



3. Дополнительные команды

3.1. READ MODULE NAME
   Чтение имени модуля.
     
   in:   <55><EF>AAM(cr)
   out:  !AAPeriod 1.0(cr)

     АА - адрес модуля


