WWW.MASH.DOBROTA.BIZ
БЕСПЛАТНАЯ  ИНТЕРНЕТ  БИБЛИОТЕКА - онлайн публикации
 

«с системой верхнего уровня ЗАО «ТЕРМОТРОНИК» 193318, Россия, Санкт-Петербург, ул. Ворошилова, д.2 Телефон, факс: +7 (812) 326-10-50 Сайт ЗАО «ТЕРМОТРОНИК»: Служба ...»

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

расходомера «ПитерФлоу РС»

с системой верхнего уровня

ЗАО «ТЕРМОТРОНИК»

193318, Россия, Санкт-Петербург, ул. Ворошилова, д.2

Телефон, факс: +7 (812) 326-10-50

Сайт ЗАО «ТЕРМОТРОНИК»: www.termotronic.ru

Служба технической поддержки: support@termotronic.ru

тел. 8-800-333-10-34

Питерфлоу РС Описание протокола обмена с.2

Содержание

Введение

Общие сведения

1.1 Адаптеры интерфейсов

1.2 Уровни протокола обмена

1.3 Логический уровень

1.3.1 Коммуникационный уровень

1.3.2 ADU «Modbus ASCII»

ADU «Modbus TCP»

Реализованные функции протокола

Функция Modbus 03 (0x03 hex) (Read Holding Registers) и 04 (0x04 hex) (Read Input Registers)... 7 2.1 Функция Modbus 06 (0x06 hex) (Write Single Register)

2.2 Функция Modbus 16 (0x10 hex) (Write Multiple Registers)

2.3 Функция Modbus 20 (0x14 hex) (Read File Record)

2.4 Организация доступа к данным

Используемые типы данных и условные обозначения

3.1 Регистровый доступ и характеристики параметров

3.2 Порядок хранения и передачи байт данных

3.3 Чтение/запись текущих и настроечных параметров

3.4 Организация архивов и считывание архивных данных

3.5 Интерпретация минутного, часового и суточного архивов

3.5.1 Интерпретация архива событий

3.5.2 4 Карта переменных

Приложение 1. Функция расчета контрольной суммы LRC



Приложение 2. Функции преобразования в ASCII и обратно

Приложение 3. Коды ошибок, возвращаемые прибором

Приложение 4. Функция расчета контрольной суммы Crc32

Приложение 5. Функции преобразования в BCD и обратно

Приложение 6. Оптимизация алгоритма считывания архивов

Питерфлоу РС Описание протокола обмена с.3 История редактирования 26.07.2012 создана редакция 1.00;

05.05.2013 добавлено Приложение 6 (редакция 1.01) .

01.08.2013 добавлено описание изменений для расходомера версии ПО 3.12 .

Питерфлоу РС Описание протокола обмена с.4 1 Введение Общие сведения 1.1 Расходомер «ПитерФлоу РС» (далее Прибор) позволяет получать текущие и архивные параметры, а также предоставляет доступ к чтению и изменению настроечных параметров через последовательный интерфейс. Физический уровень интерфейса выполнен в соответствии со стандартом LIN (Local Interconnect Network), используется внутренний коммуникационный протокол. Параметры настроек: 19200 бит/сек., 8 бит данных, 1 стоповый, контроль четности отсутствует .

1.2 Адаптеры интерфейсов Соединение прибора с системой верхнего уровня осуществляется через интеллектуальные адаптеры, которые являются конверторами интерфейсов физического уровня и коммуникационного протокола. Со стороны системы верхнего уровня они имеют различные физические интерфейсы и реализации коммуникационного протокола передачи данных, а со стороны прибора всегда имеют физический интерфейс LIN и реализуют внутренний коммуникационный протокол .

Существуют адаптеры следующих физических интерфейсов:

