Содержание материала

GPS-Приемник

Драйвер GPS.dll предназначен для чтения информации с GPS-приемника. Драйвер распознает сообщения с астрономическим временем и передает информацию в Ядро Электро. Ядро рассматривает метки времени в качестве эталона и выполняет синхронизацию времени в компьютере.
Подключение драйвера GPS.dll выполняется стандартным способом – создается цепочка модем – соединение – устройство. При сканировании программой GetDev.exe обнаруживается устройство «GPS-приемник» с серийным номером GPSDEV. Про опросе данного устройства создается параметр «Текущие значения/Рассинхронизация» показывающий разность
Время_от_GPS_приемника – Время_компьютера
При каждом чтении данного параметра, значение Время_от_GPS_приемника передается в Ядро Электро.

Работа драйвера проверялась на устройстве Garmin GPS18 LVC.
Предварительно, необходимо выполнить конфигурацию устройства с помощью фирменной программы SNSRCFG.exe (можно скачать с www.garmin.com), в частности
- определить скорость обмена (по умолчанию 4800бод)
- переключить устройство на работу по протоколу NMEA
- удостовериться что от устройства поступают сообщения типа GPRMC.

RMC – pекомендуемый минимум GPS / навигационных данных
1 2 3 4 5 6 7 8 9 10 11 12
$GPRMC, hhmmss.ss, A, 1111.11, N, yyyyy.yy, E, x.x, x.x, ddmmyy, x.x, E *hh

1. Времяфиксацииместоположения (universal time coordinated, UTC)
2. Состояние: А = действительный, V = предупреждение навигационного приёмника
3. Географическая широта местоположения (latitude)
4. Север/Юг (N/S)
5. Географическая долгота местоположения (longitude)
6. Запад/Восток (E/W)
7. Скорость над поверхностью в узлах (SOG in knots)
8. Истинное направление курса в градусах (COG)
9. Дата: dd/mm/yy
10. Магнитное склонение в градусах (magnetic variation)
11. Запад/Восток (E/W)
12. Контрольная сумма строки (обязательно)

Пример сообщения:
$GPRMC,113650.0,A,5548.607,N,03739.387,E,000.01,255.6,210403,08.7,E*69

Драйвер анализирует поля RMC-сообщения ВРЕМЯ (1), ДАТА (9) и СТАТУС (2)