EthernetПрибор. Позволяет подключить до двух расходомеров «ПитерФлоу РС». В сети Ethernet реализует сервер коммуникационного протокола «Modbus TCP» (TCP порт 502 – расходомер №1, порт 503 – расходомер №2). Адаптер позволяет осуществлять независимый одновременный опрос подключенных приборов .

Рисунок 1: Адаптер EthernetПрибор RS-232Прибор. Позволяет подключить один расходомер к компьютеру или модему. Не допускается использование в сети, разрешено подключение только типа точка-точка. Используется последовательный асинхронный полудуплексный интерфейс. Параметры настроек: 19200 бит/сек., 8 бит данных, 1 стоповый, контроль четности отсутствует. Со стороны RS-232 реализует коммуникационный протокол «Modbus ACSII» .



Рисунок 2: Адаптер RS-232Прибор

1.3 Уровни протокола обмена Этот раздел содержит краткие сведения из стандарта «Modbus». Подробную информацию можно подучить из документов, размещенных на сайте www.modbus.org:

Modbus Application Protocol;

Modbus over serial line;

MODBUS Messaging on TCP/IP Implementation Guide .

Питерфлоу РС Описание протокола обмена с.5 1.3.1 Логический уровень Логический уровень протокола отвечает за способ доступа к данным. Протокол «Modbus» определяет понятие PDU (Protocol Data Unit), независимое от используемого коммуникационного протокола. PDU содержит 2 поля: код функции (длина 1 байт) и данные (длина не более 252 байт). Подробное описание логического уровня приведено в разделе Реализованные функции протокола .

Рисунок 3: Состав PDU 1.3.2 Коммуникационный уровень Коммуникационный уровень протокола отвечает за доставку передаваемой информации между двумя совместимыми «Modbus». В различных коммуникационных протоколах PDU дополняется полями сетевой адрес, контрольная сумма, заголовок и т.д., образуя при этом, понятие ADU (Application Data Unit). Дополнительные поля требуются для адресации, идентификации и контроля целостности данных .

Независимо от коммуникационного протокола прибор работает только в режиме «ведомый». Это означает, что прибор может выполнить посылку только в ответ на запрос системы верхнего уровня. Время ответа прибора не превышает 500 мс. В случае отсутствия ответа от прибора система верхнего уровня должна выполнить повтор запроса .

ADU «Modbus ASCII»

В случае использования коммуникационного протокола «Modbus ASCII» PDU дополняется полями сетевой адрес и контрольная сумма .

Рисунок 4: ADU для «Modbus ASCII»

Сетевой адрес служит для адресации прибора в сети. Контрольная сумма служит для проверки целостности данных. Передающее устройство вычисляет контрольную сумму над всеми полями посылки, и затем результат вычисления добавляет в конец посылки. Принимающее устройство, получив всю посылку, вычисляет контрольную сумму кадра для всех байтов сообщения, исключая байты контрольной суммы. В случае если принятая и вычисленная контрольные суммы равны, принимается решение о достоверности принятого кадра. В противном случае кадр считается недостоверным. Если прибор получает недостоверный кадр, он его игнорирует и не посылает каких-либо ответных сообщений. Это означает, что система верхнего уровня не получит ответа в течение ожидаемого времени и должна сделать повтор запроса .

Если же факт получения недостоверной посылки обнаружен системой верхнего уровня, то она должна выполнить повтор запроса .





При передаче исходные двоичные данные кодируются. Начало и конец сообщения помечены специальными маркерами. Началом сообщения всегда является символ двоеточия «:» (0x3A в шестнадцатеричном представлении). Концом сообщения всегда является пара символов «возврат каретки» (CR) и «перевод строки» (LF) (0x0D и 0x0A Питерфлоу РС Описание протокола обмена с.6 соответственно в шестнадцатеричном представлении). Каждый байт двоичного исходного сообщения передается в виде пары символов. Например, значение 27 (0x1B в шестнадцатеричном представлении) будет представлено как пара символов ‘1’ (0x31

- символьное представление старших 4-х битов) и ‘B’ (0x42 - символьное представление младших 4-х битов). Допустимые символы для передачи - это шестнадцатеричные символы 0-9, A-F. В качестве функции расчета контрольной суммы используется Longitudinal Redundancy Checking (LRC). Пример функции расчета LRC приведен в Приложении 1, а описание генерации контрольной суммы может быть найдено в документации на сайте www.modbus.org. Примеры функций перекодировки из двоичного представления в ASCII и из ASCII в двоичное представление приведены в Приложении 2. Над двоичным содержимым буфера передачи сначала выполняется расчет контрольной суммы. Затем двоичные данные вместе с полем контрольной суммы подвергаются преобразованию в ASCII и затем результат дополняется символами начала и конца кадра .

ADU «Modbus TCP»

В случае использования коммуникационного протокола «Modbus TCP» PDU дополняется заголовком MBAP (MODBUS Application Protocol), служащим для идентификации .

Рисунок 5: ADU для «Modbus TCP»

MBAP содержит следующие поля:

Идентификатор запроса (длина 2 байта). Заполняется системой верхнего уровня .

Копируется прибором из запроса при выполнении ответа;

Идентификатор протокола (длина 2 байта). Должен быть равен 0;

Длина сообщения в байтах (длина 2 байта). Должна быть равна длине PDU + 1;

Сетевой адрес прибора (длина 1 байт). Заполняется системой верхнего уровня .

При выполнении ответа прибором заполняется в соответствии с его настройкой .

Двухбайтные поля заголовка передаются в порядке сначала старший, затем младший байт .

Питерфлоу РС Описание протокола обмена с.7 2 Реализованные функции протокола Функция Modbus 03 (0x03 hex) (Read Holding Registers) и 04 (0x04 hex) (Read 2.1 Input Registers) Функции предназначены для чтения двоичного содержимого шестнадцатиразрядных регистров прибора. Отличие функции 0x04 от 0x03 в том, что она применяется только для чтения параметров, недоступных для записи.

В общем виде структура запроса и ответа имеет следующий вид:

PDU запроса:

Начальный Начальный Количество Количество Функция адрес адрес регистров регистров 0x03/0x04 (старший байт) (младший байт) (старший байт) (младший байт) Поле Data PDU содержит поля «Начальный адрес», указывающий с какого регистра начинать чтение, и «Количество регистров», указывающее, сколько регистров следует прочитать .

PDU ответа в случае выполнения без ошибок:

Количество Функция 1-ый регистр 1-ый регистр Байты регистров байт данных в (старший байт) (младший байт) 2,3…N 0x03/0x04 ответе В случае успешного выполнения в ответе присутствует содержимое запрошенных регистров. Поле «Количество байт данных в ответе» будет равно количеству запрошенных регистров, умноженному на два. Прочитанное содержимое регистров начинается с байта, следующего за полем «Количество байт данных в ответе» .

PDU ответа при возникновении ошибки:

Функция 0x83/0x84 Код ошибки (установлен старший бит) Для информирования ведущего о том, что операция не выполнена или выполнена с ошибкой, прибор устанавливает старший бит поля «Функция» в ответе. Байт, следующий за полем «Функция», будет содержать код ошибки (значения кодов ошибок приведены в Приложении 3) .

2.2 Функция Modbus 06 (0x06 hex) (Write Single Register) Функция предназначена для записи двоичного содержимого одного шестнадцатиразрядного регистра прибора .

PDU запроса:

Функция Адрес Адрес Значение Значение (старший байт) (младший байт) (старший байт) (младший байт) 0x06

–  –  –

3 Организация дост упа к данным Используемые типы данных и условные обозначения 3.1 unsigned char –беззнаковое целое число (8 бит);

signed char –знаковое целое число (8 бит);

unsigned short –беззнаковое целое число (16 бит);

signed short –знаковое целое число (16 бит);