GPS-Приемник в устройствах Работа драйвера проверена также на GPS-приемнике jj-connect (http://www.jj-connect.ru). После установки устройства jj-connect согласно инструкции в операционной системе появляется виртуальный последовательный порт, в рассматриваемом примере COM16 (CP2101 USB to UART Bridge Controller). Проверить работу устройства можно подключив стандартное приложение Гипертерминал на COM16, скорость 4800бод. В окне Гипертерминала можно наблюдать поступление текстовых сообщений от устройства.
Tip. При устойчивом приеме светодиод постоянно горит; нет приема – мигает; устройство не работает – погашен.

Применение мультиплексора MX16

Мультиплексор MX16 используется для организации сьема информации с электронных счетчиков. Для управления устройством в драйверах SLB.dll и EMFFLAG.dll имеются ключи MX16START, MX16STOP. Ключ MX16START действует после коммутации канала связи и перед непосредственным обращением к счетчику и содержит последовательность команд MX16. Каждая команда имеет синтаксис
@c!n[,p1[,p2]]
где c – код команды; n – номер MX16; p1,p2 – параметры команды.
Коды команд соответствуют параметрам консольной строки MX16.exe:
0 – установить новую скорость в последовательном порту.
Пример: @0!45,1200 à MX16 /s1200

1 – запретить изменение скорости
Пример @1!45 à MX16 DISABLESPD /a45

2 – разрешить изменение скорости
Пример @2!45 à MX16 ENABLESPD /a45

3 – установить скорость для COM5
Пример @3!45,5 à MX16 SPEED5 /a45 /f5

4 – установить соединение с MX16
Пример @4!45,5,0 à MX16 CONNECT /a45 /x5 /n0

5 – разорвать соединение с MX16
Пример @5!45 à MX16 CLOSE /a45

6 – установить новую скорость в MX16
Пример @6!45,5,0 à MX16 SPEED /a45 /x5 /b0

7 – жесткий рестарт
Пример @7!45 à MX16 HARDRESET/a45

8 – мягкий рестарт
Пример @8!45 à MX16 SOFTRESET/a45

 

Пример:
MX16START=@3!45,0@4!45,5,0@2!45
Соответствует последовательности команд
MX16 SPEED5 /a45 /f0
MX16 CONNECT /a45 /x5 /n0
MX16 ENABLESPD /a45

Применение преобразователя интерфейсов - коммутатора ПИК-16

Коммутатор ПИК-16 предназначен для организации обмена данными между счетчиками электроэнергии и компьютером по каналам связи (с использованием модема) или непосредственно.
Коммутатор обеспечивает:
- подключение до 16 микропроцессорных электросчетчиков по интерфейсу «токовая петля – 20 мА»)
- организацию канала связи с компьютером по интерфейсу RS-232
- организацию канала связи с компьютером по интерфейсу RS-485
- объединение в локальную сеть с другими коммутаторами по интерфейсу RS-485
Для управления устройством ПИК-16 в некоторых драйверах (см. Табл.1) поддерживается ключ PIK16START. Значением ключа является последовательность команд
@cmd!n,par1,par2
Где
cmd - команда коммутатора C, R или W. Основная команда С – коммутация канала.
n - номер коммутатора (используется при каскадном подключении устройств). Обычно используется широковещательный номер 0
par1,par2 - параметры команды коммутатора. Для команды С:
par1 – номер токовой петли 1,..16
par2 – режим использования: 0 - IEC1107; 1 – IEC1142
Примеры:
PIK16START =@C!0,1,0 - для мультиплексора с широковещательным номером 0 подключить токовую петлю 1 в режиме IEC1107
PIK16START=@R!0,0,0@C!0,5,0 - выдается две команды – вначале чтение конфигурации коммутатора (для справки), затем коммутация токовой петли номер 5. Коды ошибок

#define SES_OK 1 // успешно
#define SES_ERR 0 // неклассифицированная ошибка
#define SES_NOTCOMPL -1 // сессия внезапно прервана извне
#define SES_OTHERDEV -2 // обнаружено другое устройство
#define SES_UNKNSERIAL -3 // невозможно определить серийный номер устройства
#define SES_READOUT -4 // ошибка при разборе READOUT-данных
#define SES_SHUTDOWN -5 // сессия прервана по команде SHUTDOWN
#define SES_PARITY -6 // ошибка четности принимаемых данных
#define SES_BCC -7 // ошибка контр.суммы принимаемых данных
#define SES_NOANSW -8 // устройство не ответило
#define SES_LUCA -9 // ошибка драйвера канала связи
#define SES_UNKNANSW -10 // непонятный ответ устройства
#define SES_MEMORY -11 // ошибка выделения памяти
#define SES_JOBS -12 // список заданий на опрос не завершен
#define SES_LINK -13 // ошибка коммутации канала связи
#define SES_SUPPORT -14 // неподдерживаемый тип устройства (протокола)
#define SES_NACK -15 // устройство отвергло команду
#define SES_NOACK -16 // устройство не выдало подтверждение
#define SES_DATA -17 // в ответе устройства отсутствуют данные
#define SES_DEVERR -18 // устройство вернуло код ошибки
#define SES_FRAME -19 // нарушена структура телеграмы (фрейма)
#define SES_ADDR -20 // указан неправильный адрес (номер) параметра
#define SES_OPENERR -21 // ошибка выполнения процедуры OpenPort()

ВНИМАНИЕ,
протокол связи с устройством м.б. достаточно сложным. Зафиксированная на некотором уровне ошибка вызывает аварийное срабатывание на следующем уровне и т.д.
При анализе, обращайте внимание на всю цепочку сообщений об ошибках. Как правило, наиболее информативное самое первое сообщение.