unsigned long –беззнаковое целое число (32 бита);

signed long –знаковое целое число (32 бита);

unsigned __int64 –беззнаковое целое число (64 бита);

signed __int64 –знаковое целое число (64 бита);

float – вещественное число одинарной точности (32 бита) с плавающей запятой, соответствующее стандарту «IEEE 754»;

double – вещественное число двойной точности (32 бита) с плавающей запятой, соответствующее стандарту «IEEE 754»;

R/O – доступ только на чтение;

R/W – доступ на чтение и запись (безусловный);

PAS - доступ на чтение, доступ на запись при предъявлении пароля;

KEY - доступ на чтение, доступ на запись при наличии электронного ключа;

JUM - доступ на чтение, доступ на запись при установленной перемычке «Защита»;

KEY+JUM - доступ на чтение, доступ на запись при наличии электронного ключа и при установленной перемычке «Защита»;

3.2 Регистровый доступ и характеристики параметров Доступ к текущим и настроечным параметрам прибора реализован через функции чтения и записи регистров – переменных, имеющих тип шестнадцатиразрядное беззнаковое целое. При организации регистрового доступа делается допущение, что все многообразные структуры данных располагаются в памяти, элементарной ячейкой которой является один шестнадцатиразрядный регистр типа «беззнаковое целое» .

Физически данные могут находиться в совершенно разных участках памяти прибора и даже в разных типах памяти (оперативная, энергонезависимая и т.д.), но для системы верхнего уровня данные «выглядят» как единое адресное пространство. В этом случае все доступные данные можно представить как массив шестнадцатиразрядных регистров, каждый из которых характеризуется номером в массиве (далее адресом) .

Каждый параметр прибора может занимать часть регистра, весь регистр целиком или несколько регистров. Таким образом, параметр характеризуется собственным типом и расположением внутри массива регистров .

Доступ к архивам организован через стандартные функции чтения файлов, предусмотренные протоколом «Modbus» .

3.3 Порядок хранения и передачи байт данных Для чтения и записи регистров в стандарте «Modbus» предусмотрены специальные функции, которые оперируют содержимым шестнадцатиразрядных регистров. Эти функции предполагают, что прибор хранит данные только типа шестнадцатиразрядное беззнаковое целое и ничего не «знают» о тех типах данных, которыми действительно представлены параметры прибора. Таким образом, получается, что в приборе данные хранятся в некоем исходном формате, а передаются по сети в виде набора шестнадцатиразрядных регистров. При передаче данных, чей размер в исходном формате превышает 16 бит (long, float, double и т.д.), используются несколько последовательных регистров. При этом младшие слова передаются в первую очередь, старшие - в последнюю. Т.о., для преобразования к порядку байт, естественному для Питерфлоу РС Описание протокола обмена с.11

–  –  –

Регистр Регистр A0 Регистр A1 Регистр A2 Регистр A3 Порядок передачи первый последний Байт B1 B0(LSB) B3 B2 B5 B4 B7(MSB) B6 Чтение/запись текущих и настроечных параметров 3.4 Чтение/запись текущих и настроечных параметров производится при помощи функций чтения/записи регистров (функции чтения 0x03, 0x04, функции записи 0x06, 0x10). Параметры, доступные только на чтение, могут быть прочитаны только функцией 0x04. Параметры, доступные как на чтение, так и на запись, могут быть прочитаны обеими функциями по одинаковым адресам. Распределение переменных в адресном пространстве описано в разделе Карта переменных .

3.5 Организация архивов и считывание архивных данных

Прибор содержит архивы следующих типов:

События;

Минутный архив;

Часовой архив;

Суточный архив;

Архивы имеют кольцевую структуру, т.е. при полном заполнении архива новые записи пишутся на место самых старых .

Архивы хранятся в приборе в виде файлов. Каждый файл содержит дескриптор файла (в первой записи), а также записи, представляющие одно событие или один «временной срез» данных. Для чтения содержимого архивов используется функция чтения файлов (функция 0x14) .

Каждый файл в первой записи (номер 0) хранит дескриптор файла. Остальные записи представляют данные файла.

Дескриптор файла содержит:

Длина первой записи (длина дескриптора, 2 байта);

Питерфлоу РС Описание протокола обмена с.12 Тип первой записи (тип дескриптора, 2 байта, всегда равен 1);

Длина файла в количестве записей (без учета первой записи, 2 байта);

Длина каждой записи (кроме первой записи, 2 байта);

Тип содержимого файла (2 байта). Может принимать значения: 4 – файл событий, 3 или 5 – файл измерительного архива (минутный, часовой или суточный) .

Алгоритм доступа к файлам:

1. Чтение записи с номером 0 из файла с номером 1 (получение дескриптора файла). Если прибор вернул ошибку с кодом 2, значит, файлов больше нет;

2. Анализ дескриптора на предмет длины основных записей и длины файла;

3. Чтение оставшихся записей файла и их интерпретация;

4. Повторение пунктов 1-3 для следующего файла .

Каждая архивная запись, независимо от типа файла, имеет следующую структуру:

Номер записи. Счетчик, который увеличивается на единицу при формировании новой записи внутри данного файла. Имеет тип unsigned __int64;

Массив из 52 байт. В нем размещается структура данных архивной записи (см .

Интерпретация архивов);

Контрольная сумма записи. Имеет тип unsigned long и рассчитывается по алгоритму Crc32 (Проверка целостности данных должна выполняться над всем блоком данных длиной 64 байта включая контрольную сумму. Функция проверки контрольной суммы в Приложении 4) .

Алгоритм оптимизированного считывания архива приведен в Приложении 6 .

3.5.1 Интерпретация минутного, часового и суточного архивов

Минутный архив ведется всегда. Часовой и суточный архивы ведутся:

для приборов с версией ПО 3.07 только при наличии часов реального времени;

для приборов с версией ПО 3.12 - всегда .

Наличие часов реального времени можно определить по значению переменной «Регистр состояния прибора» (см. Карта переменных) .

Минутный архив хранится в файле номер 6, часовой в файле номер 7, суточный в файле номер 8 .

Необходимо прочитать все записи файла, выстроить их по признаку нарастания значения поля «Номер записи» и интерпретировать те записи, у которых сходится контрольная сумма .

Архивная запись содержит следующие поля:

Интегральное время наработки на момент записи (минут). Тип unsigned long;

Показания часов реального времени на момент архивирования. Если плата не имеет часов реального времени, то анализировать данное поле не следует .

Значение представлено в виде массива unsigned char из 6-ти элементов .

Каждый байт содержит число в формате BCD (функции преобразования представлены в Приложении 5). Порядок следования: секунда, минута, час, день, месяц, год;

Интегральное значение V+ (м3). Тип double;

Интегральное значение V- (м3). Тип double;

Мгновенное значение расхода на момент архивирования (м3/ч). Тип float;

Питерфлоу РС Описание протокола обмена с.13 Коды ошибок. Тип unsigned long. Коды ошибок и наименования ошибок описаны в руководстве по эксплуатации на прибор. Младшие 12 бит (биты 0хранят описание самой серьезной ошибки за интервал архивирования .

При этом биты 0-7 хранят значение ошибки, биты 8-11 – расширение ошибки .

Ненулевое значение в битах 0-7 означает наличие ошибки. В случае наличия ошибки следует проанализировать расширение ошибки (биты 8-11). Код ошибки должен быть представлен в виде «X.Y», где X - значение ошибки в шестнадцатеричном представлении, расширение ошибки в Y шестнадцатеричном представлении. Если расширение ошибки равно 0, то код ошибки представляется только значением ошибки в виде «X». Старшие 2 байта (биты 16-31) хранят признаки наличия ошибок и флаги состояний прибора. Установленный бит означает наличие ошибки или установленного флага.

Возможны сочетания следующих значений:

o (0x00000001 30) – должен отображаться как «RTC»;

o (0x00000001 29) – должен отображаться как «MG»;

o (0x00000001 28) – должен отображаться как «W»;

o (0x00000001 27) – должен отображаться как «IN»;

o (0x00000001 26) – должен отображаться как «IC»;

o (0x00000001 25) – должен отображаться как «MX»;

o (0x00000001 24) – должен отображаться как «OF»;

o (0x00000001 20) – должен отображаться как «GR»;

o (0x00000001 19) – должен отображаться как «WC»;

o (0x00000001 18) – должен отображаться как «FR»;

o (0x00000001 17) – должен отображаться как «RR»;

o (0x00000001 16) – должен отображаться как «K» .

Интегральное время наработки при ошибках на момент записи (минут). Тип unsigned long;

Минимальное значение расхода за интервал архивирования (м3/ч). Тип float;

Максимальное значение расхода за интервал архивирования (м3/ч). Тип float;

3.5.2 Интерпретация архива событий Архив событий может содержать более одного файла. Поэтому следует прочитать все записи всех файлов архива событий. Затем записи, у которых сходится контрольная сумма отсортировать по времени и затем интерпретировать .

Архивная запись содержит следующие поля:

Тип события. Тип unsigned char. Определяет тип произошедшего события .

Может принимать следующие значения:

o 0x00 - Нет события;

o 0x02 – Изменение параметра;

o 0x03 – Вкл. питания;

o 0x04 – Перезапуск;

o 0x10 - Ошибка стека;

o 0x11 – Ошибка измерения;

o 0x12 – Ошибка часов;

o 0x13 – Первый запуск;

Интегральное время наработки на момент записи (минут). Тип unsigned long;

Внешняя временная метка. Тип signed long. Представляет количество секунд, прошедшее от 01.01.1970 00:00:00;

Показания часов реального времени на момент архивирования. Если плата не имеет часов реального времени, то анализировать данное поле не следует .

Значение представлено в виде массива unsigned char из 6-ти элементов .

Каждый байт содержит число в формате BCD (функции преобразования Питерфлоу РС Описание протокола обмена с.14

–  –  –

Переменная «Регистр состояния прибора» содержит информацию о наличии на плате часов реального времени. Установленный младший бит говорит о наличии часов на плате .

Переменную «Код ошибки» следует интерпретировать так же, как описано для одноименного поля минутного архива .

Переменная «Уровень доступа» позволяет прочитать текущий уровень доступа к изменению параметров. Три младших бита кодируют наличие доступа. Бит 0 – PAS, бит 1 – KEY, бит 2 – JUM .

Переменная «Авторизация» необходима для передачи пароля при попытке изменения параметра, требующего доступа по паролю. Если текущий уровень доступа менее уровня PAS, перед изменением параметра система верхнего уровня должна выполнить запись в переменную «Авторизация». В байты 015 массива авторизации копируется строковый пароль (с завершающим нулем на конце), в поле временной метки копируется значение локального времени (в формате количества секунд, прошедших с 01.01.1970 00:00:00). Переменная «Авторизация» должна быть записана единым массивом (20 байт) .

Переменные «Тип выхода Fх» могут принимать значения:

Расход прямой и обратный: (0 | (07) | (16) | (15));

Расход прямой и обратный, инверсный выход: (0 | (17) | (16) | (15));

Расход прямой: (0 | (07) | (06) | (15));

Расход прямой, инверсный выход: (0 | (17) | (06) | (15));

Расход обратный: (0 | (07) | (16) | (05));

Расход обратный, инверсный выход: (0 | (17) | (16) | (05));

Компаратор: (1 | (07));

Компаратор, инверсный выход: (1 | (17));

Ошибка: (2 | (07)) .

Питерфлоу РС Описание протокола обмена с.17 Приложение 1. Функция расчета контрольной суммы LRC

Пример функции расчета контрольной суммы кадра на языке СИ:

unsigned char Lrc(unsigned char * pSrc, int length) { unsigned char locLrc=0;

for(int i=0;ilength;i++) locLrc += *(pSrc+i);

return locLrc = ~locLrc + 1;

} где:

pSrc – указатель на буфер, содержащий сообщение;

length – количество байт данных, для которых требуется произвести подсчет LRC .

Питерфлоу РС Описание протокола обмена с.18 Приложение 2. Функции преобразования в ASCII и обратно Ниже приведены примеры на языке СИ функций преобразования из ASCII формата в двоичный и обратного преобразования из двоичного в ASCII .

const unsigned char CharToBin[23]={0,1,2,3,4,5,6,7,8,9, 0,0,0,0,0,0,0, 10,11,12,13,14,15};

const char BinToChar[16]={'0','1','2','3','4','5','6','7', '8','9','A','B','C','D','E','F'};

char TwoASCIItoBIN(char *cptr, unsigned char *bptr) { char ca,i;

unsigned char cb;

–  –  –

Приложение 3. Коды ошибок, возвращаемые прибором 0 - нет ошибок;



1 - недопустимая функция;

2 - недопустимый адрес в запросе;

3 - недопустимые значения в поле данных запроса;

4 – непоправимая ошибка возникла во время выполнения операции;

5 – подтверждение выполнения операции (не используется);

6 - запрос не может быть обработан сейчас, необходимо повторить запрос позднее;

Питерфлоу РС Описание протокола обмена с.20 Приложение 4. Функция расчета контрольной суммы Crc32 #define CRC32_Pre() 0xFFFFFFFF #define CRC32_Pnom() 0xEDB88320 #define CRC32_XOR() 0xFFFFFFFF #define CRC32_Check(_C) (_C == 0xDEBB20E3) unsigned char CRC32(void * pBuf, unsigned long len) { unsigned long j;

unsigned long _CRC;

–  –  –

Приложение 5. Функции преобразования в BCD и обратно unsigned char BinByteToBcdByte(unsigned char Src) { unsigned char res;

res = (unsigned char)( ((Src/10)4) | (Src % 10) );

return res;

}

–  –  –

Приложение 6. Оптимизация алгоритма считывания архивов Доступ к архивам прибора реализован через считывание файлов по записям без возможности указания желаемой даты архивной записи. Это предполагает считывание всего файла архива целиком в каждом сеансе связи. При регулярном считывании архива это приводит к дополнительным временным затратам на получение архивных записей, которые были прочитаны во время предыдущих сеансов связи. Для экономии времени считывания алгоритм может быть оптимизирован на стороне программного обеспечения верхнего уровня, если оно имеет возможность сохранять прочитанные данные в каком-нибудь хранилище, например, базе данных .

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

Если для данного файла в БД нет информации, то производится считывание всех имеющихся в приборе записей. При считывании каждой записи имеет смысл проверять контрольную сумму. При последовательном несовпадении контрольной суммы 5 и более раз можно прекратить считывание данного файла, т.к. данная ситуация может указывать на то, что файл не заполнен полностью .

Если БД содержит информацию о предыдущем считывании, то необходимо произвести считывание из прибора, указав номер файла и индекс записи такие же, как в последней записи БД (т.о. выполняется контрольное считывание последней известной записи) .

Несовпадение инкрементного номера записи (тип unsigned __int64) или контрольной суммы прочитанной из прибора записи с аналогичными полями записи из БД говорит о том, что архивная запись была переписана с момента последнего считывания (архив «закольцевался»). В этом случае следует произвести считывание данных так, как будто БД не содержала информации об архиве .

В противном случае считывание данных выполняется, начиная со следующей записи.

Считывание продолжается до возникновения одного из событий:

Прочитаны все записи файла;

Прочитано 5 или более записей с несовпадающей контрольной суммой;

Прочитана запись, имеющая значение инкрементного номер меньше максимального известного значения инкрементного номера записи (хранящегося в БД или прочитанного во время текущего сеанса связи) .

Данная ситуация говорит о том, что прочитана запись, которая уже должна




Похожие работы:

«Руководство по Монтажу и Эксплуатации Разъединитель типа ONIIIS Руководство № DTR 01.03.01.RU Производственное предприятие электрической аппаратуры ул. Гданьска 60, 84-300 Лемборк, Польша Tel/Fax: (059) 86-336-15 / 86-333-86 www.zwae.com.pl e-mail: zwae@zwae.com...»

«Scientific Cooperation Center Interactive plus Дьяченко Алексей Геннадьевич доцент Ширин Андрей Александрович магистрант ФГБОУ ВО "Донской государственный технический университет" г. Ростов-на-Дону, Ростовская область ИЗУЧЕНИЕ И СРАВНЕНИЕ СВОЙСТВ ВОЛОКОН, ИСПОЛЬЗУЕМЫХ В КОМПОЗИТНЫХ МАТЕРИ...»

«ГОСТ 9723-73 МЕЖГОСУДАРСТВЕННЫЙ СТАНДАРТ ПОРОШОК о л о в я н н ы й ТЕХНИЧЕСКИЕ УСЛОВИЯ Издание официальное БЗ 5 9 8 ПИК ИЗДАТЕЛЬСТВО СТАНДАРТОВ Москва сертификат клапан УДК 669.6-492.2:006.354 Группа В56 М Е Ж Г О С У Д А Р С Т В Е Н Н Ы Й СТАН...»

«1. ЦЕЛИ И ЗАДАЧИ ДИСЦИПЛИНЫ 1.1. Цель дисциплины: формирование знания в области подземной урбанистики в контексте развития отечественной градостроительной теории и практики.1.2. Задачи освоения дисциплины:ознакомить студентов с актуальными проблемами подземной урбанистики, а...»

«Содержание стр.1. Цели и задачи дисциплины (модуля) 3 2. Место дисциплины (модуля) в структуре ООП. 3 3. Требования к результатам освоения дисциплины (модуля) 3 4 . Объем дисциплины (модуля) и виды учебной работы 4 5. Содержание дисциплин...»

«ГОСУДАРСТВЕННЫЙ СТАНД АРТ СОЮЗА ССР ВЕЩЕСТВА ВЗРЫВЧАТЫЕ МЕТОДЫ ОПРЕДЕЛЕНИЯ ФУГАСНОСТИ ГОСТ 4546-81 Издание официальное БЗ 12-97 ИНК ИЗДАТЕЛЬСТВО СТАНДАРТОВ Москва белая скатерть УДК 662.2/3.001.4:006.354 Группа Л79 ГОСУДАРСТ...»

«ПРАВИЛА ЗЕМЛЕПОЛЬЗОВАНИЯ И ЗАСТРОЙКИ Муниципального образования сельского поселения "Митрофан-Дикост" Муниципальное образование сельского поселения "Митрофан-Дикост" муниципального района "Троицко-Печорский" Республики Коми ПРАВИЛА ЗЕМЛЕПОЛЬЗОВАНИЯ И ЗАСТРОЙКИ ГП87.368.844ГР Часть 3 Градост...»

«Кофеварки и кофемашины Jura Impressa J9.2 One Touch piano white EU, Impressa J9.2 platin : Инструкция пользователя Руководство по эксплуатации кофе-машины IMPRESSA J9.2 "Руководство по эксплуатации кофе-машины IMPRESSA" отмечено сертификатом качества независи-мого германского Союза работников технического надзора TV SD за п...»




 
2019 www.mash.dobrota.biz - «Бесплатная электронная библиотека - онлайн публикации»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.