WITSType.pas


{************************************************************} 
{                                                            } 
{                  Модуль WITSType.pas                       } 
{             Copyright (c) 2008  BoikovSoft                 } 
{                    ООО НПП "ГИРС"                          } 
{                                                            } 
{                                                            } 
{                     Разработчики                           } 
{                                                            } 
{                  Инженер-программист:                      } 
{             Боков Артем Юрьевич (BoikovSoft)               } 
{                                                            } 
{         Перевод документации WITS с английского:           } 
{               Беда Юрий Федосьевич (Beda)                  } 
{                                                            } 
{                Технические консультанты:                   } 
{               Беда Юрий Федосьевич (Beda)                  } 
{                 Бойков Юрий Николаевич                     } 
{         Корастелев Юрий Викторович (ООО НПП "ГИРС")        } 
{                                                            } 
{ Модифицирован: 11 марта 2008                               } 
{                                                            } 
{************************************************************} 
 
unit WITSType; 
 
interface 
 
Uses 
  Classes, SysUtils, Dialogs; 
 
type 
{ TODO 5 : Добавить примечания по каждому значению в структуре записи } 
 
 
{ DONE 1: ACTCOD } 
{ Этот номер указывает на вид операций на буровой в момент регистрации/записи 
  параметров. Спецификация WITS предусматривает следующие коды операций на 
  буровой скважине: 
  ACTCOD : 
  0. Неопределенный вид 
  1. Монтаж/демонтаж оборудования 
  2. Бурение 
  3. Наращивание бурильной колонны 
  4. Расширение ствола скважины 
  5. Бурение по пилотному стволу 
  6. Отбор керна 
  7. Приготовление/обработка бурового раствора 
  8. Спуск компоновки труб в скважину 
  9. Подъем компоновки труб из скважины 
  10. Профилактическое обслуживание бурового оборудования (ТО) 
  11. Ремонт бурового оборудования 
  12. Перетяжка талевой системы 
  13. Инклинометрия 
  14. Каротаж на кабеле 
  15. Спуск обсадной колонны 
  16. Цементирование обсадной колонны 
  17. Тампонажные работы 
  18. Цементирование под давлением 
  19. Ожидание затвердения цемента 
  20. Разбурка цементного камня 
  21. Монтаж/демонтаж ПВО 
  22. Функциональные поверки ПВО 
  23. Опробование пласта испытателем на трубах 
  24. Ловильные работы 
  25. Операции по ориентированию скважин 
  26. Глушение скважины 
  27. Прихват труб 
  28. Ожидание метеоусловий 
  29. Подводные работы 
  30. Проверка скважины на перелив 
  31. Опрессовка колонны, определение прочности пород под башмаком. 
  32. Поглощение 
  33. Короткий спуск компоновки 
  34. Короткий подъем компоновки } 
 
  { DONE 1: TWITSHead} 
{ Заголовок. Присутствует во всех уровнях.} 
{ 
  TWITSHead=record 
    WELLID   :array [1..16] of char; 
    STKNUM   :Smallint; 
    RECID    :Smallint; 
    SEQID    :Longint; 
    DATE     :Longint; 
    TIME     :Longint; 
    ACTCOD   :Smallint; 
  end;} 
{   
WELLID - Буквенно цифровая последовательно иденцифицирующая отправителя, или 
содержит название скважины; 
STKNUM - Номер скважины 
RECID - номер структуры + 150. [1..25], [26..49] - зарезервировано, [50..80] 
можно заказать на разработку свои. 
SEQID - Идентификатор последовательности записей. Первый сгенерированный отчет 
равен 0, все последующие увеличиваются на 1. 
DATE - Дата записи. Формат записи ГГММДД. Например, 04.04.1991 записывается 
как 910404 
TIME - Время записи. Формат записи ЧЧММСС. Например, 22:50:15 записывается 
как 225015 
ACTCOD - Код текущей операции на буровой [0..34].} 
 
  TWITSHead=record 
   WELLID:array [1..16] of char; 
   STKNUM:Smallint; 
   RECID:Smallint; 
   SEQID:Longint; 
   DATE:Longint; 
   TIME:Longint; 
   ACTCOD:Smallint; 
  end; 
 
{ DONE 1 : TWITS_151 } 
{ Данные уровня 151. Данные, приобретенные в реальном масштабе времени и 
  вычисленный по интервалу спускового механизма; переданный отчет(рекорд) и 
  сброс вычисления при вызове интервала происходит} 
{ 
  TWITS_151=record 
   DEPTBITM : Single; 
   DEPTBITV : Single; 
   DEPTMEAS : Single; 
   DEPTVERT : Single; 
   BLKPOS   : Single; 
   ROPA     : Single; 
   HKLA     : Single; 
   HKLX     : Single; 
   WOBA     : Single; 
   WOBX     : Single; 
   TORQA    : Single; 
   TORQX    : Single; 
   RPMA     : SmallInt; 
   SPPA     : Single; 
   CHKP     : Single; 
   SPM1     : SmallInt; 
   SPM2     : SmallInt; 
   SPM3     : SmallInt; 
   TVOLACT  : Single; 
   TVOLCACT : Single; 
   MFOP     : SmallInt; 
   MFOA     : Single; 
   MFIA     : Single; 
   MDOA     : Single; 
   MDIA     : Single; 
   MTOA     : Single; 
   MTIA     : Single; 
   MCOA     : Single; 
   MCIA     : Single; 
   STKC     : Longint; 
   LAGSTKS  : SmallInt; 
   DEPTRETM : Single; 
   GASA     : Single; 
   SPARE1   : Single; 
   SPARE2   : Single; 
   SPARE3   : Single; 
   SPARE4   : Single; 
   SPARE5   : Single; 
  end;} 
{ 
DEPTBITM - Положение долота (измереннаяглубина) 
DEPTBITV - Глубина нахождения долота по вертикали 
DEPTMEAS - Глубина скважины (измеренное значение) 
DEPTVERT - Глубина скважины по вертикали 
BLKPOS - Положение тальблока над сталом ротора 
ROPA - Скорость проходки (среднее значение за интервал регистрации) 
HKLA - Средняя за выбранный интервал нагрузка на крюке 
HKLX - Максимальная за выбранный интервал нагрузка на крюке 
WOBA - Средняя за выбранный интервал нагрузка на долото за интервал 
WOBX - Максимальная за выбранный интервал нагрузка на долото за интервал 
TORQA - Средний за выбранный интервал момент на роторе 
TORQX - Максимальный за выбранный интервал момент на роторе 
RPMA - Средняя за выбранный интервал скорость вращения ротора 
SPPA - Среднее за выбранный интервал давление на манифольде 
CHKP - Среднее за выбранный интервал давление в затрубье 
SPM1 - Среднее за выбранный интервал ходы 1 насоса 
SPM2 - Среднее за выбранный интервал ходы 2 насоса 
SPM3 - Среднее за выбранный интервал ходы 3 насоса 
TVOLACT - Средний за выбранный интервал суммарный объем раствора во всех 
активных емкостях. 
TVOLCACT - Средний за выбранный интервал суммарный объем раствора во всех 
активных емкостях указанных в структуре 11 пунк 14 
MFOP - Средний за выбранный интервал расход раствора на выходе из скважины 
[1..100] в процентах. Измеряется лопаткой. 
MFOA - Средний за выбранный интервал расход на выходе из скважины в литр/метр 
MFIA - Средний за выбранный интервал расход на входе в скважину в Литр/метр 
MDOA - Средний за выбранный интервал удельный вес раствора на выходе 
MDIA - Средний за выбранный интервал удельный вес раствора на входе 
MTOA - Средняя за выбранный интервал температура раствора на выходе 
MTIA - Средняя за выбранный интервал температура раствора на входе 
MCOA - Проводимость раствора на выходе (среднее значение за интервал регистрации) 
MCIA - Среднее за выбранный интервал сопративление раствора на входе 
STKC - Совокупное количество ходов насосов отсчитанное либо от начало бурения 
или по желанию оператора 
LAGSTKS - Отставание раствора в ходах насосов. 
DEPTRETM - Глубина выходящего раствора. 
GASA - Среднее за выбранный интервал суммарное содержание горючих газов 
SPARE1 - Резервное поле записи (параметр определяется оператором) 
SPARE2 - Резервное поле записи (параметр определяется оператором) 
SPARE3 - Резервное поле записи (параметр определяется оператором) 
SPARE4 - Резервное поле записи (параметр определяется оператором) 
SPARE5 - Резервное поле записи (параметр определяется оператором) 
} 
  TWITS_151=record 
   DEPTBITM : Single; 
   DEPTBITV : Single; 
   DEPTMEAS : Single; 
   DEPTVERT : Single; 
   BLKPOS   : Single; 
   ROPA     : Single; 
   HKLA     : Single; 
   HKLX     : Single; 
   WOBA     : Single; 
   WOBX     : Single; 
   TORQA    : Single; 
   TORQX    : Single; 
   RPMA     : SmallInt; 
   SPPA     : Single; 
   CHKP     : Single; 
   SPM1     : SmallInt; 
   SPM2     : SmallInt; 
   SPM3     : SmallInt; 
   TVOLACT  : Single; 
   TVOLCACT : Single; 
   MFOP     : SmallInt; 
   MFOA     : Single; 
   MFIA     : Single; 
   MDOA     : Single; 
   MDIA     : Single; 
   MTOA     : Single; 
   MTIA     : Single; 
   MCOA     : Single; 
   MCIA     : Single; 
   STKC     : Longint; 
   LAGSTKS  : SmallInt; 
   DEPTRETM : Single; 
   GASA     : Single; 
   SPARE1   : Single; 
   SPARE2   : Single; 
   SPARE3   : Single; 
   SPARE4   : Single; 
   SPARE5   : Single; 
  end; 
 
{ DONE 1 : TWITS_152} 
{ Данные уровня 152. Данные записанные в функции глубины. Интервал записи 
  выбирается 1фут или 1 м. Но может быть иным. Данные определяются и 
  регистрируются только при углублении забоя (долото на забое). Для одной 
  скважины интервал регистрации не меняется.} 
{ 
  TWITS_152=record 
    DEPTMEAS: Single; 
    DEPTVERT: Single; 
    ROPA    : Single; 
    WOBA    : Single; 
    HKLA    : Single; 
    SPPA    : Single; 
    TORQA   : Single; 
    RPMA    : SmallInt; 
    BTREVC  : Longint; 
    MDIA    : Single; 
    ECDTD   : Single; 
    MFIA    : Single; 
    MFOA    : Single; 
    MFOP    : SmallInt; 
    TVOLACT : Single; 
    CPDI    : Single; 
    CPDC    : Single; 
    BTDTIME : Single; 
    BTDDIST : Single; 
    DXC     : Single; 
    SPARE1  : Single; 
    SPARE2  : Single; 
    SPARE3  : Single; 
    SPARE4  : Single; 
    SPARE5  : Single; 
    SPARE6  : Single; 
    SPARE7  : Single; 
    SPARE8  : Single; 
    SPARE9  : Single; 
  end;} 
{ 
DEPTMEAS - Глубина скважины измеренная на момент регистрации 
DEPTVERT - Глубина скважины по вертикали на момент регистрации 
ROPA - Средняя скорость бурения интервала 
WOBA - Измеренная на поверхности средневзвешенная нагрузка на  долото 
интервала регистрации 
HKLA - Средневзвешенная за интервал нагрузка на крюк 
SPPA - Средневзвешенное за интервал давление нагнетания в стояке манифольда 
TORQA - Средневзвешенный за интервал момент вращения ротора 
RPMA - Средневзвешенная за интервал частота вращения ротора (/мин) 
BTREVC - Общее количество оборотов долота за время работы на забое. Сюда не 
входят обороты долота во время проработки и расширки скважины. Для 
долота повторного спуска это - полные обороты начиная с последнего 
рейса. 
MDIA - Средняя плотность раствора на входе в скважину. 
ECDTD - Эквивалентная циркуляционная плотность раствора. 
MFIA - Расход раствора на входе в скважину средний за интервал. 
MFOA - Расход раствора на выходе из скважины средний за интервал. 
MFOP - Расход раствора на выходе из скважины в % средний за интервал. 
(Применяется для, расходомеров типа лопатки: 0% - нет потока; 100% - 
полное отклонение лопатки. 
TVOLACT - Суммарный объем раствора в активных емкостях. 
CPDI - Средняя стоимость бурения интервала регистрации. 
CPDC - Суммарная стоимость бурения с начала рейса. 
BTDTIME - Время работы долота на забое. Сюда не входит время проработки и 
расширки. Для долота повторного спуска - время бурения последнего 
рейса. 
BTDDIST - Проходка на долото в момент регистрации. 
DXC - Д-экспонента корректированная. 
SPARE1 - Резервное поле записи (параметр определяется оператором) 
SPARE2 - Резервное поле записи (параметр определяется оператором) 
SPARE3 - Резервное поле записи (параметр определяется оператором) 
SPARE4 - Резервное поле записи (параметр определяется оператором) 
SPARE5 - Резервное поле записи (параметр определяется оператором) 
SPARE6 - Резервное поле записи (параметр определяется оператором) 
SPARE7 - Резервное поле записи (параметр определяется оператором) 
SPARE8 - Резервное поле записи (параметр определяется оператором) 
SPARE9 - Резервное поле записи (параметр определяется оператором) 
} 
 
  TWITS_152=record 
    DEPTMEAS: Single; 
    DEPTVERT: Single; 
    ROPA    : Single; 
    WOBA    : Single; 
    HKLA    : Single; 
    SPPA    : Single; 
    TORQA   : Single; 
    RPMA    : SmallInt; 
    BTREVC  : Longint; 
    MDIA    : Single; 
    ECDTD   : Single; 
    MFIA    : Single; 
    MFOA    : Single; 
    MFOP    : SmallInt; 
    TVOLACT : Single; 
    CPDI    : Single; 
    CPDC    : Single; 
    BTDTIME : Single; 
    BTDDIST : Single; 
    DXC     : Single; 
    SPARE1  : Single; 
    SPARE2  : Single; 
    SPARE3  : Single; 
    SPARE4  : Single; 
    SPARE5  : Single; 
    SPARE6  : Single; 
    SPARE7  : Single; 
    SPARE8  : Single; 
    SPARE9  : Single; 
  end; 
 
  { DONE 1 : TWITS_153} 
  { Данные уровня 153.Данные записываются в функции событий наращивания, когда 
  компоновка находится выше забоя. Одно наращивание - одна запись. Параметры 
  определяются за время от последнего касания долортом забоя - до первого 
  касания забоя долотом.} 
{ 
  TWITS_153=record 
    DEPTCONM: Single; 
    DEPTCONV: Single; 
    DEPTMEAS: Single; 
    DEPTVERT: Single; 
    ETIMEBTS: SmallInt; 
    ETIMESLP: SmallInt; 
    ETIMESTB: SmallInt; 
    ETIMEPOF: SmallInt; 
    RSUX    : Single; 
    RSDX    : Single; 
    HKLX    : Single; 
    STRGWT  : Single; 
    TORQMUX : Single; 
    TORQBOX : Single; 
    SPARE1  : Single; 
    SPARE2  : Single; 
    SPARE3  : Single; 
    SPARE4  : Single; 
    SPARE5  : Single; 
  end; 
} 
{ 
DEPTCONM - Измеренная глубина положения долота в момент наращивание 
(инструмент в клиньях) 
DEPTCONV - Вертикальная глубина положения долота в момент наращивания 
(инструмент в клиньях) 
DEPTMEAS - Измеренная глубина скважины 
DEPTVERT - Глубина скважины по вертикали 
ETIMEBTS - Время, прошедшее после отрыва долота от забоя до посадки компоновки в 
клинья. 
ETIMESLP - Интервал времени нахождения компоновки в клиньях ротора. 
ETIMESTB - Интервал времени после снятия с клиньев и до касания долотом забоя 
(до появления нагрузки на долото). 
ETIMEPOF - Время перерыва циркуляции. 
RSUX - Максимальная скорость перемещения компоновки вверх. 
RSDX - Максимальная скорость перемещения компоновки вниз. 
HKLX - Максимальная нагрузка на крюк. 
STRGWT - Вес бурильного инструмента на крюке (определяется в состоянии покоя 
при включенном ротаре и циркуляции раствора, используется для определения 
нагрузки на долото). 
TORQMUX - Момент крепления на ключе. 
TORQBOX - Момент раскрепления на ключе. 
SPARE1 - Резервное поле записи (параметр определяется оператором) 
SPARE2 - Резервное поле записи (параметр определяется оператором) 
SPARE3 - Резервное поле записи (параметр определяется оператором) 
SPARE4 - Резервное поле записи (параметр определяется оператором) 
SPARE5 - Резервное поле записи (параметр определяется оператором) 
} 
  TWITS_153=record 
    DEPTCONM: Single; 
    DEPTCONV: Single; 
    DEPTMEAS: Single; 
    DEPTVERT: Single; 
    ETIMEBTS: SmallInt; 
    ETIMESLP: SmallInt; 
    ETIMESTB: SmallInt; 
    ETIMEPOF: SmallInt; 
    RSUX    : Single; 
    RSDX    : Single; 
    HKLX    : Single; 
    STRGWT  : Single; 
    TORQMUX : Single; 
    TORQBOX : Single; 
    SPARE1  : Single; 
    SPARE2  : Single; 
    SPARE3  : Single; 
    SPARE4  : Single; 
    SPARE5  : Single; 
  end; 
 
  { DONE 1 : TWITS_154} 
  { Данные уровня 154. Данные записываются в функции времени, по параметрам, 
    поступающим от датчиков и результатов вычислений программы. Гидравлика в 
    реальном времени. Запись начинается с момента включения буровых насосов и 
    заканчивается моментом выключения буровых насосов.} 
{ 
  TWITS_154=record 
    DEPTMEAS: Single; 
    DEPTVERT: Single; 
    DEPTBITM: Single; 
    DEPTBITV: Single; 
    MDIA    : Single; 
    MFIA    : Single; 
    SPPA    : Single; 
    PV      : Single; 
    YP      : Single; 
    PLB     : Single; 
    PLDS    : Single; 
    PLA     : Single; 
    PLSU    : Single; 
    PLMM    : Single; 
    PLMWD   : Single; 
    PLPB    : Single; 
    BHP     : Single; 
    BHPA    : Single; 
    JIF     : Single; 
    JV      : Single; 
    AVELN   : Single; 
    AVELX   : Single; 
    ECDTD   : Single; 
    ECDBIT  : Single; 
    ECDCSG  : Single; 
    PHP     : Single; 
    PLCO    : Single; 
    SPARE1  : Single; 
    SPARE2  : Single; 
    SPARE3  : Single; 
    SPARE4  : Single; 
    SPARE5  : Single; 
  end; 
} 
{ 
DEPTMEAS - Измеренная глубина скважины 
DEPTVERT - Глубина скважины по вертикали 
DEPTBITM - Глубина положения долота (измеренная) 
DEPTBITV - Глубина долота по вертикали 
MDIA - Средняя плотность раствора на входе в скважину 
MFIA - Средний расход бурового раствора на входе. 
SPPA - Среднее значение давления нагнетания в стояке манифольда. 
PV - Пластическая вязкость бурового раствора 
YP - Предел текучести бурового раствора (напряжение, при котором начинается 
текучесть раствора) 
PLB - Потери (перепад) давления на долоте. 
PLDS - Потери давления в компоновке бурильного инструмента. 
PLA - Потери давления в затрубье. 
PLSU - Потери давления в поверхностной обвязке. 
PLMM - Потери давления на турбине/забойном двигателе. 
PLMWD - Потери давления в навигационном оборудование 
PLPB - Потери давления на долоте в процентах от суммарных потерь давления 
циркуляции. 
BHP - Гидравлическая мощность реализуемая на насадках долота. 
BHPA - Средняя гидравлическая мощность на единицу площади забоя. 
JIF - Импульс раствора на забое 
JV - Скорость истечения раствора из насадок долота 
AVELN - Минимальная скорость течения раствора в затрубье 
AVELX - Максимальная скорость течения раствора в затрубье 
ECDTD - Эквивалентная циркуляционная плотность раствора на забое 
ECDBIT - Эквивалентная циркуляционная плотность на долоте 
ECDCSG - Эквивалентная циркуляционная плотность на башмаке колонны. 
PHP - Гидралическая мощность на насосах. 
PLCO - Отношение суммарного расчетного давления к фактическому давлению на 
насосах. 
SPARE1 - Резервное поле записи (параметр определяется оператором) 
SPARE2 - Резервное поле записи (параметр определяется оператором) 
SPARE3 - Резервное поле записи (параметр определяется оператором) 
SPARE4 - Резервное поле записи (параметр определяется оператором) 
SPARE5 - Резервное поле записи (параметр определяется оператором) 
} 
  TWITS_154=record 
    DEPTMEAS: Single; 
    DEPTVERT: Single; 
    DEPTBITM: Single; 
    DEPTBITV: Single; 
    MDIA    : Single; 
    MFIA    : Single; 
    SPPA    : Single; 
    PV      : Single; 
    YP      : Single; 
    PLB     : Single; 
    PLDS    : Single; 
    PLA     : Single; 
    PLSU    : Single; 
    PLMM    : Single; 
    PLMWD   : Single; 
    PLPB    : Single; 
    BHP     : Single; 
    BHPA    : Single; 
    JIF     : Single; 
    JV      : Single; 
    AVELN   : Single; 
    AVELX   : Single; 
    ECDTD   : Single; 
    ECDBIT  : Single; 
    ECDCSG  : Single; 
    PHP     : Single; 
    PLCO    : Single; 
    SPARE1  : Single; 
    SPARE2  : Single; 
    SPARE3  : Single; 
    SPARE4  : Single; 
    SPARE5  : Single; 
  end; 
 
  { DONE 1 : TWITS_155} 
  { Данные уровня 155 
    В файл записываются данные в функции времени только в процессе 
    спуско-подъемных операций } 
{ 
  TWITS_155=record 
    DEPTBITM: Single; 
    DEPTBITV: Single; 
    DEPTMEAS: Single; 
    DEPTVERT: Single; 
    TRIPNUM : SmallInt; 
    STATUSIS: array [1..2] of char; 
    HKLA    : Single; 
    BLKPOS  : Single; 
    RSUX    : Single; 
    RSDX    : Single; 
    FVOLOC  : Single; 
    SPARE1  : Single; 
    SPARE2  : Single; 
    SPARE3  : Single; 
    SPARE4  : Single; 
    SPARE5  : Single; 
  end; 
} 
{ 
DEPTBITM - Глубина положения долота (измеренная) 
DEPTBITV - Глубина долота по вертикали 
DEPTMEAS - Измеренная глубина скважины 
DEPTVERT - Глубина скважины по вертикали 
TRIPNUM - Номер рейса 
STATUSIS - I указывает,что компоновка в клиньях ротора; О - компоновка на крюке. 
HKLA - Средневзвешенная за интервал нагрузка на крюк. 
BLKPOS - Положение тальблока над столом ротора 
RSUX - Максимальная скорость перемещения компоновки вверх. 
RSDX - Максимальная скорость перемещения компоновки вниз. 
FVOLOC - Суммарный объем бурового раствора вытесненный из скважины или долитый 
в скважину 
SPARE1 - Резервное поле записи (параметр определяется оператором) 
SPARE2 - Резервное поле записи (параметр определяется оператором) 
SPARE3 - Резервное поле записи (параметр определяется оператором) 
SPARE4 - Резервное поле записи (параметр определяется оператором) 
SPARE5 - Резервное поле записи (параметр определяется оператором) 
} 
  TWITS_155=record 
    DEPTBITM: Single; 
    DEPTBITV: Single; 
    DEPTMEAS: Single; 
    DEPTVERT: Single; 
    TRIPNUM : SmallInt; 
    STATUSIS: array [1..2] of char; 
    HKLA    : Single; 
    BLKPOS  : Single; 
    RSUX    : Single; 
    RSDX    : Single; 
    FVOLOC  : Single; 
    SPARE1  : Single; 
    SPARE2  : Single; 
    SPARE3  : Single; 
    SPARE4  : Single; 
    SPARE5  : Single; 
  end; 
 
  { DONE 1 : TWITS_156} 
  { Данные уровня 156 
    В файл записываются данные в процесса спуско-подъема бурильного инструмента 
    и обсадной колонны. Регистрация в функции события происходит в момент снятия 
    с клиньев ротора.} 
{ 
  TWITS_156=record 
    DEPTBITM: Single; 
    DEPTBITV: Single; 
    DEPTMEAS: Single; 
    DEPTVERT: Single; 
    TRIPNUM : SmallInt; 
    CONNDONE: SmallInt; 
    CONNREM : SmallInt; 
    ETIMESLP: SmallInt; 
    ETIMEOS : SmallInt; 
    RSUX    : Single; 
    RSUA    : Single; 
    RSDX    : Single; 
    RSDA    : Single; 
    HKLX    : Single; 
    HKLN    : Single; 
    HKLA    : Single; 
    TORQMUX : Single; 
    TORQBOX : Single; 
    FVOLO   : Single; 
    FVOLE   : Single; 
    FVOLOC  : Single; 
    FVOLEC  : Single; 
    SPARE1  : Single; 
    SPARE2  : Single; 
    SPARE3  : Single; 
    SPARE4  : Single; 
    SPARE5  : Single; 
  end;} 
{ 
DEPTBITM - Глубина положения долота (измеренная) 
DEPTBITV - Глубина долота по вертикали 
DEPTMEAS - Измеренная глубина скважины 
DEPTVERT - Глубина скважины по вертикали 
TRIPNUM - Номер рейса 
CONNDONE - Число выполненных наращиваний в текущем рейсе 
CONNREM - Число поднятых труб/свечей 
ETIMESLP - Время нахождения компоновки в клиньях для текущего наращивания 
ETIMEOS - Время нахождения компоновки на крюке для текущего наращивания 
RSUX - Максимальная скорость перемещения компоновки вверх. 
RSUA - Средняя скорость перемещения компоновки вверх. 
RSDX - Максимальная скорость перемещения компоновки вниз. 
RSDA - Средняя скорость перемещения компоновки вниз 
HKLX - Максимальная нагрузка на крюк. 
HKLN - Минимальная нагрука на крюк. 
HKLA - Средняя нагрузка на крюк. 
TORQMUX - Момент на ключе при свинчивании (максимальный) 
TORQBOX - Момент на ключе при отвинчивании (максимальный) 
FVOLO - Фактический Объем раствора долитый в скважину или вытесненный при спуске 
свечи. 
FVOLE - Расчетный Объем раствора для долива в скважину или вытеснения при спуске 
свечи. 
FVOLOC - Суммарный объем раствора долитый в скажину или вытесненный из скважины 
для текущего рейса. 
FVOLEC - Расчетный объем раствора для долива или вытеснения из скважины для 
текущего рейса. 
SPARE1 - Резервное поле записи (параметр определяется оператором) 
SPARE2 - Резервное поле записи (параметр определяется оператором) 
SPARE3 - Резервное поле записи (параметр определяется оператором) 
SPARE4 - Резервное поле записи (параметр определяется оператором) 
SPARE5 - Резервное поле записи (параметр определяется оператором) 
} 
  TWITS_156=record 
    DEPTBITM: Single; 
    DEPTBITV: Single; 
    DEPTMEAS: Single; 
    DEPTVERT: Single; 
    TRIPNUM : SmallInt; 
    CONNDONE: SmallInt; 
    CONNREM : SmallInt; 
    ETIMESLP: SmallInt; 
    ETIMEOS : SmallInt; 
    RSUX    : Single; 
    RSUA    : Single; 
    RSDX    : Single; 
    RSDA    : Single; 
    HKLX    : Single; 
    HKLN    : Single; 
    HKLA    : Single; 
    TORQMUX : Single; 
    TORQBOX : Single; 
    FVOLO   : Single; 
    FVOLE   : Single; 
    FVOLOC  : Single; 
    FVOLEC  : Single; 
    SPARE1  : Single; 
    SPARE2  : Single; 
    SPARE3  : Single; 
    SPARE4  : Single; 
    SPARE5  : Single; 
  end; 
 
  { DONE 1 : TWITS_157} 
{ Данные уровня 157. 
    В файл заносятся данные инклиномитрии, полученные в результате замеров на 
    каротажном кабеле или оборудования телеметрии.Регистрация производится как 
    автоматически, так же может выполняться вручную оператором. Запись данных в 
    фнкции события: замер - запись. } 
{ 
  TWITS_157=record 
    DEPTSVYM: Single; 
    DEPTSVYV: Single; 
    PASSNUM : SmallInt; 
    DEPTMEAS: Single; 
    SVYTYPE : array [1..8] of char; 
    SVYINC  : Single; 
    SVYAZU  : Single; 
    SVYAZC  : Single; 
    SVYMTF  : Single; 
    SVYGTF  : Single; 
    SVYNS   : Single; 
    SVYEW   : Single; 
    SVYDLS  : Single; 
    SVYWALK : Single; 
    SPARE1  : Single; 
    SPARE2  : Single; 
    SPARE3  : Single; 
    SPARE4  : Single; 
    SPARE5  : Single; 
  end; 
} 
{ 
DEPTSVYM - Измеренная глубина нахождения датчика в момент замера. 
DEPTSVYV - Вертикальная глубина нахождения датчика в момент замера. 
PASSNUM - Последовательное число, отражающее номер записи. Первая запись 
имеет номер 0. Каждый последующий повтор измерений в интервале 
скважины увеличивает номер на 1. 
DEPTMEAS - Измеренная глубина скважины в момент записи. 
SVYTYPE - Тип оборудования, на котором выполнены измерения. 
(MWD, Mag-SS,Mag-MS, Gyr-Free, Gyr-Rate, Inertial, ....) 
SVYINC - Угол наклона скважины, измеренный датчиком. 
SVYAZU - Азимут наклона скважины относительно магнитного северного полюса. 
SVYAZC - Азимут наклона скважины относительно истинного северного полюса. 
(с учетом региональго магнитного склонения) 
SVYMTF - Угол между Севером и направлением бурильной колонны 
SVYGTF - Угол между вертикальным стволом скважины и направлением бурильной 
колонны. 
SVYNS - Расстояние, в точке замера, от вертикальной оси скважины в плоскости 
север - юг. Положительное число обозначает север, отрицательное число 
на юг. 
SVYEW - Расстояние, в точке замера, от вертикальной оси скважины в плоскости 
восток - запад. Положительное число обозначает восток, отрицательное 
число на запад. 
SVYDLS - Угол, между предыдущим интервалом скважины и последующим. 
SVYWALK - Угол между направлением бурильной колонны и направлением скважины. 
SPARE1 - Резервное поле записи (параметр определяется оператором) 
SPARE2 - Резервное поле записи (параметр определяется оператором) 
SPARE3 - Резервное поле записи (параметр определяется оператором) 
SPARE4 - Резервное поле записи (параметр определяется оператором) 
SPARE5 - Резервное поле записи (параметр определяется оператором) 
} 
  TWITS_157=record 
    DEPTSVYM: Single; 
    DEPTSVYV: Single; 
    PASSNUM : SmallInt; 
    DEPTMEAS: Single; 
    SVYTYPE : array [1..8] of char; 
    SVYINC  : Single; 
    SVYAZU  : Single; 
    SVYAZC  : Single; 
    SVYMTF  : Single; 
    SVYGTF  : Single; 
    SVYNS   : Single; 
    SVYEW   : Single; 
    SVYDLS  : Single; 
    SVYWALK : Single; 
    SPARE1  : Single; 
    SPARE2  : Single; 
    SPARE3  : Single; 
    SPARE4  : Single; 
    SPARE5  : Single; 
  end; 
 
  { DONE 1 : TWITS_158} 
  { Данные уровня 158 
    В файл регистрируются данные в функции времени (интервал записи определяется 
    в секундах), или функции глубины (интервал записи определяется в футах или 
    метрах) при бурении нового ствола скважины или при повторной записи интервала. 
    Запись в файл происходит в режиме реального времени. Если регистрация 
    происходит в функции глубины, то запись начинается при условии циркуляции и 
    режима бурения.} 
{ 
 TWITS_158=record 
    DEPTMEAS: Single; 
    DEPTVERT: Single; 
    DEPTBITM: Single; 
    DEPTBITV: Single; 
    PASSNUM : SmallInt; 
    DEPTRS1M: Single; 
    DEPTRS1V: Single; 
    MR1     : Single; 
    MR1C    : Single; 
    DEPTRS2M: Single; 
    DEPTRS2V: Single; 
    MR2     : Single; 
    MR2C    : Single; 
    DEPTGR1M: Single; 
    DEPTGR1V: Single; 
    MG1     : Single; 
    MG1C    : Single; 
    DEPTGR2M: Single; 
    DEPTGR2V: Single; 
    MG2     : Single; 
    MG2C    : Single; 
    DEPTP1M : Single; 
    DEPTP1V : Single; 
    MPO1    : Single; 
    DEPTP2M : Single; 
    DEPTP2V : Single; 
    MPO2    : Single; 
    MFTANN  : Single; 
    MFTPIPE : Single; 
    MFRANN  : Single; 
    MFRPIPE : Single; 
    DEPTFDM : Single; 
    DEPTFDV : Single; 
    MFD     : Single; 
    DEPTCALM: Single; 
    DEPTCALV: Single; 
    MCLP    : Single; 
    MFPP    : Single; 
    MFFP    : Single; 
    SPARE1  : Single; 
    SPARE2  : Single; 
    SPARE3  : Single; 
    SPARE4  : Single; 
    SPARE5  : Single; 
    SPARE6  : Single; 
    SPARE7  : Single; 
    SPARE8  : Single; 
    SPARE9  : Single; 
  end; 
} 
{ 
DEPTMEAS - Измеренная глубина скважины 
DEPTVERT - Глубина скважины по вертикали 
DEPTBITM - Глубина положения долота (измеренная) 
DEPTBITV - Глубина долота по вертикали 
PASSNUM - Последовательное число, отражающее номер записи. Первая запись 
имеет номер 0. Каждый последующий рейс увеличивает номер на 1 
DEPTRS1M - Измеренная глубина резистивиметра №1 
DEPTRS1V - Вертикальная глубина резистивиметра №1 
MR1 - Значение сопротивления №1 
MR1C - Значение сопротивления №1 скорректированное на скважинные условия. 
DEPTRS2M - Измеренная глубина резистивиметра №2 
DEPTRS2V - Вертикальная глубина резистивиметра №2 
MR2 - Значение сопротивления №2 
MR2C - Значение сопротивления №2 скорректированное на скважинные условия. 
DEPTGR1M - Измеренная глубина прибора ГК №1 
DEPTGR1V - Вертикальная глубина прибора ГК №1 
MG1 - Значение ГК №1 
MG1C - Скорректированное значение ГК №1 
DEPTGR2M - Измеренная глубина прибора ГК №2 
DEPTGR2V - Вертикальная глубина прибора ГК №2 
MG2 - Значение ГК №2 
MG2C - Скорректированное значение ГК №2 
DEPTP1M - Измеренная глубина прибора нейтронного каротажа №1 
DEPTP1V - Вертикальная глубина прибора нейтронного каротажа №1 
MPO1 - Значение пористости прибора №1 
DEPTP2M - Измеренная глубина прибора нейтронного каротажа №2 
DEPTP2V - Вертикальная глубина прибора нейтронного каротажа №2 
MPO2 - Значение пористости прибора №2 
MFTANN - Среднее значение температуры раствора в затрубье (УБТ) 
MFTPIPE - Среднее значение температуры раствора в УБТ 
MFRANN - Среднее значение сопротивления раствора в затрубье (УБТ) 
MFRPIPE - Среднее значение сопротивления раствора в трубах (УБТ) 
DEPTFDM - Измеренная глубина прибора плотностного каротажа (ГГК) 
DEPTFDV - Вертикальная глубина прибора плотностного каротажа (ГГК) 
MFD - Измеренное значение плотности пород 
DEPTCALM - Измеренная глубина каверномера 
DEPTCALV - Вертикальная глубина каверномера 
MCLP - Измеренное значение диаметра скважины. 
MFPP - Градиент порового давления для текущей глубины, определенный по 
данным MWD 
MFFP - Градиент давления гидроразрыва для текущей глубины, определенный 
по данным MWD 
SPARE1 - Резервное поле записи (параметр определяется оператором) 
SPARE2 - Резервное поле записи (параметр определяется оператором) 
SPARE3 - Резервное поле записи (параметр определяется оператором) 
SPARE4 - Резервное поле записи (параметр определяется оператором) 
SPARE5 - Резервное поле записи (параметр определяется оператором) 
SPARE6 - Резервное поле записи (параметр определяется оператором) 
SPARE7 - Резервное поле записи (параметр определяется оператором) 
SPARE8 - Резервное поле записи (параметр определяется оператором) 
SPARE9 - Резервное поле записи (параметр определяется оператором) 
} 
 TWITS_158=record 
    DEPTMEAS: Single; 
    DEPTVERT: Single; 
    DEPTBITM: Single; 
    DEPTBITV: Single; 
    PASSNUM : SmallInt; 
    DEPTRS1M: Single; 
    DEPTRS1V: Single; 
    MR1     : Single; 
    MR1C    : Single; 
    DEPTRS2M: Single; 
    DEPTRS2V: Single; 
    MR2     : Single; 
    MR2C    : Single; 
    DEPTGR1M: Single; 
    DEPTGR1V: Single; 
    MG1     : Single; 
    MG1C    : Single; 
    DEPTGR2M: Single; 
    DEPTGR2V: Single; 
    MG2     : Single; 
    MG2C    : Single; 
    DEPTP1M : Single; 
    DEPTP1V : Single; 
    MPO1    : Single; 
    DEPTP2M : Single; 
    DEPTP2V : Single; 
    MPO2    : Single; 
    MFTANN  : Single; 
    MFTPIPE : Single; 
    MFRANN  : Single; 
    MFRPIPE : Single; 
    DEPTFDM : Single; 
    DEPTFDV : Single; 
    MFD     : Single; 
    DEPTCALM: Single; 
    DEPTCALV: Single; 
    MCLP    : Single; 
    MFPP    : Single; 
    MFFP    : Single; 
    SPARE1  : Single; 
    SPARE2  : Single; 
    SPARE3  : Single; 
    SPARE4  : Single; 
    SPARE5  : Single; 
    SPARE6  : Single; 
    SPARE7  : Single; 
    SPARE8  : Single; 
    SPARE9  : Single; 
  end; 
 
  { DONE 1 : TWITS_159} 
  { Данные уровня 159 
    Все данные в файл заносятся только когда компоновка находится на забое. Файл 
    формируется автоматически в функции времени или глубины. Запись в файл не 
    производится если нет циркуляции или компоновка не работает. } 
{ 
  TWITS_159=record 
    DEPTMEAS: Single; 
    DEPTVERT: Single; 
    DEPTBITM: Single; 
    DEPTBITV: Single; 
    PASSNUM : SmallInt; 
    MBHPANN : Single; 
    MBHPINT : Single; 
    MWOBA   : Single; 
    MWOBX   : Single; 
    MTORQA  : Single; 
    MTORQX  : Single; 
    MMMRPM  : SmallInt; 
    MALTVOLT: SmallInt; 
    SPARE1  : Single; 
    SPARE2  : Single; 
    SPARE3  : Single; 
    SPARE4  : Single; 
    SPARE5  : Single; 
    SPARE6  : Single; 
    SPARE7  : Single; 
    SPARE8  : Single; 
    SPARE9  : Single; 
  end; 
} 
{ 
DEPTMEAS - Измеренная глубина скважины 
DEPTVERT - Вертикальная глубина скважины 
DEPTBITM - Измеренная глубина положения долота 
DEPTBITV - Вертикальная глубина положения долота 
PASSNUM - Номер рейса записи 
MBHPANN - Измеренное значение давления в затрубье 
MBHPINT - Измеренное значение давления в трубах 
MWOBA - Измеренное в скважине среднее значение нагрузки на долото 
MWOBX - Измеренное в скважине максимальное значение нагрузки на долото 
MTORQA - Измеренное в скважине среднее значение момента вращения долота 
MTORQX - Измеренное в скважине максимальное значение момента вращения долото 
MMMRPM - Частота вращения долота 
MALTVOLT - Напряжение генератора переменного тока инструмента MWD 
SPARE1 - Резервное поле записи (параметр определяется оператором) 
SPARE2 - Резервное поле записи (параметр определяется оператором) 
SPARE3 - Резервное поле записи (параметр определяется оператором) 
SPARE4 - Резервное поле записи (параметр определяется оператором) 
SPARE5 - Резервное поле записи (параметр определяется оператором) 
SPARE6 - Резервное поле записи (параметр определяется оператором) 
SPARE7 - Резервное поле записи (параметр определяется оператором) 
SPARE8 - Резервное поле записи (параметр определяется оператором) 
SPARE9 - Резервное поле записи (параметр определяется оператором) 
} 
  TWITS_159=record 
    DEPTMEAS: Single; 
    DEPTVERT: Single; 
    DEPTBITM: Single; 
    DEPTBITV: Single; 
    PASSNUM : SmallInt; 
    MBHPANN : Single; 
    MBHPINT : Single; 
    MWOBA   : Single; 
    MWOBX   : Single; 
    MTORQA  : Single; 
    MTORQX  : Single; 
    MMMRPM  : SmallInt; 
    MALTVOLT: SmallInt; 
    SPARE1  : Single; 
    SPARE2  : Single; 
    SPARE3  : Single; 
    SPARE4  : Single; 
    SPARE5  : Single; 
    SPARE6  : Single; 
    SPARE7  : Single; 
    SPARE8  : Single; 
    SPARE9  : Single; 
  end; 
 
  { DONE 1 : TWITS_160} 
  { Данные уровня 160 
    В файл записываются данные, имеющие отношение к прогнозу/расчету давлений в 
    скважине, в функции глубин или событий. Информация поступает в режиме 
    реального времени, на основании данных прикладных программ и измерений 
    выполненных приборами. } 
{ 
  TWITS_160=record 
    DEPTMEAS: Single; 
    DEPTVERT: Single; 
    DEPTSAMM: Single; 
    DEPTSAMV: Single; 
    FPOREPG : Single; 
    FFRACPG : Single; 
    FOBPG   : Single; 
    KTOL    : Single; 
    PSIPX   : Single; 
    CONNGASA: Single; 
    CONNGASX: Single; 
    CONNGASL: Single; 
    TRIPGAS : Single; 
    SHALEDEN: Single; 
    CEC     : Single; 
    CAVINGS : SmallInt; 
    DXC     : Single; 
    SPARE1  : Single; 
    SPARE2  : Single; 
    SPARE3  : Single; 
    SPARE4  : Single; 
    SPARE5  : Single; 
    SPARE6  : Single; 
    SPARE7  : Single; 
    SPARE8  : Single; 
    SPARE9  : Single; 
  end; 
} 
 
{ 
DEPTMEAS - Измеренная глубина скважины 
DEPTVERT - Вертикальная глубина скважины 
DEPTSAMM - Измеренная глубина, с которой выходит шлам 
DEPTSAMV - Вертикальная глубина выхода шлама 
FPOREPG - Градиент порового давления пород на данной глубине, выраженный как 
эквивалент плотности бурового раствора 
FFRACPG - Градиент гидроразрыва пород на данной глубине, в значении 
эквивалента плотности бурового раствора 
FOBPG - Градиент геостатического давления на данной глубине, в значении 
эквивалента плотности бурового раствора 
KTOL - Допустимый объем притока флюида в скважину (без учета запаса 
плотности раствора для СПО) 
PSIPX - Начальное максимально допустимое давление в затрубье на этой 
глубине, с реальной плотностью раствора в скважине. 
CONNGASA - Среднее значение газа наращивания 
CONNGASX - Максимальное значение газа наращивания 
CONNGASL - Последнее значение газа наращивания. 
TRIPGAS - Значение газа СПО последнего рейса. 
SHALEDEN - Плотность глинистых частиц шлама на данной глубине 
CEC - Значение фактора глин или катионообменная емкость глинистых частиц 
шлама, измеренное использованием метиленовой синий методом титрования. 
CAVINGS - Процент в шламе обвальных частиц со стенок скважины (процент 
кавернозности) 
DXC - Значение Д-экспоненты, скорректированное на эквивалентную плотность 
раствора. 
SPARE1 - Резервное поле записи (параметр определяется оператором) 
SPARE2 - Резервное поле записи (параметр определяется оператором) 
SPARE3 - Резервное поле записи (параметр определяется оператором) 
SPARE4 - Резервное поле записи (параметр определяется оператором) 
SPARE5 - Резервное поле записи (параметр определяется оператором) 
SPARE6 - Резервное поле записи (параметр определяется оператором) 
SPARE7 - Резервное поле записи (параметр определяется оператором) 
SPARE8 - Резервное поле записи (параметр определяется оператором) 
SPARE9 - Резервное поле записи (параметр определяется оператором) 
} 
  TWITS_160=record 
    DEPTMEAS: Single; 
    DEPTVERT: Single; 
    DEPTSAMM: Single; 
    DEPTSAMV: Single; 
    FPOREPG : Single; 
    FFRACPG : Single; 
    FOBPG   : Single; 
    KTOL    : Single; 
    PSIPX   : Single; 
    CONNGASA: Single; 
    CONNGASX: Single; 
    CONNGASL: Single; 
    TRIPGAS : Single; 
    SHALEDEN: Single; 
    CEC     : Single; 
    CAVINGS : SmallInt; 
    DXC     : Single; 
    SPARE1  : Single; 
    SPARE2  : Single; 
    SPARE3  : Single; 
    SPARE4  : Single; 
    SPARE5  : Single; 
    SPARE6  : Single; 
    SPARE7  : Single; 
    SPARE8  : Single; 
    SPARE9  : Single; 
  end; 
 
  { DONE 1 : TWITS_161} 
  { Данные уровня 161 
    В этот файл записываются данные поступающие в реальном времени с датчиков и 
    вычисленные программным комплексом в функции времени. } 
{ 
  TWITS_161=record 
    DEPTMEAS: Single; 
    DEPTVERT: Single; 
    TVOLTOT : Single; 
    TVOLACT : Single; 
    TVOLCTOT: Single; 
    TVOLCACT: Single; 
    TVRESET : LongInt; 
    TVOL01  : Single; 
    TVOL02  : Single; 
    TVOL03  : Single; 
    TVOL04  : Single; 
    TVOL05  : Single; 
    TVOL06  : Single; 
    TVOL07  : Single; 
    TVOL08  : Single; 
    TVOL09  : Single; 
    TVOL10  : Single; 
    TVOL11  : Single; 
    TVOL12  : Single; 
    TVOL13  : Single; 
    TVOL14  : Single; 
    TTVOL1  : Single; 
    TTVOL2  : Single; 
    SPARE1  : Single; 
    SPARE2  : Single; 
    SPARE3  : Single; 
    SPARE4  : Single; 
    SPARE5  : Single; 
  end; 
} 
{ 
DEPTMEAS - Измеренная глубина скважины 
DEPTVERT - Вертикальная глубина скважины 
TVOLTOT - Суммарный объем раствора в емкостях, оснащенных датчиками контроля 
уровня/объема. 
TVOLACT - Суммарный обем раствора в активных емкостях. 
TVOLCTOT - Объем увеличения/потери раствора во всех емкостях, произошедший 
со времени, указанного в п.11.14 (TVRESET) 
TVOLCACT - Объем увеличения/потери раствора в активных емкостях, 
произошедший со времени, указанного в п.11.14 (TVRESET) 
TVRESET - Время, с которого ведется контроль за изменением объема раствора 
в емкостях. 
TVOL01 - Объем раствора, определенный датчиком в емкости №1 
TVOL02 - Объем раствора, определенный датчиком в емкости №2 
TVOL03 - Объем раствора, определенный датчиком в емкости №3 
TVOL04 - Объем раствора, определенный датчиком в емкости №4 
TVOL05 - Объем раствора, определенный датчиком в емкости №5 
TVOL06 - Объем раствора, определенный датчиком в емкости №6 
TVOL07 - Объем раствора, определенный датчиком в емкости №7 
TVOL08 - Объем раствора, определенный датчиком в емкости №8 
TVOL09 - Объем раствора, определенный датчиком в емкости №9 
TVOL10 - Объем раствора, определенный датчиком в емкости №10 
TVOL11 - Объем раствора, определенный датчиком в емкости №11 
TVOL12 - Объем раствора, определенный датчиком в емкости №12 
TVOL13 - Объем раствора, определенный датчиком в емкости №13 
TVOL14 - Объем раствора, определенный датчиком в емкости №14 
TTVOL1 - Объем раствора, определенный датчиком в доливной емкости №1 
TTVOL2 - Объем раствора, определенный датчиком в доливной емкости №2 
SPARE1 - Резервное поле записи (параметр определяется оператором) 
SPARE2 - Резервное поле записи (параметр определяется оператором) 
SPARE3 - Резервное поле записи (параметр определяется оператором) 
SPARE4 - Резервное поле записи (параметр определяется оператором) 
SPARE5 - Резервное поле записи (параметр определяется оператором) 
} 
  TWITS_161=record 
    DEPTMEAS: Single; 
    DEPTVERT: Single; 
    TVOLTOT : Single; 
    TVOLACT : Single; 
    TVOLCTOT: Single; 
    TVOLCACT: Single; 
    TVRESET : LongInt; 
    TVOL01  : Single; 
    TVOL02  : Single; 
    TVOL03  : Single; 
    TVOL04  : Single; 
    TVOL05  : Single; 
    TVOL06  : Single; 
    TVOL07  : Single; 
    TVOL08  : Single; 
    TVOL09  : Single; 
    TVOL10  : Single; 
    TVOL11  : Single; 
    TVOL12  : Single; 
    TVOL13  : Single; 
    TVOL14  : Single; 
    TTVOL1  : Single; 
    TTVOL2  : Single; 
    SPARE1  : Single; 
    SPARE2  : Single; 
    SPARE3  : Single; 
    SPARE4  : Single; 
    SPARE5  : Single; 
  end; 
 
  { DONE 1 : TWITS_162} 
  { Данные уровня 162 
    В файл заносятся результаты работы хроматографа. Запись происходит в функции 
    событий, после окончания цикла работы хроматографа. Одна запись - один цикл 
    работы хроматорафа. } 
{ 
  TWITS_162=record 
    DEPTCHRM: Single; 
    DEPTCHRV: Single; 
    DATECHR : LongInt; 
    TIMECHR : LongInt; 
    METHANE : LongInt; 
    ETHANE  : LongInt; 
    PROPANE : LongInt; 
    IBUTANE : LongInt; 
    NBUTANE : LongInt; 
    IPENTANE: LongInt; 
    NPENTANE: LongInt; 
    EPENTANE: LongInt; 
    IHEXANE : LongInt; 
    NHEXANE : LongInt; 
    CO2     : LongInt; 
    ACET    : LongInt; 
    SPARE1  : Single; 
    SPARE2  : Single; 
    SPARE3  : Single; 
    SPARE4  : Single; 
    SPARE5  : Single; 
  end; 
} 
{ 
DEPTCHRM - Измеренная глубина скважины, с которой отобрана анализируемая 
проба смеси газа (глубина отставания для газа) 
DEPTCHRV - Вертикальная глубина скважины, с которой отобрана анализируемая 
проба смеси газа (глубина отставания для газа по вертикали) 
DATECHR - Дата окончания цикла работы хроматографа 
TIMECHR - Время окончания цикла работы хроматографа 
METHANE - Концентрация метана в образце пробы 
ETHANE - Концентрация этана в образце пробы 
PROPANE - Концентрация пропана в образце пробы 
IBUTANE - Концентрация изобутана в образце пробы 
NBUTANE - Концентрация нормального бутана в образце пробы 
IPENTANE - Концентрация изопентана в образце пробы 
NPENTANE - Концентрация нормального пентана в образце пробы 
EPENTANE - Концентрация неопентана в образце пробы 
IHEXANE - Концентрация изогексана в образце пробы 
NHEXANE - Концентрация нормального гексана в образце пробы 
CO2 - Концентрация углекислого газа в образце пробы 
ACET - Концентрация ацетилена в образце пробы 
SPARE1 - Резервное поле записи (параметр определяется оператором) 
SPARE2 - Резервное поле записи (параметр определяется оператором) 
SPARE3 - Резервное поле записи (параметр определяется оператором) 
SPARE4 - Резервное поле записи (параметр определяется оператором) 
SPARE5 - Резервное поле записи (параметр определяется оператором) 
} 
  TWITS_162=record 
    DEPTCHRM: Single; 
    DEPTCHRV: Single; 
    DATECHR : LongInt; 
    TIMECHR : LongInt; 
    METHANE : LongInt; 
    ETHANE  : LongInt; 
    PROPANE : LongInt; 
    IBUTANE : LongInt; 
    NBUTANE : LongInt; 
    IPENTANE: LongInt; 
    NPENTANE: LongInt; 
    EPENTANE: LongInt; 
    IHEXANE : LongInt; 
    NHEXANE : LongInt; 
    CO2     : LongInt; 
    ACET    : LongInt; 
    SPARE1  : Single; 
    SPARE2  : Single; 
    SPARE3  : Single; 
    SPARE4  : Single; 
    SPARE5  : Single; 
  end; 
  { DONE 1 : TWITS_163} 
  { Данные уровня 163 
    В этот файл заносятся результаты компонентного анализа смеси газа 
    поступающего от дегазатора в функции глубин отставания для газа. } 
{ 
  TWITS_163=record 
    DEPTRETM: Single; 
    DEPTRETV: Single; 
    METHA   : LongInt; 
    METHN   : LongInt; 
    METHX   : LongInt; 
    ETHA    : LongInt; 
    ETHN    : LongInt; 
    ETHX    : LongInt; 
    PROPA   : LongInt; 
    PROPN   : LongInt; 
    PROPX   : LongInt; 
    IBUTA   : LongInt; 
    IBUTN   : LongInt; 
    IBUTX   : LongInt; 
    NBUTA   : LongInt; 
    NBUTN   : LongInt; 
    NBUTX   : LongInt; 
    IPENTA  : LongInt; 
    IPENTN  : LongInt; 
    IPENTX  : LongInt; 
    NPENTA  : LongInt; 
    NPENTN  : LongInt; 
    NPENTX  : LongInt; 
    EPENTA  : LongInt; 
    EPENTN  : LongInt; 
    EPENTX  : LongInt; 
    IHEXA   : LongInt; 
    IHEXN   : LongInt; 
    IHEXX   : LongInt; 
    NHEXA   : LongInt; 
    NHEXN   : LongInt; 
    NHEXX   : LongInt; 
    CO2A    : LongInt; 
    CO2N    : LongInt; 
    CO2X    : LongInt; 
    ACET    : LongInt; 
    SPARE1  : Single; 
    SPARE2  : Single; 
    SPARE3  : Single; 
    SPARE4  : Single; 
    SPARE5  : Single; 
  end; 
} 
{ 
DEPTRETM - Измеренная глубина скважины, с которой отобрана анализируемая 
проба смеси газа (глубина отставания для газа) 
DEPTRETV - Вертикальная глубина скважины, с которой отобрана анализируемая 
проба смеси газа (глубина отставания для газа по вертикали) 
METHA - Средняя концентрация метана в интервале записи 
METHN - Минимальная концентрация метана в интервале записи 
METHX - Максимальная концентрация метана в интервале записи 
ETHA - Средняя концентрация этана в интервале записи 
ETHN - Минимальная концентрация этана в интервале записи 
ETHX - Максимальная концентрация этана в интервале записи 
PROPA - Средняя концентрация пропана в интервале записи 
PROPN - Минимальная концентрация пропана в интервале записи 
PROPX - Максимальная концентрация пропана в интервале записи 
IBUTA - Средняя концентрация изобутана в интервале записи 
IBUTN - Минимальная концентрация изобутана в интервале записи 
IBUTX - Максимальная концентрация изобутана в интервале записи 
NBUTA - Средняя концентрация нормального бутана в интервале записи 
NBUTN - Минимальная концентрация нормального бутана в интервале записи 
NBUTX - Максимальная концентрация нормального бутана в интервале записи 
IPENTA - Средняя концентрация изопентана в интервале записи 
IPENTN - Минимальная концентрация изопентана в интервале записи 
IPENTX - Максимальная концентрация изопентана в интервале записи 
NPENTA - Средняя концентрация нормального пентана в интервале записи 
NPENTN - Минимальная концентрация нормального пентана в интервале записи 
NPENTX - Максимальная концентрация нормального пентана в интервале записи 
EPENTA - Средняя концентрация неопентана в интервале записи 
EPENTN - Минимальная концентрация неопентана в интервале записи 
EPENTX - Максимальная концентрация неопентана в интервале записи 
IHEXA - Средняя концентрация изогексана в интервале записи 
IHEXN - Минимальная концентрация изогексана в интервале записи 
IHEXX - Максимальная концентрация изогексана в интервале записи 
NHEXA - Средняя концентрация нормального гексана в интервале записи 
NHEXN - Минимальная концентрация нормального гексана в интервале записи 
NHEXX - Максимальная концентрация нормального гексана в интервале записи 
CO2A - Средняя концентрация углекислого газа в интервале записи 
CO2N - Минимальная концентрация углекислого газа в интервале записи 
CO2X - Максимальная концентрация углекислого газа в интервале записи 
ACET - Средняя концентрация ацетилена в интервале записи 
SPARE1 - Резервное поле записи (параметр определяется оператором) 
SPARE2 - Резервное поле записи (параметр определяется оператором) 
SPARE3 - Резервное поле записи (параметр определяется оператором) 
SPARE4 - Резервное поле записи (параметр определяется оператором) 
SPARE5 - Резервное поле записи (параметр определяется оператором) 
} 
  TWITS_163=record 
    DEPTRETM: Single; 
    DEPTRETV: Single; 
    METHA   : LongInt; 
    METHN   : LongInt; 
    METHX   : LongInt; 
    ETHA    : LongInt; 
    ETHN    : LongInt; 
    ETHX    : LongInt; 
    PROPA   : LongInt; 
    PROPN   : LongInt; 
    PROPX   : LongInt; 
    IBUTA   : LongInt; 
    IBUTN   : LongInt; 
    IBUTX   : LongInt; 
    NBUTA   : LongInt; 
    NBUTN   : LongInt; 
    NBUTX   : LongInt; 
    IPENTA  : LongInt; 
    IPENTN  : LongInt; 
    IPENTX  : LongInt; 
    NPENTA  : LongInt; 
    NPENTN  : LongInt; 
    NPENTX  : LongInt; 
    EPENTA  : LongInt; 
    EPENTN  : LongInt; 
    EPENTX  : LongInt; 
    IHEXA   : LongInt; 
    IHEXN   : LongInt; 
    IHEXX   : LongInt; 
    NHEXA   : LongInt; 
    NHEXN   : LongInt; 
    NHEXX   : LongInt; 
    CO2A    : LongInt; 
    CO2N    : LongInt; 
    CO2X    : LongInt; 
    ACET    : LongInt; 
    SPARE1  : Single; 
    SPARE2  : Single; 
    SPARE3  : Single; 
    SPARE4  : Single; 
    SPARE5  : Single; 
  end; 
 
  { DONE 1 : TWITS_164} 
  { Данные уровня 164 
    Регистрация данных происходит автоматически в функции глубин отставания 
    бурового раствора  } 
{ 
  TWITS_164=record 
    DEPTRETM: Single; 
    DEPTRETV: Single; 
    MDIL    : Single; 
    MDOA    : Single; 
    MTIL    : Single; 
    MTOA    : Single; 
    MCIL    : Single; 
    MCOA    : Single; 
    HSHPA   : Single; 
    HSPHA   : Single; 
    HSPHSA  : Single; 
    GASIL   : Single; 
    GASA    : Single; 
    GASX    : Single; 
    CO2A    : LongInt; 
    HSA     : LongInt; 
    HSX     : LongInt; 
    SPARE1  : Single; 
    SPARE2  : Single; 
    SPARE3  : Single; 
    SPARE4  : Single; 
    SPARE5  : Single; 
  end; 
} 
{ 
DEPTRETM - Измеренная глубина скважины, соответствующая отставанию 
раствора/шлама 
DEPTRETV - Вертикальная глубина скважины, соответствующая отставанию 
раствора/шлама 
MDIL - Плотность раствора на входе в скважину, соответствующая глубине 
отставания. 
MDOA - Плотность раствора на выходе 
MTIL - Температура раствора на входе в скважину, соответствующая глубине 
отставания. 
MTOA - Температура раствора на выходе из скважины. 
MCIL - Проводимость раствора на входе в скважину, соответствующая глубине 
отставания 
MCOA - Проводимость раствора на выходе из скважины. 
HSHPA - Среднее значение суммарного содержания сероводорода в воздухе над 
раствором, выходящим из скважины 
HSPHA - Среднее значение рН раствора, измеренное датчиком 
HSPHSA - Среднее значение процентного содержания ионов HS в буровом растворе. 
GASIL - Содержание газа в буровом растворе на входе в скважину. 
GASA - Среднее значение суммарного содержания газа в растворе на выходе из 
скважины. 
GASX - Максимальное значение суммарного содержания газа в растворе на выходе 
из скважины. 
CO2A - Среднее значение содержания углекислого газа в растворе на выходе из 
скважины. 
HSA - Среднее значение сероводорода в растворе на выходе из скважины. 
HSX - Максимальное значение содержания сероводорода в растворе на выходе из 
скважины. 
SPARE1 - Резервное поле записи (параметр определяется оператором) 
SPARE2 - Резервное поле записи (параметр определяется оператором) 
SPARE3 - Резервное поле записи (параметр определяется оператором) 
SPARE4 - Резервное поле записи (параметр определяется оператором) 
SPARE5 - Резервное поле записи (параметр определяется оператором) 
} 
  TWITS_164=record 
    DEPTRETM: Single; 
    DEPTRETV: Single; 
    MDIL    : Single; 
    MDOA    : Single; 
    MTIL    : Single; 
    MTOA    : Single; 
    MCIL    : Single; 
    MCOA    : Single; 
    HSHPA   : Single; 
    HSPHA   : Single; 
    HSPHSA  : Single; 
    GASIL   : Single; 
    GASA    : Single; 
    GASX    : Single; 
    CO2A    : LongInt; 
    HSA     : LongInt; 
    HSX     : LongInt; 
    SPARE1  : Single; 
    SPARE2  : Single; 
    SPARE3  : Single; 
    SPARE4  : Single; 
    SPARE5  : Single; 
  end; 
 
  { DONE 1 : TWITS_165} 
  { Данные уровня 165 
    В файл записываются данные литологии образцов в функции событий. Ввод данных 
    произодится вручную. } 
{ 
  TWITS_165=record 
    DEPTSAMM: Single; 
    DEPTSAMV: Single; 
    DESCTYPE: Array [1..8] of char; 
    L1TYPE  : Array [1..16] of char; 
    L1PERC  : Smallint; 
    L1CLASS : Array [1..16] of char; 
    L1COLOR : Array [1..16] of char; 
    L1TEXT  : Array [1..16] of char; 
    L1HARD  : Array [1..16] of char; 
    L1SIZE  : Array [1..16] of char; 
    L1ROUND : Array [1..16] of char; 
    L1SORT  : Array [1..16] of char; 
    L1MATCEM: Array [1..16] of char; 
    L1ACC   : Array [1..16] of char; 
    L1POR   : Single; 
    L1PERM  : Single; 
    L2TYPE  : Array [1..16] of char; 
    L2PERC  : SmallInt; 
    L2CLASS : Array [1..16] of char; 
    L2COLOR : Array [1..16] of char; 
    L2TEXT  : Array [1..16] of char; 
    L2HARD  : Array [1..16] of char; 
    L2SIZE  : Array [1..16] of char; 
    L2ROUND : Array [1..16] of char; 
    L2SORT  : Array [1..16] of char; 
    L2MATCEM: Array [1..16] of char; 
    L2ACC   : Array [1..16] of char; 
    L2POR   : Single; 
    L2PERM  : Single; 
    L3TYPE  : Array [1..16] of char; 
    L3PERC  : SmallInt; 
    L3CLASS : Array [1..16] of char; 
    L4TYPE  : Array [1..16] of char; 
    L4PERC  : SmallInt; 
    L4CLASS : Array [1..16] of char; 
    L5TYPE  : Array [1..16] of char; 
    L5PERC  : SmallInt; 
    L5CLASS : Array [1..16] of char; 
    FOSS    : Array [1..16] of char; 
    COMPSHOW: Array [1..16] of char; 
    BULKDEN : Single; 
    GASCUTT : Single; 
    CCAL    : Single; 
    CDOL    : Single; 
    CEC     : Single; 
    CAVINGS : SmallInt; 
    SHALEDEN: Single; 
    SPARE1  : Single; 
    SPARE2  : Single; 
    SPARE3  : Single; 
    SPARE4  : Single; 
    SPARE5  : Single; 
  end; 
} 
{ 
DEPTSAMM - Измеренная глубина скважины, соответствующая происхождению образца 
DEPTSAMV - Вертикальная глубина скважины, соответствующая происхождению образца 
DESCTYPE - Тип образца (шлам - 1; керн - 2; проба со стенки скважины - 3) 
L1TYPE - Тип основной литологической разности образца 
L1PERC - Процентное содержание основной литологической разности в образце 
L1CLASS - Классификация основной литологической разности в образце. 
L1COLOR - Цвет основной породы, представленной в образце 
L1TEXT - Текстура основной породы, представленной в образце. 
L1HARD - Твердость основной породы в образце. 
L1SIZE - Среднее значение зернистости основной породы. 
L1ROUND - Степень окатанности зерен основной породы. 
L1SORT - Степень сортированности зерен основной породы. 
L1MATCEM - Тип матрицы или цементного материала образца 
L1ACC - Основная аксессуарный материал в основной породе образца 
L1POR - Измеренная пористость литологии 1 
L1PERM - Измеренное значение проницаемости литологии 1 
L2TYPE - Тип вторичной литологии присутствующей в пробе образца 
L2PERC - Процентное содержание литологии 2 в образце 
L2CLASS - Классификация литологии 2. 
L2COLOR - Цвет литологии 2 присутствующей в пробе. 
L2TEXT - Текстура литологии 2 присутствующей в пробе. 
L2HARD - Твердость вторичной породы образца. 
L2SIZE - Средний размер зерна наблюдаемый в литологии 2. 
L2ROUND - Степень округления зерна наблюдаемая в литологии 2. 
L2SORT - Степень сортировки отмеченоя в литологии 2. 
L2MATCEM - Тип матрицы или цемента в литологии 2. 
L2ACC - Основной аксессуар, связанный с литологии 2 в образце. 
L2POR - Измеренная пористость литологии 2. 
L2PERM - Измеренная проницаемость литологии 2 
L3TYPE - Тип литологии 3 присутствующей в пробе. 
L3PERC - Процентное  содержание литологии 3 в образце. 
L3CLASS - Классификация литологии 3. 
L4TYPE - Тип литологии 4 присутствующей в пробе. 
L4PERC - Процентное  содержание литологии 4 в образце. 
L4CLASS - Классификация литологии 4. 
L5TYPE - Тип литологии 5 присутствующей в пробе. 
L5PERC - Процентное  содержание литологии 5 в образце. 
L5CLASS - Классификация литологии 5. 
FOSS - Количество и тип окаменелостей наблюдаемых в образце. 
COMPSHOW - Наблюдаемое содержание углеводородов в образце в условных 
единицах ( хор., средн., следы, нет...) 
BULKDEN - Объемная плотность образца 
GASCUTT - Содержание газа в образце, после термоваккуумной дегазации. 
CCAL - Процентное содержание кальцита, измеренное в образце 
CDOL - Процентное содержание доломита, измеренное в образце 
CEC  - Фактор глин или катионной способности образца, определенный методом 
титрования метиленовой сини 
CAVINGS - Кавернозность в процентах 
SHALEDEN - Плотность глинистых частиц образца. 
SPARE1 - Резервное поле записи (параметр определяется оператором) 
SPARE2 - Резервное поле записи (параметр определяется оператором) 
SPARE3 - Резервное поле записи (параметр определяется оператором) 
SPARE4 - Резервное поле записи (параметр определяется оператором) 
SPARE5 - Резервное поле записи (параметр определяется оператором) 
} 
  TWITS_165=record 
    DEPTSAMM: Single; 
    DEPTSAMV: Single; 
    DESCTYPE: Array [1..8] of char; 
    L1TYPE  : Array [1..16] of char; 
    L1PERC  : Smallint; 
    L1CLASS : Array [1..16] of char; 
    L1COLOR : Array [1..16] of char; 
    L1TEXT  : Array [1..16] of char; 
    L1HARD  : Array [1..16] of char; 
    L1SIZE  : Array [1..16] of char; 
    L1ROUND : Array [1..16] of char; 
    L1SORT  : Array [1..16] of char; 
    L1MATCEM: Array [1..16] of char; 
    L1ACC   : Array [1..16] of char; 
    L1POR   : Single; 
    L1PERM  : Single; 
    L2TYPE  : Array [1..16] of char; 
    L2PERC  : SmallInt; 
    L2CLASS : Array [1..16] of char; 
    L2COLOR : Array [1..16] of char; 
    L2TEXT  : Array [1..16] of char; 
    L2HARD  : Array [1..16] of char; 
    L2SIZE  : Array [1..16] of char; 
    L2ROUND : Array [1..16] of char; 
    L2SORT  : Array [1..16] of char; 
    L2MATCEM: Array [1..16] of char; 
    L2ACC   : Array [1..16] of char; 
    L2POR   : Single; 
    L2PERM  : Single; 
    L3TYPE  : Array [1..16] of char; 
    L3PERC  : SmallInt; 
    L3CLASS : Array [1..16] of char; 
    L4TYPE  : Array [1..16] of char; 
    L4PERC  : SmallInt; 
    L4CLASS : Array [1..16] of char; 
    L5TYPE  : Array [1..16] of char; 
    L5PERC  : SmallInt; 
    L5CLASS : Array [1..16] of char; 
    FOSS    : Array [1..16] of char; 
    COMPSHOW: Array [1..16] of char; 
    BULKDEN : Single; 
    GASCUTT : Single; 
    CCAL    : Single; 
    CDOL    : Single; 
    CEC     : Single; 
    CAVINGS : SmallInt; 
    SHALEDEN: Single; 
    SPARE1  : Single; 
    SPARE2  : Single; 
    SPARE3  : Single; 
    SPARE4  : Single; 
    SPARE5  : Single; 
  end; 
 
  { DONE 1 : TWITS_166} 
  { Данные уровня 166 
    Данные заносятся в файл вручную в функции событий, когда выполнен анализ 
    проб шлама на содержание углеводородов.} 
{ 
  TWITS_166=record 
    SHOWNUM : SmallInt; 
    DEPTSITM: Single; 
    DEPTSITV: Single; 
    DEPTSIBM: Single; 
    DEPTSIBV: Single; 
    SHLTYPE : Array [1..16] of char; 
    SHLCLASS: Array [1..16] of char; 
    SHLCOLOR: Array [1..16] of char; 
    SHLTEXT : Array [1..16] of char; 
    SHLHARD : Array [1..16] of char; 
    SHLSIZE : Array [1..16] of char; 
    SHLROUND: Array [1..16] of char; 
    SHLSORT : Array [1..16] of char; 
    SHLMC   : Array [1..16] of char; 
    SHLACC  : Array [1..16] of char; 
    SHLPORV : Array [1..16] of char; 
    SHLPORM : Single; 
    SHLPERM : Single; 
    SHLSTAIN: Array [1..64] of char; 
    SHLFLUOR: Array [1..64] of char; 
    SHLCUT  : Array [1..64] of char; 
    SHLGCUT : Single; 
    SHSAL   : LongInt; 
    METHMUD : LongInt; 
    ETHMUD  : LongInt; 
    PROPMUD : LongInt; 
    IBUTMUD : LongInt; 
    NBUTMUD : LongInt; 
    IPENMUD : LongInt; 
    NPENMUD : LongInt; 
    EPENMUD : LongInt; 
    IHEXMUD : LongInt; 
    NHEXMUD : LongInt; 
    SHOWCOMM: Array [1..128] of char; 
    SPARE1  : Single; 
    SPARE2  : Single; 
    SPARE3  : Single; 
    SPARE4  : Single; 
    SPARE5  : Single; 
  end; 
} 
{ 
SHOWNUM - Последовательное число, определяющее номер пробы 
DEPTSITM - Измеренная глубина верхней границы интервала отбора шлама 
DEPTSITV - Вертикальная глубина верхней границы интервала отбора шлама 
DEPTSIBM - Измеренная глубина нижней границы интервала отбора шлама 
DEPTSIBV - Вертикальная глубина нижней границы интервала отбора шлама 
SHLTYPE - Литология пробы 
SHLCLASS - Классификация породы 
SHLCOLOR - Цвет породы 
SHLTEXT - Текстура породы 
SHLHARD - Твердость/крепость породы 
SHLSIZE - Среднее значение зернистости породы 
SHLROUND - Окатанность зерен 
SHLSORT - Степень сортировки в породе 
SHLMC - Тип матрицы или цементного материала породы 
SHLACC - Основной аксессуар, связанный с породой 
SHLPORV - Визуальная пористость породы 
SHLPORM - Измеренная пористость породы 
SHLPERM - Измеренная проницаемость породы 
SHLSTAIN - Количество, степень и цвет окрашивания наблюдаемые в образце, 
например пятнистый, полосатый, неоднородный, однородный, с 
соответствующим цветом и интенсивностью. 
SHLFLUOR - Результаты люминесцентного анализа 
SHLCUT - Результаты экстрагирования флюида из пробы шлама (сольвентный анализ) 
SHLGCUT - Концентрация газа в образце 
SHSAL - Минерализация фильтрата бурового раствора в образце. 
METHMUD - Максимальное содержание метана при дегазации раствора при бурении 
интервала образца 
ETHMUD - Максимальное содержание этана при дегазации раствора при бурении 
интервала образца 
PROPMUD - Максимальное содержание пропана при дегазации раствора при бурении 
интервала образца 
IBUTMUD - Максимальное содержание изобутана при дегазации раствора при 
бурении интервала образца 
NBUTMUD - Максимальное содержание бутана при дегазации раствора при бурении 
интервала образца 
IPENMUD - Максимальное содержание изопентана при дегазации раствора при 
бурении интервала образца 
NPENMUD - Максимальное содержание пентана при дегазации раствора при бурении 
интервала образца 
EPENMUD - Максимальное содержание неопентана при дегазации раствора при 
бурении интервала образца 
IHEXMUD - Максимальное содержание изогексана при дегазации раствора при 
бурении интервала образца 
NHEXMUD - Максимальное содержание гексана при дегазации раствора при бурении 
интервала образца 
SHOWCOMM - Комментарии 
SPARE1 - Резервное поле записи (параметр определяется оператором) 
SPARE2 - Резервное поле записи (параметр определяется оператором) 
SPARE3 - Резервное поле записи (параметр определяется оператором) 
SPARE4 - Резервное поле записи (параметр определяется оператором) 
SPARE5 - Резервное поле записи (параметр определяется оператором) 
} 
  TWITS_166=record 
    SHOWNUM : SmallInt; 
    DEPTSITM: Single; 
    DEPTSITV: Single; 
    DEPTSIBM: Single; 
    DEPTSIBV: Single; 
    SHLTYPE : Array [1..16] of char; 
    SHLCLASS: Array [1..16] of char; 
    SHLCOLOR: Array [1..16] of char; 
    SHLTEXT : Array [1..16] of char; 
    SHLHARD : Array [1..16] of char; 
    SHLSIZE : Array [1..16] of char; 
    SHLROUND: Array [1..16] of char; 
    SHLSORT : Array [1..16] of char; 
    SHLMC   : Array [1..16] of char; 
    SHLACC  : Array [1..16] of char; 
    SHLPORV : Array [1..16] of char; 
    SHLPORM : Single; 
    SHLPERM : Single; 
    SHLSTAIN: Array [1..64] of char; 
    SHLFLUOR: Array [1..64] of char; 
    SHLCUT  : Array [1..64] of char; 
    SHLGCUT : Single; 
    SHSAL   : LongInt; 
    METHMUD : LongInt; 
    ETHMUD  : LongInt; 
    PROPMUD : LongInt; 
    IBUTMUD : LongInt; 
    NBUTMUD : LongInt; 
    IPENMUD : LongInt; 
    NPENMUD : LongInt; 
    EPENMUD : LongInt; 
    IHEXMUD : LongInt; 
    NHEXMUD : LongInt; 
    SHOWCOMM: Array [1..128] of char; 
    SPARE1  : Single; 
    SPARE2  : Single; 
    SPARE3  : Single; 
    SPARE4  : Single; 
    SPARE5  : Single; 
  end; 
 
  { DONE 1 : TWITS_167} 
  { Данные уровня 167 
    Данные заносятся в файл в режиме реального времени в функции времени при 
    операциях цементирования на бровой. Возможно поступление информации от 
    системы контроля цементирования ( 0 уровень передачи данных)} 
{ 
  TWITS_167=record 
    DEPTMEAS: Single; 
    DEPTVERT: Single; 
    DEPTCSGM: Single; 
    DEPTCSGV: Single; 
    CEMPPA  : Single; 
    HKLA    : Single; 
    BLKPOS  : Single; 
    CEMFIC  : Single; 
    CEMFIA  : Single; 
    CEMFOA  : Single; 
    CEMFOP  : SmallInt; 
    CEMDIA  : Single; 
    CEMDOA  : Single; 
    ECDCSG  : Single; 
    CEMTIA  : Single; 
    CEMTOA  : Single; 
    CEMSTAGE: SmallInt; 
    DEPTDVT : Single; 
    CEMFTYPE: Array [1..16] of char; 
    CEMCUMRT: Single; 
    CEMIVOL : Single; 
    CEMCVOL : Single; 
    CEMTVOL : Single; 
    CEMBPVOL: Single; 
    CEMPLUGS: Array [1..8] of char; 
    CEMJTYP : Array [1..16] of char; 
    SPARE1  : Single; 
    SPARE2  : Single; 
    SPARE3  : Single; 
    SPARE4  : Single; 
    SPARE5  : Single; 
  end; 
} 
{ 
DEPTMEAS - Измеренная глубина скважины 
DEPTVERT - Вертикальная глубина скважины 
DEPTCSGM - Измеренная глубина башмака колонны 
DEPTCSGV - Вертикальная глубина башмака колонны 
CEMPPA - Измеренное значенние давления нагнетания цементировочного насоса 
HKLA - Средняя нагрузка на крюк 
BLKPOS - Положение талевого блока относительно ротора 
CEMFIC - Расход цементного раствора на входе в скважину (рассчитанный по 
ходам насоса) 
CEMFIA - Расход цементного раствора на входе в скважину, измеренный датчиком 
расхода 
CEMFOA - Расход жидкости на выходе из скважины, измеренный датчиком расхода 
CEMFOP - Расход жидкости на выходе из скважины [1..100] в процентах. 
Измеряется лопаткой 
CEMDIA - Плотность цементного раствора на входе в скважину 
CEMDOA - Плотность жидкости на выходе из скважины 
ECDCSG - Эквивалентная циркуляционная плотность на башмаке колонны 
CEMTIA - Температура цементного раствора на входе в скважину 
CEMTOA - Температура жидкости на выходе из скважины 
CEMSTAGE - Текущее число стадии цементирования (то есть 1, 2, 3, и т.д.). 
DEPTDVT - Измеренная глубина цементировочного клапана 
CEMFTYPE - Тип закачиваемой жидкости (промывочная жидкость, буфер, цементный 
раствор, продавка) 
CEMCUMRT - Суммарный объем раствора, поступившего из скважины с начала 
закачки цемента 
CEMIVOL - Суммарный объем закаченной в скважину жидкости (при смене типа 
жидкости суммирование начинается с нуля) 
CEMCVOL - Суммарный объем цемента закаченный в скважину (все стадии 
цементирование) 
CEMTVOL - Суммарный объем всех типов жидкости, закаченный в скважину 
(буфер+цемент+продавка) 
CEMBPVOL - Расчетный объем для посадки пробки 
CEMPLUGS - Число/статус всех пробок для текущей стадии. Пронумеруйте пробки 
в последовательном применении, начинающемся с первой пробки, 
которая будет выпущена (то есть нижняя цементировочная пробка (1), 
средний пробка (2), верхняя цементировочная пробка (3)). Статус 
или нагружена (L) или подвешена (D) (то есть 1D2L3L). 
CEMJTYP - Тип выполнямого цементирования (обсадная колонна, хвостови, 
мост/пробка, изоляционные работы под давлением) 
SPARE1 - Резервное поле записи (параметр определяется оператором) 
SPARE2 - Резервное поле записи (параметр определяется оператором) 
SPARE3 - Резервное поле записи (параметр определяется оператором) 
SPARE4 - Резервное поле записи (параметр определяется оператором) 
SPARE5 - Резервное поле записи (параметр определяется оператором) 
} 
  TWITS_167=record 
    DEPTMEAS: Single; 
    DEPTVERT: Single; 
    DEPTCSGM: Single; 
    DEPTCSGV: Single; 
    CEMPPA  : Single; 
    HKLA    : Single; 
    BLKPOS  : Single; 
    CEMFIC  : Single; 
    CEMFIA  : Single; 
    CEMFOA  : Single; 
    CEMFOP  : SmallInt; 
    CEMDIA  : Single; 
    CEMDOA  : Single; 
    ECDCSG  : Single; 
    CEMTIA  : Single; 
    CEMTOA  : Single; 
    CEMSTAGE: SmallInt; 
    DEPTDVT : Single; 
    CEMFTYPE: Array [1..16] of char; 
    CEMCUMRT: Single; 
    CEMIVOL : Single; 
    CEMCVOL : Single; 
    CEMTVOL : Single; 
    CEMBPVOL: Single; 
    CEMPLUGS: Array [1..8] of char; 
    CEMJTYP : Array [1..16] of char; 
    SPARE1  : Single; 
    SPARE2  : Single; 
    SPARE3  : Single; 
    SPARE4  : Single; 
    SPARE5  : Single; 
  end; 
 
  { DONE 1 : TWITS_168} 
  { Данные уровня 168 
    Запись в файл происходит в режиме реального времени в функции времени 
    (возможна передача от иного поставщика информации (0 уровень передачи данных). 
    Запись в файл происходит только в процессе опробования/испытания пласта на 
    трубах.} 
{ 
  TWITS_168=record 
    DSTID   : Array [1..8] of char; 
    DEPTDITM: Single; 
    DEPTDITV: Single; 
    DEPTDIBM: Single; 
    DEPTDIBV: Single; 
    DSTTTIME: LongInt; 
    DSTSTATE: SmallInt; 
    DSTSPTUB: Single; 
    DSTSPCAS: Single; 
    DSTSTTUB: Single; 
    DSTBHP  : Single; 
    DSTBHT  : Single; 
    DSTLIQFR: Single; 
    DSTGASFR: Single; 
    DSTTOTFR: Single; 
    DSTCLP  : Single; 
    DSTCGP  : Single; 
    DSTCTP  : Single; 
    HSA     : LongInt; 
    SPARE1  : Single; 
    SPARE2  : Single; 
    SPARE3  : Single; 
    SPARE4  : Single; 
    SPARE5  : Single; 
  end; 
} 
{ 
DSTID - Тип пластоиспытателя 
DEPTDITM - Верхняя граница интервала испытания (глубина измеренная) 
DEPTDITV - Вертикальная глубина верхней границы интервала испытания 
DEPTDIBM - Нижняя граница интервала испытания (глубина измеренная) 
DEPTDIBV - Вертикальная глубина нижней границы интервала испытания 
DSTTTIME - Общее время нахождения компоновки в скважине с начала рейса/спуска 
в часах. 
DSTSTATE - Текущее состояние скважины (1 - открыто; 0 - закрыто) 
DSTSPTUB - Давление в трубах (на поверхности) 
DSTSPCAS - Давление в затрубье (на поверхности) 
DSTSTTUB - Температура в трубах 
DSTBHP - Давление на забое 
DSTBHT - Температура на забое 
DSTLIQFR - Измеренный расход флюида 
DSTGASFR - Измеренный расход газа 
DSTTOTFR - Измеренный общий расход флюида 
DSTCLP - Общий объем флюида поступивший из пласта 
DSTCGP - Общий объем газа поступившего из пласта 
DSTCTP - Суммарный объем притока из пласта 
HSA - Содержание сероводорода 
SPARE1 - Резервное поле записи (параметр определяется оператором) 
SPARE2 - Резервное поле записи (параметр определяется оператором) 
SPARE3 - Резервное поле записи (параметр определяется оператором) 
SPARE4 - Резервное поле записи (параметр определяется оператором) 
SPARE5 - Резервное поле записи (параметр определяется оператором) 
} 
  TWITS_168=record 
    DSTID   : Array [1..8] of char; 
    DEPTDITM: Single; 
    DEPTDITV: Single; 
    DEPTDIBM: Single; 
    DEPTDIBV: Single; 
    DSTTTIME: LongInt; 
    DSTSTATE: SmallInt; 
    DSTSPTUB: Single; 
    DSTSPCAS: Single; 
    DSTSTTUB: Single; 
    DSTBHP  : Single; 
    DSTBHT  : Single; 
    DSTLIQFR: Single; 
    DSTGASFR: Single; 
    DSTTOTFR: Single; 
    DSTCLP  : Single; 
    DSTCGP  : Single; 
    DSTCTP  : Single; 
    HSA     : LongInt; 
    SPARE1  : Single; 
    SPARE2  : Single; 
    SPARE3  : Single; 
    SPARE4  : Single; 
    SPARE5  : Single; 
  end; 
 
  { DONE 1 : TWITS_169} 
  { Данные уровня 169 
    В файл записываются данные по конфигурации компоновки, спускаемой в скважину 
    в функции событий. Данные заносятся оператором вручную. Каждый рейс имеет 
    свою запись конфигурации компоновки.} 
{ 
  TWITS_169=record 
    DEPTMEAS: Single; 
    DEPTVERT: Single; 
    DSNUM   : SmallInt; 
    DS1OD   : Single; 
    DS1ID   : Single; 
    DS1JID  : Single; 
    DS1JOD  : Single; 
    DS1MASS : Single; 
    DS1LEN  : Single; 
    DS2OD   : Single; 
    DS2ID   : Single; 
    DS2JID  : Single; 
    DS2JOD  : Single; 
    DS2MASS : Single; 
    DS2LEN  : Single; 
    DS3OD   : Single; 
    DS3ID   : Single; 
    DS3JID  : Single; 
    DS3JOD  : Single; 
    DS3MASS : Single; 
    DS3LEN  : Single; 
    DS4OD   : Single; 
    DS4ID   : Single; 
    DS4JID  : Single; 
    DS4JOD  : Single; 
    DS4MASS : Single; 
    DS4LEN  : Single; 
    DS5OD   : Single; 
    DS5ID   : Single; 
    DS5JID  : Single; 
    DS5JOD  : Single; 
    DS5MASS : Single; 
    DS5LEN  : Single; 
    DS6OD   : Single; 
    DS6ID   : Single; 
    DS6JID  : Single; 
    DS6JOD  : Single; 
    DS6MASS : Single; 
    KELLYID : Single; 
    KELLYLEN: Single; 
    DPSTDLEN: Single; 
    DPSTDJNT: SmallInt; 
    HOLENUM : SmallInt; 
    HL1DIAM : Single; 
    HL1LEN  : Single; 
    HL2DIAM : Single; 
    HL2LEN  : Single; 
    HL3DIAM : Single; 
    HL3LEN  : Single; 
    HL4DIAM : Single; 
    HL4LEN  : Single; 
    HL5DIAM : Single; 
    PUMP1CAP: Single; 
    PUMP1EFF: SmallInt; 
    PUMP2CAP: Single; 
    PUMP2EFF: SmallInt; 
    PUMP3CAP: Single; 
    PUMP3EFF: SmallInt; 
    RIGCOST : SmallInt; 
    TRIPRATE: Single; 
    KILLID  : Single; 
    KILLJID : Single; 
    KILLJF  : SmallInt; 
    KILLLEN : Single; 
    CHKID   : Single; 
    CHKJID  : Single; 
    CHKJF   : SmallInt; 
    CHKLEN  : Single; 
    DEPTCSGM: Single; 
    DEPTCSGV: Single; 
    DEPTPITM: Single; 
    DEPTPITV: Single; 
    FPGPIT  : Single; 
    DRLGCONT: array [1..16] of char; 
    RIGNAME : array [1..16] of char; 
    RIGTYPE : array [1..16] of char; 
    VENDOR1 : array [1..32] of char; 
    VENDOR2 : array [1..32] of char; 
    VENDOR3 : array [1..32] of char; 
    VENDOR4 : array [1..32] of char; 
    VENDOR5 : array [1..32] of char; 
    VENDOR6 : array [1..32] of char; 
    SPARE1  : Single; 
    SPARE2  : Single; 
    SPARE3  : Single; 
    SPARE4  : Single; 
    SPARE5  : Single; 
  end; 
} 
{ 
DEPTMEAS - Измеренная глубина скважины на начало рейса. 
DEPTVERT - Вертикальная глубина скважины на начало рейса 
DSNUM - Число различных секций в компоновке бурильной колонны. Максимально 
можно ввести 6 секций, если количество элементов компоновки превышает 
это число, то объединяют сопостовимые секции и записывают как одну. 
Компоновка описывается снизу вверх. Длина последнего элемента 
компоновки (бурильных труб) не указывается. По мере увеличения 
глубины в процессе бурения с добавлением новых труб, длина последней 
секции пересчитывается путем вычитания из глубины скважины 
фактических длин предыдущих секций компоновки. 
DS1OD - Наружный/внешний диаметр 1 секции компоновки 
DS1ID - Внутренний диаметр 1 секции компоновки 
DS1JID - Внутренний диаметр муфты/замкового соединения 1 секции компоновки 
DS1JOD - Внешний диаметр муфты/замкового соединения 1 секции компоновки 
DS1MASS - Масса на единицу длины 1 секции компоновки (кг/м или фунт/фут) 
DS1LEN - Длина 1 секции компоновки 
DS2OD - Наружный/внешний диаметр 2 секции компоновки 
DS2ID - Внутренний диаметр 2 секции компоновки 
DS2JID - Внутренний диаметр муфты/замкового соединения 2 секции компоновки 
DS2JOD - Внешний диаметр муфты/замкового соединения 2 секции компоновки 
DS2MASS - Масса на единицу длины 2 секции компоновки (кг/м или фунт/фут) 
DS2LEN - Длина 2 секции компоновки 
DS3OD - Наружный/внешний диаметр 3 секции компоновки 
DS3ID - Внутренний диаметр 3 секции компоновки 
DS3JID - Внутренний диаметр муфты/замкового соединения 3 секции компоновки 
DS3JOD - Внешний диаметр муфты/замкового соединения 3 секции компоновки 
DS3MASS - Масса на единицу длины 3 секции компоновки (кг/м или фунт/фут) 
DS3LEN - Длина 3 секции компоновки 
DS4OD - Наружный/внешний диаметр 4 секции компоновки 
DS4ID - Внутренний диаметр 4 секции компоновки 
DS4JID - Внутренний диаметр муфты/замкового соединения 4 секции компоновки 
DS4JOD - Внешний диаметр муфты/замкового соединения 4 секции компоновки 
DS4MASS - Масса на единицу длины 4 секции компоновки (кг/м или фунт/фут) 
DS4LEN - Длина 4 секции компоновки 
DS5OD - Наружный/внешний диаметр 5 секции компоновки 
DS5ID - Внутренний диаметр 5 секции компоновки 
DS5JID - Внутренний диаметр муфты/замкового соединения 5 секции компоновки 
DS5JOD - Внешний диаметр муфты/замкового соединения 5 секции компоновки 
DS5MASS - Масса на единицу длины 5 секции компоновки (кг/м или фунт/фут) 
DS5LEN - Длина 5 секции компоновки 
DS6OD - Наружный/внешний диаметр 6 секции компоновки 
DS6ID - Внутренний диаметр 6 секции компоновки 
DS6JID - Внутренний диаметр муфты/замкового соединения 6 секции компоновки 
DS6JOD - Внешний диаметр муфты/замкового соединения 6 секции компоновки 
DS6MASS - Масса на единицу длины 6 секции компоновки (кг/м или фунт/фут) 
KELLYID - Внутренний диаметр ведущей трубы (квадрата) 
KELLYLEN - Длина ведущей трубы (квадрата) 
DPSTDLEN - Средняя длина свечи бурильных труб 
DPSTDJNT - Число замковых соединений в свече бурильных труб (как правило 2 или 3) 
HOLENUM - Число различных секций диаметра ствола скважины. Максимально 5. 
Описание вводится сверху вниз. Длина последней секции не указывается, 
поскольку она будет увеличиваться с углублением скважины. Длина 
последней секции вычисляется путем вычитания из глубины скважины 
длин предыдущих секций. 
 
HL1DIAM - Диаметр 1 секции диаметра скважины 
HL1LEN - Длина 1 секции диаметра скважины 
HL2DIAM - Диаметр 2 секции диаметра скважины 
HL2LEN - Длина 2 секции диаметра скважины 
HL3DIAM - Диаметр 3 секции диаметра скважины 
HL3LEN - Длина 3 секции диаметра скважины 
HL4DIAM - Диаметр 4 секции диаметра скважины 
HL4LEN - Длина 4 секции диаметра скважины 
HL5DIAM - Диаметр 5 секции диаметра скважины 
PUMP1CAP - Объем жидкости прокачиваемый 1 буровым насосом за 1 ход при 100% 
заполнении 
PUMP1EFF - Коэффициент заполнения для 1 насоса 
PUMP2CAP - Объем жидкости прокачиваемый 2 буровым насосом за 1 ход при 100% 
заполнении 
PUMP2EFF - Коэффициент заполнения для 2 насоса 
PUMP3CAP - Объем жидкости прокачиваемый 3 буровым насосом за 1 ход при 100% 
заполнении 
PUMP3EFF - Коэффициент заполнения для 3 насоса 
RIGCOST - Стоимость 1 часа эксплуатации оборудования буровой установки 
TRIPRATE - Предполагаемая средняя скорость спускоподъемной операции 
KILLID - Внутренний диаметр линии глушения 
KILLJID - Внутренний диаметр замковых соединений линии глушения 
KILLJF - Длина замковых соединений в процентах от общей длины линии глушения 
KILLLEN - Длина линии глушения 
CHKID - Внутренний диаметр линии дросселирования 
CHKJID - Внутренний диаметр замковых соединений линии дросселирования 
CHKJF - Длина замковых соединений в процентах от общей длины линии 
дросселирования 
CHKLEN - Длина линии дросселирования 
DEPTCSGM - Измеренная глубина башмака последней колонны 
DEPTCSGV - Вертикальная глубина башмака последней колонны 
DEPTPITM - Измеренная глубина определения прочности породы/цементного камня 
DEPTPITV - Вертикальная глубина определения прочности породы/цементного камня 
FPGPIT - Давление  прочности породы/цементного камня (гидростатика + давление 
нагнетания), выраженное в эквивалентной плотности раствора 
DRLGCONT - Название бурового подрядчика 
RIGNAME - Название буровой установки 
RIGTYPE - Тип буровой установки 
VENDOR1 - Название сервисной компании, работающей на скважине 
VENDOR2 - Название сервисной компании, работающей на скважине 
VENDOR3 - Название сервисной компании, работающей на скважине 
VENDOR4 - Название сервисной компании, работающей на скважине 
VENDOR5 - Название сервисной компании, работающей на скважине 
VENDOR6 - Название сервисной компании, работающей на скважине 
SPARE1 - Резервное поле записи (параметр определяется оператором) 
SPARE2 - Резервное поле записи (параметр определяется оператором) 
SPARE3 - Резервное поле записи (параметр определяется оператором) 
SPARE4 - Резервное поле записи (параметр определяется оператором) 
SPARE5 - Резервное поле записи (параметр определяется оператором) 
} 
  TWITS_169=record 
    DEPTMEAS: Single; 
    DEPTVERT: Single; 
    DSNUM   : SmallInt; 
    DS1OD   : Single; 
    DS1ID   : Single; 
    DS1JID  : Single; 
    DS1JOD  : Single; 
    DS1MASS : Single; 
    DS1LEN  : Single; 
    DS2OD   : Single; 
    DS2ID   : Single; 
    DS2JID  : Single; 
    DS2JOD  : Single; 
    DS2MASS : Single; 
    DS2LEN  : Single; 
    DS3OD   : Single; 
    DS3ID   : Single; 
    DS3JID  : Single; 
    DS3JOD  : Single; 
    DS3MASS : Single; 
    DS3LEN  : Single; 
    DS4OD   : Single; 
    DS4ID   : Single; 
    DS4JID  : Single; 
    DS4JOD  : Single; 
    DS4MASS : Single; 
    DS4LEN  : Single; 
    DS5OD   : Single; 
    DS5ID   : Single; 
    DS5JID  : Single; 
    DS5JOD  : Single; 
    DS5MASS : Single; 
    DS5LEN  : Single; 
    DS6OD   : Single; 
    DS6ID   : Single; 
    DS6JID  : Single; 
    DS6JOD  : Single; 
    DS6MASS : Single; 
    KELLYID : Single; 
    KELLYLEN: Single; 
    DPSTDLEN: Single; 
    DPSTDJNT: SmallInt; 
    HOLENUM : SmallInt; 
    HL1DIAM : Single; 
    HL1LEN  : Single; 
    HL2DIAM : Single; 
    HL2LEN  : Single; 
    HL3DIAM : Single; 
    HL3LEN  : Single; 
    HL4DIAM : Single; 
    HL4LEN  : Single; 
    HL5DIAM : Single; 
    PUMP1CAP: Single; 
    PUMP1EFF: SmallInt; 
    PUMP2CAP: Single; 
    PUMP2EFF: SmallInt; 
    PUMP3CAP: Single; 
    PUMP3EFF: SmallInt; 
    RIGCOST : SmallInt; 
    TRIPRATE: Single; 
    KILLID  : Single; 
    KILLJID : Single; 
    KILLJF  : SmallInt; 
    KILLLEN : Single; 
    CHKID   : Single; 
    CHKJID  : Single; 
    CHKJF   : SmallInt; 
    CHKLEN  : Single; 
    DEPTCSGM: Single; 
    DEPTCSGV: Single; 
    DEPTPITM: Single; 
    DEPTPITV: Single; 
    FPGPIT  : Single; 
    DRLGCONT: array [1..16] of char; 
    RIGNAME : array [1..16] of char; 
    RIGTYPE : array [1..16] of char; 
    VENDOR1 : array [1..32] of char; 
    VENDOR2 : array [1..32] of char; 
    VENDOR3 : array [1..32] of char; 
    VENDOR4 : array [1..32] of char; 
    VENDOR5 : array [1..32] of char; 
    VENDOR6 : array [1..32] of char; 
    SPARE1  : Single; 
    SPARE2  : Single; 
    SPARE3  : Single; 
    SPARE4  : Single; 
    SPARE5  : Single; 
  end; 
 
  { DONE 1 : TWITS_170} 
  { Данные уровня 170 
    В файл записываются результаты анализа бурового раствора в функции событий 
    вручную оператором. Как правило, записи делаются не реже чем через 4 часа, 
    а также при изменении параметров раствора после обработки и ввода хим 
    реагентов.} 
{ 
  TWITS_170=record 
    MREPDM  : Single; 
    MREPDV  : Single; 
    MREPNUM : SmallInt; 
    MRMTYPE : Array [1..16] of Char; 
    MRSLOC  : Array [1..8] of Char; 
    MRSDATE : LongInt; 
    MRSTIME : LongInt; 
    MRDENS  : Single; 
    MRFVIS  : SmallInt; 
    MRFVIST : Single; 
    MRPV    : Single; 
    MRYP    : Single; 
    MRGEL10S: Single; 
    MRGEL10M: Single; 
    MRGEL30M: Single; 
    MRFILT  : Single; 
    MRCAKE  : SmallInt; 
    MRHT    : Single; 
    MRHP    : Single; 
    MRHFILT : Single; 
    MRHCAKE : SmallInt; 
    MRSOLRET: Single; 
    MRWATRET: Single; 
    MROILRET: Single; 
    MRSAND  : Single; 
    MRLGSOL : Single; 
    MRSOLCAL: Single; 
    MRBARITE: Single; 
    MRLCM   : Single; 
    MRMBT   : Single; 
    MRPH    : Single; 
    MRPHT   : Single; 
    MRPM    : Single; 
    MRPF    : Single; 
    MRMF    : Single; 
    MRP1    : Single; 
    MRP2    : Single; 
    MRCHLOR : Single; 
    MRCALC  : Single; 
    MRMAG   : Single; 
    MRPOT   : Single; 
    MRRHETEM: Single; 
    MRVIS3  : Single; 
    MRVIS6  : Single; 
    MRVIS100: Single; 
    MRVIS200: Single; 
    MRVIS300: Single; 
    MRVIS600: Single; 
    MRBRINE : Single; 
    MRALK   : Single; 
    MRLIME  : Single; 
    MRELECST: Single; 
    MRCACL  : Single; 
    SPARE1  : Single; 
    SPARE2  : Single; 
    SPARE3  : Single; 
    SPARE4  : Single; 
    SPARE5  : Single; 
  end; 
} 
{ 
MREPDM - Измеренная глубина скважины во время отбора пробы бурового раствора 
MREPDV - Вертикальная глубина скважины во время отбора пробы бурового раствора 
MREPNUM - Номер анализируемой пробы. Это число может не соответствовать 
идентификатору последовательности записи в файл. 
MRMTYPE - Тип бурового раствора, например, лигносульфонатный, полигликоливый, 
глинистый и т.д. 
MRSLOC - Место отбора пробы, например, желоб, активная емкость и т.д. 
MRSDATE - Дата выполнения анализа в формате ГГГГММДД 
MRSTIME - Время выполнения анализа в формате ЧЧММСС 
MRDENS - Плотность пробы раствора 
MRFVIS - Вязкость раствора в секундах, измеренная по воронке 
MRFVIST - Температура раствора, во время измерения вязкости по воронке 
MRPV - Пластическая вязкость раствора, определенная вискозиметром 
MRYP - Предел текучести раствора (начальная точка сдвига), определенная 
вискозиметром 
MRGEL10S - Предельное статическое напряжение сдвига раствора через 10 сек 
покоя. 
MRGEL10M - Предельное статическое напряжение сдвига раствора через 10 минут 
покоя. 
MRGEL30M - Предельное статическое напряжение сдвига раствора через 30 минут 
покоя. 
MRFILT - Водоотдача раствора 
MRCAKE - Толщина корки 
MRHT - Температура пробы раствора в фильтр-прессе высокого давления и высокой 
температуры 
MRHP - Давление пробы во время анализа на фильтр-прессе высокого давления и 
высокой температуры 
MRHFILT - Водоотдача, измеренная на фильтр-прессе высокого давления и 
высокой температуры 
MRHCAKE - Корка, измеренная на фильтр-прессе высокого давления и высокой 
температуры 
MRSOLRET - Содержание коллоидной фракции в растворе в % 
MRWATRET - Содержание воды в растворе в % 
MROILRET - Содержание нефти в % 
MRSAND - Содержание песка в % 
MRLGSOL - Содержание мелкодисперсной фракции в растворе в % 
MRSOLCAL - Расчетное содержание твердой фракции в растворе 
MRBARITE - Содержание барита в растворе 
MRLCM - Количество наполнителя в растворе для ликвидации поглощений 
MRMBT - Катиобменная емкость пробы, измеренная титрованием метиленом сини 
MRPH - Измеренное значение рН 
MRPHT - Температура пробы раствора во время измерения рН 
MRPM - Щелочность раствора по фенолфталеину 
MRPF - Щелочность фильтрата по фенолфталеину 
MRMF - Щелочность фильтрата по метилоранжу 
MRP1 - ??? 
MRP2 - ??? 
MRCHLOR - Содержание ионов хлора в фильтрате бурового раствора 
MRCALC - Содержание ионов кальция в фильтрате бурового раствора 
MRMAG - Содержание ионов магния в фильтрате бурового раствора 
MRPOT - Содержание ионов калия в фильтрате бурового раствора 
MRRHETEM - Температура пробы раствора в вискозиметре 
MRVIS3 - Показания вискозиметра при 3 оборотах в минуту 
MRVIS6 - Показания вискозиметра при 6 оборотах в минуту 
MRVIS100 - Показания вискозиметра при 100 оборотах в минуту 
MRVIS200 - Показания вискозиметра при 200 оборотах в минуту 
MRVIS300 - Показания вискозиметра при 300 оборотах в минуту 
MRVIS600 - Показания вискозиметра при 600 оборотах в минуту 
MRBRINE - Процентное содержание воды в растворе на нефтяной основе 
MRALK - Щелочность по фенофталеину в растворе на нефтяной основе 
MRLIME - Содержание извести в растворе на нефтяной основе 
MRELECST - Электростабильность эмульсии воды в растворе на нефтяной основе 
MRCACL - Процентное содержание хдорида кальция в расворе на нефтяной основе 
SPARE1 - Резервное поле записи (параметр определяется оператором) 
SPARE2 - Резервное поле записи (параметр определяется оператором) 
SPARE3 - Резервное поле записи (параметр определяется оператором) 
SPARE4 - Резервное поле записи (параметр определяется оператором) 
SPARE5 - Резервное поле записи (параметр определяется оператором) 
} 
  TWITS_170=record 
    MREPDM  : Single; 
    MREPDV  : Single; 
    MREPNUM : SmallInt; 
    MRMTYPE : Array [1..16] of Char; 
    MRSLOC  : Array [1..8] of Char; 
    MRSDATE : LongInt; 
    MRSTIME : LongInt; 
    MRDENS  : Single; 
    MRFVIS  : SmallInt; 
    MRFVIST : Single; 
    MRPV    : Single; 
    MRYP    : Single; 
    MRGEL10S: Single; 
    MRGEL10M: Single; 
    MRGEL30M: Single; 
    MRFILT  : Single; 
    MRCAKE  : SmallInt; 
    MRHT    : Single; 
    MRHP    : Single; 
    MRHFILT : Single; 
    MRHCAKE : SmallInt; 
    MRSOLRET: Single; 
    MRWATRET: Single; 
    MROILRET: Single; 
    MRSAND  : Single; 
    MRLGSOL : Single; 
    MRSOLCAL: Single; 
    MRBARITE: Single; 
    MRLCM   : Single; 
    MRMBT   : Single; 
    MRPH    : Single; 
    MRPHT   : Single; 
    MRPM    : Single; 
    MRPF    : Single; 
    MRMF    : Single; 
    MRP1    : Single; 
    MRP2    : Single; 
    MRCHLOR : Single; 
    MRCALC  : Single; 
    MRMAG   : Single; 
    MRPOT   : Single; 
    MRRHETEM: Single; 
    MRVIS3  : Single; 
    MRVIS6  : Single; 
    MRVIS100: Single; 
    MRVIS200: Single; 
    MRVIS300: Single; 
    MRVIS600: Single; 
    MRBRINE : Single; 
    MRALK   : Single; 
    MRLIME  : Single; 
    MRELECST: Single; 
    MRCACL  : Single; 
    SPARE1  : Single; 
    SPARE2  : Single; 
    SPARE3  : Single; 
    SPARE4  : Single; 
    SPARE5  : Single; 
  end; 
 
  { DONE 1 : TWITS_171} 
  { Данные уровня 171 
    В файл записываются вручную данные о долоте в функции событий } 
{ 
  TWITS_171=record 
    BTNUM   : array [1..8] of Char; 
    BTDIAM  : Single; 
    BTMANUF : array [1..16] of Char; 
    BTNAME  : array [1..16] of Char; 
    BTCODE  : array [1..8]  of Char; 
    BTSERNUM: array [1..16] of Char; 
    BTCOST  : Single; 
    BTJET1  : Single; 
    BTJET2  : Single; 
    BTJET3  : Single; 
    BTJET4  : Single; 
    BTJETCEN: Single; 
    BTTFA   : Single; 
    BTDEPIN : Single; 
    BTDEPOUT: Single; 
    BTDDIST : Single; 
    BTDTIME : Single; 
    BTRTIME : Single; 
    BTROPA  : Single; 
    BTWOBA  : Single; 
    BTWOBX  : Single; 
    BTRPMA  : SmallInt; 
    BTRPMX  : SmallInt; 
    BTMFA   : Single; 
    BTMDA   : Single; 
    BTSPPA  : Single; 
    BTRUN   : array [1..16] of Char; 
    BTPULL  : array [1..16] of Char; 
    BTGRDIN : array [1..16] of Char; 
    BTGRDOUT: array [1..16] of Char; 
    BTSHKSUB: array [1..1]  of Char; 
    BTMUDMOT: array [1..1]  of Char; 
    BTCOMM  : array [1..128]of Char; 
    SPARE1  : Single; 
    SPARE2  : Single; 
    SPARE3  : Single; 
    SPARE4  : Single; 
    SPARE5  : Single; 
    SPARE6  : Single; 
    SPARE7  : Single; 
    SPARE8  : Single; 
    SPARE9  : Single; 
  end; 
} 
{ 
BTNUM - Номер долота 
BTDIAM - Внешний диаметр долота 
BTMANUF - Название фирмы производителя 
BTNAME - Тип долота 
BTCODE - Код долота по IADC 
BTSERNUM - Серийный номер долота, присвоенный изготовителем 
BTCOST - Стоимость долота 
BTJET1 - Диаметр 1 насадки (если у долота больше 5 насадок, диаметр каждой 
насадки не вводится, а вводится суммарная площпадь насадок) 
BTJET2 - Диаметр 2 насадки 
BTJET3 - Диаметр 3 насадки 
BTJET4 - Диаметр 4 насадки 
BTJETCEN - Диаметр центральной насадки 
BTTFA - Общая площадь насадок, это параметр вводится если у долота больше 
5 насадок. 
BTDEPIN - Измеренная начальная глубина бурения долотом 
BTDEPOUT - Измеренная конечная глубина бурения долотом 
BTDDIST - Интервал пробуренный долотом в текущем рейсе 
BTDTIME - Общее время бурения долотом (расширка, промывка, наращивание - не входит) 
BTRTIME - Время работы долота в процессе расширки 
BTROPA - Средняя скорость бурения (интервал/время бурения) 
BTWOBA - Средняя нагрузка во время бурения 
BTWOBX - Максимальная нагрузка во время бурения 
BTRPMA - Средняя частота вращения долота во время бурения 
BTRPMX - Максимальная частота вращения долота во время бурения 
BTMFA - Средний расход бурового раствора во время бурения 
BTMDA - средняя плотность бурового раствора во время бурения 
BTSPPA - Среднее давление нагнетания бурового раствора во время бурения 
BTRUN - Задача для долота при спуске 
BTPULL - Причина подъема долота 
BTGRDIN - Состояние долота до спуска по коду IADC 
BTGRDOUT - Состояние долота после подъема по коду IADC 
BTSHKSUB - Использовался ли в компоновке амортизирующий переводник Да/нет (Y or N) 
BTMUDMOT - Использовался ли забойный двигатель Да/нет (Y or N) 
BTCOMM - Любые комментарии относительно долота или условий бурения 
SPARE1 - Резервное поле записи (параметр определяется оператором) 
SPARE2 - Резервное поле записи (параметр определяется оператором) 
SPARE3 - Резервное поле записи (параметр определяется оператором) 
SPARE4 - Резервное поле записи (параметр определяется оператором) 
SPARE5 - Резервное поле записи (параметр определяется оператором) 
SPARE6 - Резервное поле записи (параметр определяется оператором) 
SPARE7 - Резервное поле записи (параметр определяется оператором) 
SPARE8 - Резервное поле записи (параметр определяется оператором) 
SPARE9 - Резервное поле записи (параметр определяется оператором) 
} 
  TWITS_171=record 
    BTNUM   : array [1..8] of Char; 
    BTDIAM  : Single; 
    BTMANUF : array [1..16] of Char; 
    BTNAME  : array [1..16] of Char; 
    BTCODE  : array [1..8]  of Char; 
    BTSERNUM: array [1..16] of Char; 
    BTCOST  : Single; 
    BTJET1  : Single; 
    BTJET2  : Single; 
    BTJET3  : Single; 
    BTJET4  : Single; 
    BTJETCEN: Single; 
    BTTFA   : Single; 
    BTDEPIN : Single; 
    BTDEPOUT: Single; 
    BTDDIST : Single; 
    BTDTIME : Single; 
    BTRTIME : Single; 
    BTROPA  : Single; 
    BTWOBA  : Single; 
    BTWOBX  : Single; 
    BTRPMA  : SmallInt; 
    BTRPMX  : SmallInt; 
    BTMFA   : Single; 
    BTMDA   : Single; 
    BTSPPA  : Single; 
    BTRUN   : array [1..16] of Char; 
    BTPULL  : array [1..16] of Char; 
    BTGRDIN : array [1..16] of Char; 
    BTGRDOUT: array [1..16] of Char; 
    BTSHKSUB: array [1..1]  of Char; 
    BTMUDMOT: array [1..1]  of Char; 
    BTCOMM  : array [1..128]of Char; 
    SPARE1  : Single; 
    SPARE2  : Single; 
    SPARE3  : Single; 
    SPARE4  : Single; 
    SPARE5  : Single; 
    SPARE6  : Single; 
    SPARE7  : Single; 
    SPARE8  : Single; 
    SPARE9  : Single; 
  end; 
 
  { DONE 1 : TWITS_172} 
  { Данные уровня 172 
    Общие комментарии касательно бурения, отказа оборудования, аврийных ситуаций} 
{ 
  TWITS_172=record 
    DEPTMEAS: Single; 
    DEPTVERT: Single; 
    COMM    : array [1..256]of char; 
  end; 
} 
{ 
DEPTMEAS - Измеренная глубина скважины на время записи 
DEPTVERT - Вертикальная глубина скважины на время записи 
COMM - Общие комментарии касательно бурения, отказа оборудования, 
аврийных ситуаций 
} 
  TWITS_172=record 
    DEPTMEAS: Single; 
    DEPTVERT: Single; 
    COMM    : array [1..256]of char; 
  end; 
 
  { DONE 1 : TWITS_173} 
  { Данные уровня 173 } 
{ 
  TWITS_173=record 
    WELLNAME: array [1..32] of char; 
    WELLNUM : array [1..16] of char; 
    OPERATOR: array [1..32] of char; 
    WELLCLAS: array [1..16] of char; 
    LOCATION: array [1..32] of char; 
    WELLUTM : array [1..16] of char; 
    WELLLAT : array [1..16] of char; 
    WELLLON : array [1..16] of char; 
    FIELD   : array [1..32] of char; 
    ELEVDP  : Single; 
    ELEVKB  : Single; 
    ELEVGL  : Single; 
    WATDEPT : Single; 
    SPUDDATE:LongInt; 
    CUS1    : array [1..32] of char; 
    CUS2    : array [1..32] of char; 
    CUS3    : array [1..32] of char; 
    CUS4    : array [1..32] of char; 
    CUS5    : array [1..32] of char; 
    CUS6    : array [1..32] of char; 
    CUS7    : array [1..32] of char; 
    CUS8    : array [1..32] of char; 
    CUS9    : array [1..32] of char; 
    CUS0    : array [1..32] of char; 
    UNITTYPE: array [1..8 ] of char; 
    TOFFSET : LongInt; 
    SPARE1  : Single; 
    SPARE2  : Single; 
    SPARE3  : Single; 
    SPARE4  : Single; 
  end; 
} 
{ 
WELLNAME - Название скважины 
WELLNUM - Номер скважины 
OPERATOR - Название компании 
WELLCLAS - Тип скважины (опорная, поисковая, разведочная, эксплуатационная) 
LOCATION - Регион (Западная Сибрь, Прикаспий, Обская губа) 
WELLUTM - Положение скважины в координатах UTM 
WELLLAT - Широта местоположения скважины 
WELLLON - Долгота местоположения скважины 
FIELD - Название площади/участка 
ELEVDP - Альтитуда реперного (проектного?) пласта относительно уровня моря 
ELEVKB - Альтитуда ротора относительно среднего уровня моря 
ELEVGL - Альтитуда точки заложения скважины относительно среднего уровня моря 
(не вводится, если скважина морская) 
WATDEPT - Глубина воды (для морских скважин) 
SPUDDATE - Дата начала строительства скважины в формате ГГММДД 
CUS1 - Пользовательские полевые идентификаторы параметров в иных файлах 
CUS2 - Информация об идентификаторах сообщается в формате: 
CUS3 - RRIIMMMMMMMMUUUUDDDDDDDDDDDDDDDD 
CUS4 - RR - номер файла данных (Например: 02 - поглубинка) 
CUS5 - II - Номер резервного поля записи (например, 28) 
CUS6 - MMMMMMMM - Длинная аббревиатура (например - FPOREPG) 
CUS7 - MMMM - Короткая аббревиатура (например - FPPG) 
CUS8 - UUUU - Числовой код параметра (в нашем случае - 0228) 
CUS9 - DDDDDDDDDDDDDDDD - Описание параметра 
CUS0 - Est. Form. Pore Press/расчетное пластовое давление 
UNITTYPE - Указывается единицы измерений параметров СГС, СИ, пользовательская. 
На уровнях WITS 0, 1 и 2  используются только СГС и СИ 
TOFFSET - Указываается часовой пояс относительно Гринвича в формате ЧЧММСС 
(Москва 30000) 
SPARE1 - Резервное поле записи (параметр определяется оператором) 
SPARE2 - Резервное поле записи (параметр определяется оператором) 
SPARE3 - Резервное поле записи (параметр определяется оператором) 
SPARE4 - Резервное поле записи (параметр определяется оператором) 
} 
  TWITS_173=record 
    WELLNAME: array [1..32] of char; 
    WELLNUM : array [1..16] of char; 
    OPERATOR: array [1..32] of char; 
    WELLCLAS: array [1..16] of char; 
    LOCATION: array [1..32] of char; 
    WELLUTM : array [1..16] of char; 
    WELLLAT : array [1..16] of char; 
    WELLLON : array [1..16] of char; 
    FIELD   : array [1..32] of char; 
    ELEVDP  : Single; 
    ELEVKB  : Single; 
    ELEVGL  : Single; 
    WATDEPT : Single; 
    SPUDDATE:LongInt; 
    CUS1    : array [1..32] of char; 
    CUS2    : array [1..32] of char; 
    CUS3    : array [1..32] of char; 
    CUS4    : array [1..32] of char; 
    CUS5    : array [1..32] of char; 
    CUS6    : array [1..32] of char; 
    CUS7    : array [1..32] of char; 
    CUS8    : array [1..32] of char; 
    CUS9    : array [1..32] of char; 
    CUS0    : array [1..32] of char; 
    UNITTYPE: array [1..8 ] of char; 
    TOFFSET : LongInt; 
    SPARE1  : Single; 
    SPARE2  : Single; 
    SPARE3  : Single; 
    SPARE4  : Single; 
  end; 
 
  { DONE 1 : TWITS_174} 
  { Данные уровня 174 
    В файл заносится информация о работе плавучей буровой установки} 
{ 
  TWITS_174=record 
    WATDEPT : Single; 
    TIDE    : Single; 
    VESSHEAD: Single; 
    RIGVCG  : Single; 
    RISTENS : Single; 
    OFFSETA : Single; 
    OFFSETX : Single; 
    OFFSETD : Single; 
    LMRPANA : Single; 
    LMRPANX : Single; 
    LMRPAND : Single; 
    MDRISER : Single; 
    MLTA01  : Single; 
    MLTX01  : Single; 
    MLTA02  : Single; 
    MLTX02  : Single; 
    MLTA03  : Single; 
    MLTX03  : Single; 
    MLTA04  : Single; 
    MLTX04  : Single; 
    MLTA05  : Single; 
    MLTX05  : Single; 
    MLTA06  : Single; 
    MLTX06  : Single; 
    MLTA07  : Single; 
    MLTX07  : Single; 
    MLTA08  : Single; 
    MLTX08  : Single; 
    MLTA09  : Single; 
    MLTX09  : Single; 
    MLTA10  : Single; 
    MLTX10  : Single; 
    MLTA11  : Single; 
    MLTX11  : Single; 
    MLTA12  : Single; 
    MLTX12  : Single; 
    THRF01  : Single; 
    THRD01  : Single; 
    THRF02  : Single; 
    THRD02  : Single; 
    THRF03  : Single; 
    THRD03  : Single; 
    THRF04  : Single; 
    THRD04  : Single; 
    THRF05  : Single; 
    THRD05  : Single; 
    THRF06  : Single; 
    THRD06  : Single; 
    THRF07  : Single; 
    THRD07  : Single; 
    THRF08  : Single; 
    THRD08  : Single; 
    SPARE1  : Single; 
    SPARE2  : Single; 
    SPARE3  : Single; 
    SPARE4  : Single; 
    SPARE5  : Single; 
  end; 
} 
{ 
WATDEPT - Глубина воды относительно среднего уровня моря 
TIDE - Величина прилива/отлива 
VESSHEAD - Положение установки относительно направления на Север 
RIGVCG - Осадка судна 
RISTENS - Натяжение райзера 
OFFSETA - Среднее значение горизонтального смещения буровой установки 
относительно устья скважины 
OFFSETX - Максимальное значение горизонтального смещения буровой установки 
относительно устья скважины 
OFFSETD - Направление перемещения буровой установки относительно севера 
LMRPANA - Среднее значение угла наклона райзера 
LMRPANX - Максимальное значение угла наклона райзера 
LMRPAND - Азимут наклона райзера 
MDRISER - Плотность раствора в райзере 
MLTA01 - Среднее значение натяжения райзера 1 линии 
MLTX01 - Максимальное значение натяжения 1 линии 
MLTA02 - Среднее значение натяжения райзера 2 линии 
MLTX02 - Максимальное значение натяжения 2 линии 
MLTA03 - Среднее значение натяжения райзера 3 линии 
MLTX03 - Максимальное значение натяжения 3 линии 
MLTA04 - Среднее значение натяжения райзера 4 линии 
MLTX04 - Максимальное значение натяжения 4 линии 
MLTA05 - Среднее значение натяжения райзера 5 линии 
MLTX05 - Максимальное значение натяжения 5 линии 
MLTA06 - Среднее значение натяжения райзера 6 линии 
MLTX06 - Максимальное значение натяжения 6 линии 
MLTA07 - Среднее значение натяжения райзера 7 линии 
MLTX07 - Максимальное значение натяжения 7 линии 
MLTA08 - Среднее значение натяжения райзера 8 линии 
MLTX08 - Максимальное значение натяжения 8 линии 
MLTA09 - Среднее значение натяжения райзера 9 линии 
MLTX09 - Максимальное значение натяжения 9 линии 
MLTA10 - Среднее значение натяжения райзера 10 линии 
MLTX10 - Максимальное значение натяжения 10 линии 
MLTA11 - Среднее значение натяжения райзера 11 линии 
MLTX11 - Максимальное значение натяжения 11 линии 
MLTA12 - Среднее значение натяжения райзера 12 линии 
MLTX12 - Максимальное значение натяжения 12 линии 
THRF01 - Мощность потребляемая 1 подруливающим устройством 
THRD01 - Направление работы 1 подруливающего устройства относительно севера 
THRF02 - Мощность потребляемая 2 подруливающим устройством 
THRD02 - Направление работы 2 подруливающего устройства относительно севера 
THRF03 - Мощность потребляемая 3 подруливающим устройством 
THRD03 - Направление работы 3 подруливающего устройства относительно севера 
THRF04 - Мощность потребляемая 4 подруливающим устройством 
THRD04 - Направление работы 4 подруливающего устройства относительно севера 
THRF05 - Мощность потребляемая 5 подруливающим устройством 
THRD05 - Направление работы 5 подруливающего устройства относительно севера 
THRF06 - Мощность потребляемая 6 подруливающим устройством 
THRD06 - Направление работы 6 подруливающего устройства относительно севера 
THRF07 - Мощность потребляемая 7 подруливающим устройством 
THRD07 - Направление работы 7 подруливающего устройства относительно севера 
THRF08 - Мощность потребляемая 8 подруливающим устройством 
THRD08 - Направление работы 8 подруливающего устройства относительно севера 
SPARE1 - Резервное поле записи (параметр определяется оператором) 
SPARE2 - Резервное поле записи (параметр определяется оператором) 
SPARE3 - Резервное поле записи (параметр определяется оператором) 
SPARE4 - Резервное поле записи (параметр определяется оператором) 
SPARE5 - Резервное поле записи (параметр определяется оператором) 
} 
  TWITS_174=record 
    WATDEPT : Single; 
    TIDE    : Single; 
    VESSHEAD: Single; 
    RIGVCG  : Single; 
    RISTENS : Single; 
    OFFSETA : Single; 
    OFFSETX : Single; 
    OFFSETD : Single; 
    LMRPANA : Single; 
    LMRPANX : Single; 
    LMRPAND : Single; 
    MDRISER : Single; 
    MLTA01  : Single; 
    MLTX01  : Single; 
    MLTA02  : Single; 
    MLTX02  : Single; 
    MLTA03  : Single; 
    MLTX03  : Single; 
    MLTA04  : Single; 
    MLTX04  : Single; 
    MLTA05  : Single; 
    MLTX05  : Single; 
    MLTA06  : Single; 
    MLTX06  : Single; 
    MLTA07  : Single; 
    MLTX07  : Single; 
    MLTA08  : Single; 
    MLTX08  : Single; 
    MLTA09  : Single; 
    MLTX09  : Single; 
    MLTA10  : Single; 
    MLTX10  : Single; 
    MLTA11  : Single; 
    MLTX11  : Single; 
    MLTA12  : Single; 
    MLTX12  : Single; 
    THRF01  : Single; 
    THRD01  : Single; 
    THRF02  : Single; 
    THRD02  : Single; 
    THRF03  : Single; 
    THRD03  : Single; 
    THRF04  : Single; 
    THRD04  : Single; 
    THRF05  : Single; 
    THRD05  : Single; 
    THRF06  : Single; 
    THRD06  : Single; 
    THRF07  : Single; 
    THRD07  : Single; 
    THRF08  : Single; 
    THRD08  : Single; 
    SPARE1  : Single; 
    SPARE2  : Single; 
    SPARE3  : Single; 
    SPARE4  : Single; 
    SPARE5  : Single; 
  end; 
 
  { DONE 1 : TWITS_175} 
  { Данные уровня 175 
  В файл записываются параметры характеризующие метеоусловия при бурении 
на море. Запись происходит автоматически в функции времени.} 
{ 
  TWITS_175=record 
    WATDEPT : Single; 
    AIRTEMP : Single; 
    BARPRES : Single; 
    WVSHGHT : Single; 
    WVMHGHT : Single; 
    WVMPER  : SmallInt; 
    WVDIR   : Single; 
    SWSHGHT : Single; 
    SWMHGHT : Single; 
    SWMPER  : SmallInt; 
    SWDIR   : Single; 
    WINDSPD : Single; 
    WINDGUST: Single; 
    WINDDIR : Single; 
    ANEMHGHT: Single; 
    CURRSPD : SmallInt; 
    CURRDIR : Single; 
    DEPTCURR: Single; 
    VESMDRFT: Single; 
    HEAVSIG : Single; 
    HEAVMAX : Single; 
    HEAVMPER: SmallInt; 
    ROLLSIG : Single; 
    ROLLMAX : Single; 
    ROLLMPER: SmallInt; 
    PTCHSIG : Single; 
    PTCHMAX : Single; 
    PTCHMPER: SmallInt; 
    YAWSIG  : Single; 
    YAWMAX  : Single; 
    YAWMPER : SmallInt; 
    SURGSIG : Single; 
    SURGMAX : Single; 
    SURGMPER: Single; 
    SWAYSIG : Single; 
    SWAYMAX : Single; 
    SWAYMPER: Single; 
    TRIM    : Single; 
    HEEL    : Single; 
    WSSCOMM : Array [1..128] of Char; 
    SPARE1  : Single; 
    SPARE2  : Single; 
    SPARE3  : Single; 
    SPARE4  : Single; 
    SPARE5  : Single; 
  end; 
} 
{ 
WATDEPT - Измеренная глубина воды 
AIRTEMP - Температура окружающего воздуха 
BARPRES - Атмосферное давление 
WVSHGHT - Среднее значение высоты волны 
WVMHGHT - Максимальная высота волны 
WVMPER - Период волны 
WVDIR - Направление движения волны 
SWSHGHT - Средняя высота волн зыби 
SWMHGHT - Максимальная высота волн зыби 
SWMPER - Период колебаний волн зыби 
SWDIR - направление зыби 
WINDSPD - Максимальная скорость ветра за минуту 
WINDGUST - Максимальная скорость ветра за 5 секунд 
WINDDIR - Направление ветра 
ANEMHGHT - Высота анемометра над уровнем моря 
CURRSPD - Средняя скорость ветра 
CURRDIR - Направление течения 
DEPTCURR - Глубина измерения течения 
VESMDRFT - Средняя осадка буровой установки 
HEAVSIG - средняя величина перемещений буровой установки 
HEAVMAX - Максимальная величина перемещений буровой установки 
HEAVMPER - Средний период  колебаний буровой установки 
ROLLSIG - Среднее значение угла наклона при бортовой качки буровой установки 
ROLLMAX - Максимальное значение угла наклона при бортовой качки буровой установки 
ROLLMPER - Средний период бортовой качки буровой установки 
PTCHSIG - Средний значение угла наклона при килевой качки буровой установки 
PTCHMAX - Максимальное значение угла наклона при килевой качки буровой установки 
PTCHMPER - Средний период килевой качки буровой установки 
YAWSIG - Среднее значение величины горизонтальных перемещений буровой установки 
YAWMAX - Максимальное значение величины горизонтальных перемещений буровой установки 
YAWMPER - Средний период горизонтальных перемещений буровой установки 
SURGSIG - Средняя высота перемещения установки при килевой качке 
SURGMAX - Максимальная высота перемещения установки при килевой качке 
SURGMPER - Средний период вертикальных перемещений при килевой качке 
SWAYSIG - Средняя высота перемещения установки при бортовой качке 
SWAYMAX - Максимальная высота перемещения установки при бортовой качке 
SWAYMPER - Средний период вертикальных перемещений при бортовой качке 
TRIM - Килевой угол наклона (нос судна вниз - угол положительный; корма внизу - 
угол отрицательный) 
HEEL - Бортовой Угол наклона (правый борт внизу - угол положительный; левый 
борт внизу - угол отрицательный) 
WSSCOMM - Любые комментарии касательно погоды 
SPARE1 - Резервное поле записи (параметр определяется оператором) 
SPARE2 - Резервное поле записи (параметр определяется оператором) 
SPARE3 - Резервное поле записи (параметр определяется оператором) 
SPARE4 - Резервное поле записи (параметр определяется оператором) 
SPARE5 - Резервное поле записи (параметр определяется оператором) 
} 
  TWITS_175=record 
    WATDEPT : Single; 
    AIRTEMP : Single; 
    BARPRES : Single; 
    WVSHGHT : Single; 
    WVMHGHT : Single; 
    WVMPER  : SmallInt; 
    WVDIR   : Single; 
    SWSHGHT : Single; 
    SWMHGHT : Single; 
    SWMPER  : SmallInt; 
    SWDIR   : Single; 
    WINDSPD : Single; 
    WINDGUST: Single; 
    WINDDIR : Single; 
    ANEMHGHT: Single; 
    CURRSPD : SmallInt; 
    CURRDIR : Single; 
    DEPTCURR: Single; 
    VESMDRFT: Single; 
    HEAVSIG : Single; 
    HEAVMAX : Single; 
    HEAVMPER: SmallInt; 
    ROLLSIG : Single; 
    ROLLMAX : Single; 
    ROLLMPER: SmallInt; 
    PTCHSIG : Single; 
    PTCHMAX : Single; 
    PTCHMPER: SmallInt; 
    YAWSIG  : Single; 
    YAWMAX  : Single; 
    YAWMPER : SmallInt; 
    SURGSIG : Single; 
    SURGMAX : Single; 
    SURGMPER: Single; 
    SWAYSIG : Single; 
    SWAYMAX : Single; 
    SWAYMPER: Single; 
    TRIM    : Single; 
    HEEL    : Single; 
    WSSCOMM : Array [1..128] of Char; 
    SPARE1  : Single; 
    SPARE2  : Single; 
    SPARE3  : Single; 
    SPARE4  : Single; 
    SPARE5  : Single; 
  end; 
  { DONE 2 : TWITSUniversalRecord} 
  { Универсальный тип для всех уровней } 
{ 
  TWITSUniversalRecord= Record 
    WITSHead:TWITSHead; 
    Case RECID:Smallint of 
    151:(WITS_151:TWITS_151); 
    152:(WITS_152:TWITS_152); 
    153:(WITS_153:TWITS_153); 
    154:(WITS_154:TWITS_154); 
    155:(WITS_155:TWITS_155); 
    156:(WITS_156:TWITS_156); 
    157:(WITS_157:TWITS_157); 
    158:(WITS_158:TWITS_158); 
    159:(WITS_159:TWITS_159); 
    160:(WITS_160:TWITS_160); 
    161:(WITS_161:TWITS_161); 
    162:(WITS_162:TWITS_162); 
    163:(WITS_163:TWITS_163); 
    164:(WITS_164:TWITS_164); 
    165:(WITS_165:TWITS_165); 
    166:(WITS_166:TWITS_166); 
    167:(WITS_167:TWITS_167); 
    168:(WITS_168:TWITS_168); 
    169:(WITS_169:TWITS_169); 
    170:(WITS_170:TWITS_170); 
    171:(WITS_171:TWITS_171); 
    172:(WITS_172:TWITS_172); 
    173:(WITS_173:TWITS_173); 
    174:(WITS_174:TWITS_174); 
    175:(WITS_175:TWITS_175); 
  end; 
} 
 
  TWITSUniversalRecord= Record 
    WITSHead:TWITSHead; 
    Case RECID:Smallint of  // в зависимости от принимааемого значения RECID определяется тип уровня записи 
    151:(WITS_151:TWITS_151); 
    152:(WITS_152:TWITS_152); 
    153:(WITS_153:TWITS_153); 
    154:(WITS_154:TWITS_154); 
    155:(WITS_155:TWITS_155); 
    156:(WITS_156:TWITS_156); 
    157:(WITS_157:TWITS_157); 
    158:(WITS_158:TWITS_158); 
    159:(WITS_159:TWITS_159); 
    160:(WITS_160:TWITS_160); 
    161:(WITS_161:TWITS_161); 
    162:(WITS_162:TWITS_162); 
    163:(WITS_163:TWITS_163); 
    164:(WITS_164:TWITS_164); 
    165:(WITS_165:TWITS_165); 
    166:(WITS_166:TWITS_166); 
    167:(WITS_167:TWITS_167); 
    168:(WITS_168:TWITS_168); 
    169:(WITS_169:TWITS_169); 
    170:(WITS_170:TWITS_170); 
    171:(WITS_171:TWITS_171); 
    172:(WITS_172:TWITS_172); 
    173:(WITS_173:TWITS_173); 
    174:(WITS_174:TWITS_174); 
    175:(WITS_175:TWITS_175); 
  end; 
 
 
{ DONE  1: Описание ошибок } 
  ENotEditOrInsert = class(Exception); 
  { ENotEditOrInsert Данные не находятся в режиме редактирования или вставки.} 
  ENotActive = class(Exception); 
  { ENotActive Недопустимое действие на не активном наборе данных } 
  EActive = Class(Exception); 
  { EActive Недопустимое действие на активном наборе данных } 
  EFileNotExists = Class(Exception); 
  { EFileNotExists Файл не существует } 
 
 
  { DONE 2 : TCustomWITSData = class(TObject)} 
  { Базовый класс для работы с форматом WITS.} 
 
  TCustomWITSData = class(TObject) 
  private 
    FActive:Boolean; 
    FEdit:Boolean; 
    FInsert:Boolean; 
    FRecordNo: Int64; 
    FWITSStream_164: TMemoryStream; 
    FWITSStream_167: TMemoryStream; 
    FWITSStream_160: TMemoryStream; 
    FWITSStream_159: TMemoryStream; 
    FWITSStream_151: TMemoryStream; 
    FWITSStream_171: TMemoryStream; 
    FWITSStream_172: TMemoryStream; 
    FWITSStream_166: TMemoryStream; 
    FWITSStream_153: TMemoryStream; 
    FWITSStream_162: TMemoryStream; 
    FWITSStream_157: TMemoryStream; 
    FWITSStream_158: TMemoryStream; 
    FWITSStream_173: TMemoryStream; 
    FWITSStream_155: TMemoryStream; 
    FWITSStream_154: TMemoryStream; 
    FWITSStream_165: TMemoryStream; 
    FWITSStream_174: TMemoryStream; 
    FWITSStream_168: TMemoryStream; 
    FWITSStream_156: TMemoryStream; 
    FWITSStream_169: TMemoryStream; 
    FWITSStream_163: TMemoryStream; 
    FWITSStream_161: TMemoryStream; 
    FWITSStream_152: TMemoryStream; 
    FWITSStream_170: TMemoryStream; 
    FWITSStream_175: TMemoryStream; 
    FWITSStream: TMemoryStream; 
    FTableIndex: TStringList; 
    FRecordCount: Cardinal; 
    FTableLevelCount: TStringList; 
    FDataBaseName: TFileName; 
    CurUniValue:TWITSUniversalRecord; 
    Function GetWITSUniversal:TWITSUniversalRecord; 
    procedure SetRecordNo(const Value: Int64); 
    procedure SetWITSStream_151(const Value: TMemoryStream); 
    procedure SetWITSStream_152(const Value: TMemoryStream); 
    procedure SetWITSStream_153(const Value: TMemoryStream); 
    procedure SetWITSStream_154(const Value: TMemoryStream); 
    procedure SetWITSStream_155(const Value: TMemoryStream); 
    procedure SetWITSStream_156(const Value: TMemoryStream); 
    procedure SetWITSStream_157(const Value: TMemoryStream); 
    procedure SetWITSStream_158(const Value: TMemoryStream); 
    procedure SetWITSStream_159(const Value: TMemoryStream); 
    procedure SetWITSStream_160(const Value: TMemoryStream); 
    procedure SetWITSStream_161(const Value: TMemoryStream); 
    procedure SetWITSStream_162(const Value: TMemoryStream); 
    procedure SetWITSStream_163(const Value: TMemoryStream); 
    procedure SetWITSStream_164(const Value: TMemoryStream); 
    procedure SetWITSStream_165(const Value: TMemoryStream); 
    procedure SetWITSStream_166(const Value: TMemoryStream); 
    procedure SetWITSStream_167(const Value: TMemoryStream); 
    procedure SetWITSStream_168(const Value: TMemoryStream); 
    procedure SetWITSStream_169(const Value: TMemoryStream); 
    procedure SetWITSStream_170(const Value: TMemoryStream); 
    procedure SetWITSStream_171(const Value: TMemoryStream); 
    procedure SetWITSStream_172(const Value: TMemoryStream); 
    procedure SetWITSStream_173(const Value: TMemoryStream); 
    procedure SetWITSStream_174(const Value: TMemoryStream); 
    procedure SetWITSStream_175(const Value: TMemoryStream); 
    procedure SetTableIndex(const Value: TStringList); 
    procedure SetWITSStream(const Value: TMemoryStream); 
    procedure SetTableLevelCount(const Value: TStringList); 
    procedure SetWITSUniversalCur(const Value: TWITSUniversalRecord); 
    procedure SetWITSUniversal(const Value: TWITSUniversalRecord); 
    procedure SetDataBaseName(const Value: TFileName); 
    Procedure LoadFromFile(FileName:TFileName); 
    { DONE 2 : LoadFromFile(FileName:TFileName);} 
  { Процедура считывания Файла WITS } 
 
    Procedure SaveFromFile(FileName:TFileName); 
    { DONE 2 : SaveFromFile(FileName:TFileName);} 
  { Процедура сохраниения на жесткий диск } 
  protected 
 
  public 
    constructor Create; 
    { DONE  1: constructor Create;} 
  { Конструктор. Метод выделения памяти под класс } 
 
    destructor Destroy; override; 
    { DONE  1: destructor Destroy; override;} 
  { Деструктор. Метод освобаждения памяти занятой классом } 
 
    Procedure Next; overload; 
    { DONE  1: Procedure Next;} 
  { Переход на следующую запись в главном наборе 
      данных } 
 
    Procedure Next(RECID:SmallInt); overload; 
    { DONE  1: Procedure Next(RECID:SmallInt);} 
  { Переход на следующую запись в конкретном наборе 
      данных } 
 
    Procedure Previous; overload; 
    { DONE  1: Procedure Previous;} 
  { Переход на предыдущую запись в главном наборе 
      данных } 
 
    Procedure Previous(RECID:SmallInt); overload; 
    { DONE  1: Procedure Previous(RECID:SmallInt);} 
    { Переход на предыдущую запись в конкретном наборе 
      данных } 
 
  published 
    Procedure Open; 
    { DONE  1: Procedure Open;} 
    { Открыть выбранный набор данных } 
 
    Procedure Close; 
    { DONE  1: Procedure Close;} 
    { Закрыть выбранный набор данных } 
 
    Procedure Edit; 
    { DONE  1: Procedure Edit;} 
    { Включить режим редактирования } 
 
    Procedure Insert; 
    { DONE  1: Procedure Insert;} 
    { Включить режим вставки } 
 
    Procedure Cancel; 
    { DONE 1: Procedure Cancel;} 
    { Отмена изменений. ПРоисходит переоткрытие набора 
      данных. } 
 
    Procedure Post; 
    { DONE  1: Procedure Post;} 
    { Принять изменения } 
 
    Function IsActive:Boolean; 
    { DONE  1: Function IsActive:Boolean;} 
    { Проверка активности БД } 
 
    Procedure ClearAllStek; 
    { DONE 2 : procedure ClearAllStek;} 
    { Очистка всех стеков } 
 
    Function LevelRecordCount(RECID:SmallInt):Cardinal; 
    { DONE 2 : Function LevelRecordCount(RECID:SmallInt):Cardinal;} 
    { Определение количества записей определенного уровня } 
 
    Function CurrentLevelRecord:SmallInt; 
    { DONE 2 : Function CurrentLevelRecord:SmallInt;} 
    { Определение уровня текущей 
      записи } 
 
    Procedure LevelRecordNo(RECID:SmallInt; RecordNo:Cardinal); 
    { DONE 2 : Procedure LevelRecordNo(RECID:SmallInt; RecordNo:Cardinal);} 
    { Переход на запись определенного уровня по ее номеру } 
 
    Function GetLevelRecordNo(RECID:SmallInt):Cardinal; 
    { DONE 2 : Function GetLevelRecordNo(RECID:SmallInt):Cardinal;} 
    { Функция возвращает текущий номер записи определенного уровня } 
 
    Procedure Raspredelenie; 
    { DONE 2 : Procedure Raspredelenie;} 
    { Процедура распределения записей по своим потокам } 
 
    Property RecordCount:Cardinal read FRecordCount; 
    { DONE 2 : Property RecordCount:Cardinal;} 
    { Определение общего количества записей } 
 
    Property RecordNo:Int64 read FRecordNo write SetRecordNo; 
    { DONE 2 : Property RecordNo:Int64;} 
    { Переход на запись по ее номеру } 
 
    Property WITSUniversal:TWITSUniversalRecord read GetWITSUniversal write SetWITSUniversal; 
    { DONE 2 : Property WITSUniversal:TWITSUniversal;} 
    { Универсальная переменная. Доступна для всех уровней } 
 
    Property WITSStream:TMemoryStream read FWITSStream write SetWITSStream; 
    { DONE 2 : Property WITSStream:TMemoryStream; Общий поток данных } 
 
    Property WITSStream_151:TMemoryStream read FWITSStream_151 write SetWITSStream_151; 
    { DONE 2 : Property WITSStream_151:TMemoryStream;} 
    { Поток содержащий данные уровня 151 } 
 
    Property WITSStream_152:TMemoryStream read FWITSStream_152 write SetWITSStream_152; 
    { DONE 2 : Property WITSStream_152:TMemoryStream;} 
    { Поток содержащий данные уровня 152 } 
 
    Property WITSStream_153:TMemoryStream read FWITSStream_153 write SetWITSStream_153; 
    { DONE 2 : Property WITSStream_153:TMemoryStream;} 
    { Поток содержащий данные уровня 153 } 
 
    Property WITSStream_154:TMemoryStream read FWITSStream_154 write SetWITSStream_154; 
    { DONE 2 : Property WITSStream_154:TMemoryStream;} 
    { Поток содержащий данные уровня 154 } 
 
    Property WITSStream_155:TMemoryStream read FWITSStream_155 write SetWITSStream_155; 
    { DONE 2 : Property WITSStream_155:TMemoryStream;} 
    { Поток содержащий данные уровня 155 } 
 
    Property WITSStream_156:TMemoryStream read FWITSStream_156 write SetWITSStream_156; 
    { DONE 2 : Property WITSStream_156:TMemoryStream;} 
    { Поток содержащий данные уровня 156 } 
 
    Property WITSStream_157:TMemoryStream read FWITSStream_157 write SetWITSStream_157; 
    { DONE 2 : Property WITSStream_157:TMemoryStream;} 
    { Поток содержащий данные уровня 157 } 
 
    Property WITSStream_158:TMemoryStream read FWITSStream_158 write SetWITSStream_158; 
    { DONE 2 : Property WITSStream_158:TMemoryStream;} 
    { Поток содержащий данные уровня 158 } 
 
    Property WITSStream_159:TMemoryStream read FWITSStream_159 write SetWITSStream_159; 
    { DONE 2 : Property WITSStream_159:TMemoryStream;} 
    { Поток содержащий данные уровня 159 } 
 
    Property WITSStream_160:TMemoryStream read FWITSStream_160 write SetWITSStream_160; 
    { DONE 2 : Property WITSStream_160:TMemoryStream;} 
    { Поток содержащий данные уровня 160 } 
 
    Property WITSStream_161:TMemoryStream read FWITSStream_161 write SetWITSStream_161; 
    { DONE 2 : Property WITSStream_161:TMemoryStream;} 
    { Поток содержащий данные уровня 161 } 
 
    Property WITSStream_162:TMemoryStream read FWITSStream_162 write SetWITSStream_162; 
    { DONE 2 : Property WITSStream_162:TMemoryStream;} 
    { Поток содержащий данные уровня 162 } 
 
    Property WITSStream_163:TMemoryStream read FWITSStream_163 write SetWITSStream_163; 
    { DONE 2 : Property WITSStream_163:TMemoryStream;} 
    { Поток содержащий данные уровня 163 } 
 
    Property WITSStream_164:TMemoryStream read FWITSStream_164 write SetWITSStream_164; 
    { DONE 2 : Property WITSStream_164:TMemoryStream;} 
    { Поток содержащий данные уровня 164 } 
 
    Property WITSStream_165:TMemoryStream read FWITSStream_165 write SetWITSStream_165; 
    { DONE 2 : Property WITSStream_165:TMemoryStream;} 
    { Поток содержащий данные уровня 165 } 
 
    Property WITSStream_166:TMemoryStream read FWITSStream_166 write SetWITSStream_166; 
    { DONE 2 : Property WITSStream_166:TMemoryStream;} 
    { Поток содержащий данные уровня 166 } 
 
    Property WITSStream_167:TMemoryStream read FWITSStream_167 write SetWITSStream_167; 
    { DONE 2 : Property WITSStream_167:TMemoryStream;} 
    { Поток содержащий данные уровня 167 } 
 
    Property WITSStream_168:TMemoryStream read FWITSStream_168 write SetWITSStream_168; 
    { DONE 2 : Property WITSStream_168:TMemoryStream;} 
    { Поток содержащий данные уровня 168 } 
 
    Property WITSStream_169:TMemoryStream read FWITSStream_169 write SetWITSStream_169; 
    { DONE 2 : Property WITSStream_169:TMemoryStream;} 
    { Поток содержащий данные уровня 169 } 
 
    Property WITSStream_170:TMemoryStream read FWITSStream_170 write SetWITSStream_170; 
    { DONE 2 : Property WITSStream_170:TMemoryStream;} 
    { Поток содержащий данные уровня 170 } 
 
    Property WITSStream_171:TMemoryStream read FWITSStream_171 write SetWITSStream_171; 
    { DONE 2 : Property WITSStream_171:TMemoryStream;} 
    { Поток содержащий данные уровня 171 } 
 
    Property WITSStream_172:TMemoryStream read FWITSStream_172 write SetWITSStream_172; 
    { DONE 2 : Property WITSStream_172:TMemoryStream;} 
    { Поток содержащий данные уровня 172 } 
 
    Property WITSStream_173:TMemoryStream read FWITSStream_173 write SetWITSStream_173; 
    { DONE 2 : Property WITSStream_173:TMemoryStream;} 
    { Поток содержащий данные уровня 173 } 
 
    Property WITSStream_174:TMemoryStream read FWITSStream_174 write SetWITSStream_174; 
    { DONE 2 : Property WITSStream_174:TMemoryStream;} 
    { Поток содержащий данные уровня 174 } 
 
    Property WITSStream_175:TMemoryStream read FWITSStream_175 write SetWITSStream_175; 
    { DONE 2 : Property WITSStream_175:TMemoryStream;} 
    { Поток содержащий данные уровня 175 } 
 
    Property TableIndex:TStringList read FTableIndex write SetTableIndex; 
    { DONE 2 : Property TableIndex:TStringList;} 
    { Вспомагательная таблица индексов потока. 
      Формат записи: "Позиция=Уровень_записи". Например, 1056=153. Номер строки 
      указывает на номер записи различных структур } 
 
    Property TableLevelCount:TStringList read FTableLevelCount write SetTableLevelCount; 
    { DONE 2 : Property TableLevelCount:TStringList;} 
    { Вспомогательная таблица для 
      определение количества записей } 
 
    Property DataBaseName:TFileName read FDataBaseName write SetDataBaseName; 
    { DONE 2 : Property DataBaseName:TFileName;} 
    { Название базы данных } 
  end; 
 
implementation 
 
{ TWITSDATA } 
 
procedure TCustomWITSData.ClearAllStek; 
Var 
  I:Integer; 
begin 
  {Очистка всех стеков} 
  FTableIndex.Clear; 
  FWITSStream.Clear; 
  FTableLevelCount.Clear; 
  FWITSStream_164.Clear; 
  FWITSStream_167.Clear; 
  FWITSStream_160.Clear; 
  FWITSStream_159.Clear; 
  FWITSStream_151.Clear; 
  FWITSStream_171.Clear; 
  FWITSStream_172.Clear; 
  FWITSStream_166.Clear; 
  FWITSStream_153.Clear; 
  FWITSStream_162.Clear; 
  FWITSStream_157.Clear; 
  FWITSStream_158.Clear; 
  FWITSStream_173.Clear; 
  FWITSStream_155.Clear; 
  FWITSStream_154.Clear; 
  FWITSStream_165.Clear; 
  FWITSStream_174.Clear; 
  FWITSStream_168.Clear; 
  FWITSStream_156.Clear; 
  FWITSStream_169.Clear; 
  FWITSStream_163.Clear; 
  FWITSStream_161.Clear; 
  FWITSStream_170.Clear; 
  For i:=151 to 175 do 
    FTableLevelCount.Add('0'); // Заполняем все количества записей нулями 
end; 
 
constructor TCustomWITSData.Create; 
begin 
  inherited Create; 
  FEdit:=false; 
  FInsert:=false; 
  FTableIndex:= TStringList.Create; 
  FTableLevelCount:= TStringList.Create; 
  FWITSStream:= TMemoryStream.Create; 
  FWITSStream_151:= TMemoryStream.Create; 
  FWITSStream_152:= TMemoryStream.Create; 
  FWITSStream_153:= TMemoryStream.Create; 
  FWITSStream_154:= TMemoryStream.Create; 
  FWITSStream_155:= TMemoryStream.Create; 
  FWITSStream_156:= TMemoryStream.Create; 
  FWITSStream_157:= TMemoryStream.Create; 
  FWITSStream_158:= TMemoryStream.Create; 
  FWITSStream_159:= TMemoryStream.Create; 
  FWITSStream_160:= TMemoryStream.Create; 
  FWITSStream_161:= TMemoryStream.Create; 
  FWITSStream_162:= TMemoryStream.Create; 
  FWITSStream_163:= TMemoryStream.Create; 
  FWITSStream_164:= TMemoryStream.Create; 
  FWITSStream_165:= TMemoryStream.Create; 
  FWITSStream_166:= TMemoryStream.Create; 
  FWITSStream_167:= TMemoryStream.Create; 
  FWITSStream_168:= TMemoryStream.Create; 
  FWITSStream_169:= TMemoryStream.Create; 
  FWITSStream_170:= TMemoryStream.Create; 
  FWITSStream_171:= TMemoryStream.Create; 
  FWITSStream_172:= TMemoryStream.Create; 
  FWITSStream_173:= TMemoryStream.Create; 
  FWITSStream_174:= TMemoryStream.Create; 
  FWITSStream_175:= TMemoryStream.Create; 
  FRecordCount:=0; 
  ClearAllStek; 
end; 
 
function TCustomWITSData.CurrentLevelRecord: SmallInt; 
VAr 
  V:TWITSHead; 
  p:Cardinal; 
begin 
  //Определение уровня текущей записи 
  if FWITSStream.Position< FWITSStream.Size then 
  Begin 
    p:= FWITSStream.Position; 
    FWITSStream.Read(v,sizeof(v)); 
    Result:=v.RECID; 
    FWITSStream.Position:=p; 
  end; 
end; 
 
destructor TCustomWITSData.Destroy; 
begin 
  // Освобождаем все что заняли у Windows 
  FTableIndex.Free; 
  FWITSStream.Free; 
  FTableLevelCount.Free; 
  FWITSStream_151.Free; 
  FWITSStream_152.Free; 
  FWITSStream_153.Free; 
  FWITSStream_154.Free; 
  FWITSStream_155.Free; 
  FWITSStream_156.Free; 
  FWITSStream_157.Free; 
  FWITSStream_158.Free; 
  FWITSStream_159.Free; 
  FWITSStream_160.Free; 
  FWITSStream_161.Free; 
  FWITSStream_162.Free; 
  FWITSStream_163.Free; 
  FWITSStream_164.Free; 
  FWITSStream_165.Free; 
  FWITSStream_166.Free; 
  FWITSStream_167.Free; 
  FWITSStream_168.Free; 
  FWITSStream_169.Free; 
  FWITSStream_170.Free; 
  FWITSStream_171.Free; 
  FWITSStream_172.Free; 
  FWITSStream_173.Free; 
  FWITSStream_174.Free; 
  FWITSStream_175.Free; 
  inherited Destroy; 
end; 
 
function TCustomWITSData.LevelRecordCount(RECID: SmallInt): Cardinal; 
begin 
   {Определение количества записей определенного уровня } 
   Result:=StrtoInt(FTableLevelCount[RECID-151]); 
end; 
 
procedure TCustomWITSData.LevelRecordNo(RECID:SmallInt; RecordNo:Cardinal); 
begin 
  {Переход на запись определенного уровня по ее номеру } 
  Case RECID of 
  151: WITSStream_151.Position:=(SizeOf(TWITS_151)+SizeOf(TWITSHead))*RecordNo; 
  152: WITSStream_152.Position:=(SizeOf(TWITS_152)+SizeOf(TWITSHead))*RecordNo; 
  153: WITSStream_153.Position:=(SizeOf(TWITS_153)+SizeOf(TWITSHead))*RecordNo; 
  154: WITSStream_154.Position:=(SizeOf(TWITS_154)+SizeOf(TWITSHead))*RecordNo; 
  155: WITSStream_155.Position:=(SizeOf(TWITS_155)+SizeOf(TWITSHead))*RecordNo; 
  156: WITSStream_156.Position:=(SizeOf(TWITS_156)+SizeOf(TWITSHead))*RecordNo; 
  157: WITSStream_157.Position:=(SizeOf(TWITS_157)+SizeOf(TWITSHead))*RecordNo; 
  158: WITSStream_158.Position:=(SizeOf(TWITS_158)+SizeOf(TWITSHead))*RecordNo; 
  159: WITSStream_159.Position:=(SizeOf(TWITS_159)+SizeOf(TWITSHead))*RecordNo; 
  160: WITSStream_160.Position:=(SizeOf(TWITS_160)+SizeOf(TWITSHead))*RecordNo; 
  161: WITSStream_161.Position:=(SizeOf(TWITS_161)+SizeOf(TWITSHead))*RecordNo; 
  162: WITSStream_162.Position:=(SizeOf(TWITS_162)+SizeOf(TWITSHead))*RecordNo; 
  163: WITSStream_163.Position:=(SizeOf(TWITS_163)+SizeOf(TWITSHead))*RecordNo; 
  164: WITSStream_164.Position:=(SizeOf(TWITS_164)+SizeOf(TWITSHead))*RecordNo; 
  165: WITSStream_165.Position:=(SizeOf(TWITS_165)+SizeOf(TWITSHead))*RecordNo; 
  166: WITSStream_166.Position:=(SizeOf(TWITS_166)+SizeOf(TWITSHead))*RecordNo; 
  167: WITSStream_167.Position:=(SizeOf(TWITS_167)+SizeOf(TWITSHead))*RecordNo; 
  168: WITSStream_168.Position:=(SizeOf(TWITS_168)+SizeOf(TWITSHead))*RecordNo; 
  169: WITSStream_169.Position:=(SizeOf(TWITS_169)+SizeOf(TWITSHead))*RecordNo; 
  170: WITSStream_170.Position:=(SizeOf(TWITS_170)+SizeOf(TWITSHead))*RecordNo; 
  171: WITSStream_171.Position:=(SizeOf(TWITS_171)+SizeOf(TWITSHead))*RecordNo; 
  172: WITSStream_172.Position:=(SizeOf(TWITS_172)+SizeOf(TWITSHead))*RecordNo; 
  173: WITSStream_173.Position:=(SizeOf(TWITS_173)+SizeOf(TWITSHead))*RecordNo; 
  174: WITSStream_174.Position:=(SizeOf(TWITS_174)+SizeOf(TWITSHead))*RecordNo; 
  175: WITSStream_175.Position:=(SizeOf(TWITS_175)+SizeOf(TWITSHead))*RecordNo; 
  End; 
end; 
 
procedure TCustomWITSData.LoadFromFile(FileName: TFileName); 
begin 
  FRecordCount:=0; 
  FWITSStream.LoadFromFile(FileName); 
  FWITSStream.Position:=0; 
  Raspredelenie; 
end; 
 
procedure TCustomWITSData.Raspredelenie; 
VAr 
  V:TWITSUniversalRecord; 
begin 
 
  With FWITSStream do 
    While Positiondo 
    Begin 
      {Записываем позицию в потоке и уровень записи для определения длинны записи} 
      TableIndex.Add(IntToStr(Position)+'='+INttostr(v.WITSHead.RECID)); 
      Read(v.WITSHead,SizeOf(v.WITSHead)); 
      v.RECID:=v.WITSHead.RECID; 
      FTableLevelCount[v.RECID-151]:=inttostr(StrtoINt(FTableLevelCount[v.RECID-151])+1); 
      case v.RECID of 
      151: 
        Begin 
          Read(v.WITS_151,SizeOf(v.WITS_151)); 
          FWITSStream_151.Write(v.WITSHead,SizeOf(v.WITSHead)); 
          FWITSStream_151.Write(v.WITS_151,SizeOf(v.WITS_151)); 
        End; 
      152: 
        Begin 
          Read(v.WITS_152,SizeOf(v.WITS_152)); 
          FWITSStream_152.Write(v.WITSHead,SizeOf(v.WITSHead)); 
          FWITSStream_152.Write(v.WITS_152,SizeOf(v.WITS_152)); 
        End; 
      153:  
        Begin 
          Read(v.WITS_153,SizeOf(v.WITS_153)); 
          FWITSStream_153.Write(v.WITSHead,SizeOf(v.WITSHead)); 
          FWITSStream_153.Write(v.WITS_153,SizeOf(v.WITS_153)); 
        End; 
      154:  
        Begin 
          Read(v.WITS_154,SizeOf(v.WITS_154)); 
          FWITSStream_154.Write(v.WITSHead,SizeOf(v.WITSHead)); 
          FWITSStream_154.Write(v.WITS_154,SizeOf(v.WITS_154)); 
        End; 
      155:  
        Begin 
          Read(v.WITS_155,SizeOf(v.WITS_155)); 
          FWITSStream_155.Write(v.WITSHead,SizeOf(v.WITSHead)); 
          FWITSStream_155.Write(v.WITS_155,SizeOf(v.WITS_155)); 
        End; 
      156:  
        Begin 
          Read(v.WITS_156,SizeOf(v.WITS_156)); 
          FWITSStream_156.Write(v.WITSHead,SizeOf(v.WITSHead)); 
          FWITSStream_156.Write(v.WITS_156,SizeOf(v.WITS_156)); 
        End; 
      157: 
        Begin 
          Read(v.WITS_157,SizeOf(v.WITS_157)); 
          FWITSStream_157.Write(v.WITSHead,SizeOf(v.WITSHead)); 
          FWITSStream_157.Write(v.WITS_157,SizeOf(v.WITS_157)); 
        End; 
      158:  
        Begin 
          Read(v.WITS_158,SizeOf(v.WITS_158)); 
          FWITSStream_158.Write(v.WITSHead,SizeOf(v.WITSHead)); 
          FWITSStream_158.Write(v.WITS_158,SizeOf(v.WITS_158)); 
        End; 
      159:  
        Begin 
          Read(v.WITS_159,SizeOf(v.WITS_159)); 
          FWITSStream_159.Write(v.WITSHead,SizeOf(v.WITSHead)); 
          FWITSStream_159.Write(v.WITS_159,SizeOf(v.WITS_159)); 
        End; 
      160:  
        Begin 
          Read(v.WITS_160,SizeOf(v.WITS_160)); 
          FWITSStream_160.Write(v.WITSHead,SizeOf(v.WITSHead)); 
          FWITSStream_160.Write(v.WITS_160,SizeOf(v.WITS_160)); 
        End; 
      161:  
        Begin 
          Read(v.WITS_161,SizeOf(v.WITS_161)); 
          FWITSStream_161.Write(v.WITSHead,SizeOf(v.WITSHead)); 
          FWITSStream_161.Write(v.WITS_161,SizeOf(v.WITS_161)); 
        End; 
      162:  
        Begin 
          Read(v.WITS_162,SizeOf(v.WITS_162)); 
          FWITSStream_162.Write(v.WITSHead,SizeOf(v.WITSHead)); 
          FWITSStream_162.Write(v.WITS_162,SizeOf(v.WITS_162)); 
        End; 
      163:  
        Begin 
          Read(v.WITS_163,SizeOf(v.WITS_163)); 
          FWITSStream_163.Write(v.WITSHead,SizeOf(v.WITSHead)); 
          FWITSStream_163.Write(v.WITS_163,SizeOf(v.WITS_163)); 
        End; 
      164:  
        Begin 
          Read(v.WITS_164,SizeOf(v.WITS_164)); 
          FWITSStream_164.Write(v.WITSHead,SizeOf(v.WITSHead)); 
          FWITSStream_164.Write(v.WITS_164,SizeOf(v.WITS_164)); 
        End; 
      165: 
        Begin 
          Read(v.WITS_165,SizeOf(v.WITS_165)); 
          FWITSStream_165.Write(v.WITSHead,SizeOf(v.WITSHead)); 
          FWITSStream_165.Write(v.WITS_165,SizeOf(v.WITS_165)); 
        End; 
      166:  
        Begin 
          Read(v.WITS_166,SizeOf(v.WITS_166)); 
          FWITSStream_166.Write(v.WITSHead,SizeOf(v.WITSHead)); 
          FWITSStream_166.Write(v.WITS_166,SizeOf(v.WITS_166)); 
        End; 
      167:  
        Begin 
          Read(v.WITS_167,SizeOf(v.WITS_167)); 
          FWITSStream_167.Write(v.WITSHead,SizeOf(v.WITSHead)); 
          FWITSStream_167.Write(v.WITS_167,SizeOf(v.WITS_167)); 
        End; 
      168:  
        Begin 
          Read(v.WITS_168,SizeOf(v.WITS_168)); 
          FWITSStream_168.Write(v.WITSHead,SizeOf(v.WITSHead)); 
          FWITSStream_168.Write(v.WITS_168,SizeOf(v.WITS_168)); 
        End; 
      169:  
        Begin 
          Read(v.WITS_169,SizeOf(v.WITS_169)); 
          FWITSStream_169.Write(v.WITSHead,SizeOf(v.WITSHead)); 
          FWITSStream_169.Write(v.WITS_169,SizeOf(v.WITS_169)); 
        End; 
      170:  
        Begin 
          Read(v.WITS_170,SizeOf(v.WITS_170)); 
          FWITSStream_170.Write(v.WITSHead,SizeOf(v.WITSHead)); 
          FWITSStream_170.Write(v.WITS_170,SizeOf(v.WITS_170)); 
        End; 
      171:  
        Begin 
          Read(v.WITS_171,SizeOf(v.WITS_171)); 
          FWITSStream_171.Write(v.WITSHead,SizeOf(v.WITSHead)); 
          FWITSStream_171.Write(v.WITS_171,SizeOf(v.WITS_171)); 
        End; 
      172:  
        Begin 
          Read(v.WITS_172,SizeOf(v.WITS_172)); 
          FWITSStream_172.Write(v.WITSHead,SizeOf(v.WITSHead)); 
          FWITSStream_173.Write(v.WITS_172,SizeOf(v.WITS_172)); 
        End; 
      173: 
        Begin 
          Read(v.WITS_173,SizeOf(v.WITS_173)); 
          FWITSStream_173.Write(v.WITSHead,SizeOf(v.WITSHead)); 
          FWITSStream_173.Write(v.WITS_173,SizeOf(v.WITS_173)); 
        End; 
      174: 
        Begin 
          Read(v.WITS_174,SizeOf(v.WITS_174)); 
          FWITSStream_174.Write(v.WITSHead,SizeOf(v.WITSHead)); 
          FWITSStream_174.Write(v.WITS_174,SizeOf(v.WITS_174)); 
        End; 
      175: 
        Begin 
          Read(v.WITS_175,SizeOf(v.WITS_175)); 
          FWITSStream_175.Write(v.WITSHead,SizeOf(v.WITSHead)); 
          FWITSStream_175.Write(v.WITS_175,SizeOf(v.WITS_175)); 
        End; 
      Else 
        Begin 
          MessageDLG('Неизвестный уровень записи RECID:='+INttostr(v.RECID), mtError, [mbOk], 0); 
          Exit; 
        end; 
      end; 
      Inc(FRecordCount); 
    end; 
end; 
 
procedure TCustomWITSData.SaveFromFile(FileName: TFileName); 
begin 
  FWITSStream.SaveToFile(FileName); 
end; 
 
procedure TCustomWITSData.SetRecordNo(const Value: Int64); 
Var 
  s:String; 
  p:integer; 
begin 
  // Устанавливает курсор на выбранную запись в общем потоке не зависимо от уровня конкретной записи 
  FRecordNo := Value; 
  s:=FTableIndex[value]; 
  p:=Pos('=',s); 
  s:=Copy(s,p+1,length(s)); 
  FWITSStream.Position:=StrToInt(s); 
end; 
 
procedure TCustomWITSData.SetTableIndex(const Value: TStringList); 
begin 
  FTableIndex := Value; 
end; 
 
procedure TCustomWITSData.SetTableLevelCount(const Value: TStringList); 
begin 
  FTableLevelCount := Value; 
end; 
 
procedure TCustomWITSData.SetWITSStream(const Value: TMemoryStream); 
begin 
  FWITSStream := Value; 
end; 
 
procedure TCustomWITSData.SetWITSStream_151(const Value: TMemoryStream); 
begin 
  FWITSStream_151 := Value; 
end; 
 
procedure TCustomWITSData.SetWITSStream_152(const Value: TMemoryStream); 
begin 
  FWITSStream_152 := Value; 
end; 
 
procedure TCustomWITSData.SetWITSStream_153(const Value: TMemoryStream); 
begin 
  FWITSStream_153 := Value; 
end; 
 
procedure TCustomWITSData.SetWITSStream_154(const Value: TMemoryStream); 
begin 
  FWITSStream_154 := Value; 
end; 
 
procedure TCustomWITSData.SetWITSStream_155(const Value: TMemoryStream); 
begin 
  FWITSStream_155 := Value; 
end; 
 
procedure TCustomWITSData.SetWITSStream_156(const Value: TMemoryStream); 
begin 
  FWITSStream_156 := Value; 
end; 
 
procedure TCustomWITSData.SetWITSStream_157(const Value: TMemoryStream); 
begin 
  FWITSStream_157 := Value; 
end; 
 
procedure TCustomWITSData.SetWITSStream_158(const Value: TMemoryStream); 
begin 
  FWITSStream_158 := Value; 
end; 
 
procedure TCustomWITSData.SetWITSStream_159(const Value: TMemoryStream); 
begin 
  FWITSStream_159 := Value; 
end; 
 
procedure TCustomWITSData.SetWITSStream_160(const Value: TMemoryStream); 
begin 
  FWITSStream_160 := Value; 
end; 
 
procedure TCustomWITSData.SetWITSStream_161(const Value: TMemoryStream); 
begin 
  FWITSStream_161 := Value; 
end; 
 
procedure TCustomWITSData.SetWITSStream_162(const Value: TMemoryStream); 
begin 
  FWITSStream_162 := Value; 
end; 
 
procedure TCustomWITSData.SetWITSStream_163(const Value: TMemoryStream); 
begin 
  FWITSStream_163 := Value; 
end; 
 
procedure TCustomWITSData.SetWITSStream_164(const Value: TMemoryStream); 
begin 
  FWITSStream_164 := Value; 
end; 
 
procedure TCustomWITSData.SetWITSStream_165(const Value: TMemoryStream); 
begin 
  FWITSStream_165 := Value; 
end; 
 
procedure TCustomWITSData.SetWITSStream_166(const Value: TMemoryStream); 
begin 
  FWITSStream_166 := Value; 
end; 
 
procedure TCustomWITSData.SetWITSStream_167(const Value: TMemoryStream); 
begin 
  FWITSStream_167 := Value; 
end; 
 
procedure TCustomWITSData.SetWITSStream_168(const Value: TMemoryStream); 
begin 
  FWITSStream_168 := Value; 
end; 
 
procedure TCustomWITSData.SetWITSStream_169(const Value: TMemoryStream); 
begin 
  FWITSStream_169 := Value; 
end; 
 
procedure TCustomWITSData.SetWITSStream_170(const Value: TMemoryStream); 
begin 
  FWITSStream_170 := Value; 
end; 
 
procedure TCustomWITSData.SetWITSStream_171(const Value: TMemoryStream); 
begin 
  FWITSStream_171 := Value; 
end; 
 
procedure TCustomWITSData.SetWITSStream_172(const Value: TMemoryStream); 
begin 
  FWITSStream_172 := Value; 
end; 
 
procedure TCustomWITSData.SetWITSStream_173(const Value: TMemoryStream); 
begin 
  FWITSStream_173 := Value; 
end; 
 
procedure TCustomWITSData.SetWITSStream_174(const Value: TMemoryStream); 
begin 
  FWITSStream_174 := Value; 
end; 
 
procedure TCustomWITSData.SetWITSStream_175(const Value: TMemoryStream); 
begin 
  FWITSStream_175 := Value; 
end; 
procedure TCustomWITSData.SetWITSUniversalCur( 
  const Value: TWITSUniversalRecord); 
Var 
  P:Int64; 
begin 
  //Запись данных универсальным методом 
  if FEdit or FInsert then {Если выбран режим редактирования или вставки} 
  Begin 
    p:=FWITSStream.Position; 
    FWITSStream.Write(Value.WITSHead,SizeOf(Value.WITSHead)); 
    Case Value.RECID of 
    151: 
    Begin 
      FWITSStream.Write(Value.WITS_151,SizeOf(Value.WITS_151)); 
      FWITSStream_151.Write(Value.WITSHead,SizeOf(Value.WITSHead)); 
      FWITSStream_151.Write(Value.WITS_151,SizeOf(Value.WITS_151)); 
    End; 
    152:  
    Begin 
      FWITSStream.Write(Value.WITS_152,SizeOf(Value.WITS_152)); 
      FWITSStream_152.Write(Value.WITSHead,SizeOf(Value.WITSHead)); 
      FWITSStream_152.Write(Value.WITS_152,SizeOf(Value.WITS_152)); 
    End; 
    153:  
    Begin 
      FWITSStream.Write(Value.WITS_153,SizeOf(Value.WITS_153)); 
      FWITSStream_153.Write(Value.WITSHead,SizeOf(Value.WITSHead)); 
      FWITSStream_153.Write(Value.WITS_153,SizeOf(Value.WITS_153)); 
    End; 
    154:  
    Begin 
      FWITSStream.Write(Value.WITS_154,SizeOf(Value.WITS_154)); 
      FWITSStream_154.Write(Value.WITSHead,SizeOf(Value.WITSHead)); 
      FWITSStream_154.Write(Value.WITS_154,SizeOf(Value.WITS_154)); 
    End; 
    155:  
    Begin 
      FWITSStream.Write(Value.WITS_155,SizeOf(Value.WITS_155)); 
      FWITSStream_155.Write(Value.WITSHead,SizeOf(Value.WITSHead)); 
      FWITSStream_155.Write(Value.WITS_155,SizeOf(Value.WITS_155)); 
    End; 
    156:  
    Begin 
      FWITSStream.Write(Value.WITS_156,SizeOf(Value.WITS_156)); 
      FWITSStream_156.Write(Value.WITSHead,SizeOf(Value.WITSHead)); 
      FWITSStream_156.Write(Value.WITS_156,SizeOf(Value.WITS_156)); 
    End; 
    157:  
    Begin 
      FWITSStream.Write(Value.WITS_157,SizeOf(Value.WITS_157)); 
      FWITSStream_157.Write(Value.WITSHead,SizeOf(Value.WITSHead)); 
      FWITSStream_157.Write(Value.WITS_157,SizeOf(Value.WITS_157)); 
    End; 
    158:  
    Begin 
      FWITSStream.Write(Value.WITS_158,SizeOf(Value.WITS_158)); 
      FWITSStream_158.Write(Value.WITSHead,SizeOf(Value.WITSHead)); 
      FWITSStream_158.Write(Value.WITS_158,SizeOf(Value.WITS_158)); 
    End; 
    159:  
    Begin 
      FWITSStream.Write(Value.WITS_159,SizeOf(Value.WITS_159)); 
      FWITSStream_159.Write(Value.WITSHead,SizeOf(Value.WITSHead)); 
      FWITSStream_159.Write(Value.WITS_159,SizeOf(Value.WITS_159)); 
    End; 
    160:  
    Begin 
      FWITSStream.Write(Value.WITS_160,SizeOf(Value.WITS_160)); 
      FWITSStream_160.Write(Value.WITSHead,SizeOf(Value.WITSHead)); 
      FWITSStream_160.Write(Value.WITS_160,SizeOf(Value.WITS_160)); 
    End; 
    161:  
    Begin 
      FWITSStream.Write(Value.WITS_161,SizeOf(Value.WITS_161)); 
      FWITSStream_161.Write(Value.WITSHead,SizeOf(Value.WITSHead)); 
      FWITSStream_161.Write(Value.WITS_161,SizeOf(Value.WITS_161)); 
    End; 
    162:  
    Begin 
      FWITSStream.Write(Value.WITS_162,SizeOf(Value.WITS_162)); 
      FWITSStream_162.Write(Value.WITSHead,SizeOf(Value.WITSHead)); 
      FWITSStream_162.Write(Value.WITS_162,SizeOf(Value.WITS_162)); 
    End; 
    163:  
    Begin 
      FWITSStream.Write(Value.WITS_163,SizeOf(Value.WITS_163)); 
      FWITSStream_163.Write(Value.WITSHead,SizeOf(Value.WITSHead)); 
      FWITSStream_163.Write(Value.WITS_163,SizeOf(Value.WITS_163)); 
    End; 
    164:  
    Begin 
      FWITSStream.Write(Value.WITS_164,SizeOf(Value.WITS_164)); 
      FWITSStream_164.Write(Value.WITSHead,SizeOf(Value.WITSHead)); 
      FWITSStream_164.Write(Value.WITS_164,SizeOf(Value.WITS_164)); 
    End; 
    165:  
    Begin 
      FWITSStream.Write(Value.WITS_165,SizeOf(Value.WITS_165)); 
      FWITSStream_165.Write(Value.WITSHead,SizeOf(Value.WITSHead)); 
      FWITSStream_165.Write(Value.WITS_165,SizeOf(Value.WITS_165)); 
    End; 
    166:  
    Begin 
      FWITSStream.Write(Value.WITS_166,SizeOf(Value.WITS_166)); 
      FWITSStream_166.Write(Value.WITSHead,SizeOf(Value.WITSHead)); 
      FWITSStream_166.Write(Value.WITS_166,SizeOf(Value.WITS_166)); 
    End; 
    167:  
    Begin 
      FWITSStream.Write(Value.WITS_167,SizeOf(Value.WITS_167)); 
      FWITSStream_167.Write(Value.WITSHead,SizeOf(Value.WITSHead)); 
      FWITSStream_167.Write(Value.WITS_167,SizeOf(Value.WITS_167)); 
    End; 
    168:  
    Begin 
      FWITSStream.Write(Value.WITS_168,SizeOf(Value.WITS_168)); 
      FWITSStream_168.Write(Value.WITSHead,SizeOf(Value.WITSHead)); 
      FWITSStream_168.Write(Value.WITS_168,SizeOf(Value.WITS_168)); 
    End; 
    169:  
    Begin 
      FWITSStream.Write(Value.WITS_169,SizeOf(Value.WITS_169)); 
      FWITSStream_169.Write(Value.WITSHead,SizeOf(Value.WITSHead)); 
      FWITSStream_169.Write(Value.WITS_169,SizeOf(Value.WITS_169)); 
    End; 
    170:  
    Begin 
      FWITSStream.Write(Value.WITS_170,SizeOf(Value.WITS_170)); 
      FWITSStream_170.Write(Value.WITSHead,SizeOf(Value.WITSHead)); 
      FWITSStream_170.Write(Value.WITS_170,SizeOf(Value.WITS_170)); 
    End; 
    171:  
    Begin 
      FWITSStream.Write(Value.WITS_171,SizeOf(Value.WITS_171)); 
      FWITSStream_171.Write(Value.WITSHead,SizeOf(Value.WITSHead)); 
      FWITSStream_171.Write(Value.WITS_171,SizeOf(Value.WITS_171)); 
    End; 
    172:  
    Begin 
      FWITSStream.Write(Value.WITS_172,SizeOf(Value.WITS_172)); 
      FWITSStream_172.Write(Value.WITSHead,SizeOf(Value.WITSHead)); 
      FWITSStream_172.Write(Value.WITS_172,SizeOf(Value.WITS_172)); 
    End; 
    173:  
    Begin 
      FWITSStream.Write(Value.WITS_173,SizeOf(Value.WITS_173)); 
      FWITSStream_173.Write(Value.WITSHead,SizeOf(Value.WITSHead)); 
      FWITSStream_173.Write(Value.WITS_173,SizeOf(Value.WITS_173)); 
    End; 
    174:  
    Begin 
      FWITSStream.Write(Value.WITS_174,SizeOf(Value.WITS_174)); 
      FWITSStream_174.Write(Value.WITSHead,SizeOf(Value.WITSHead)); 
      FWITSStream_174.Write(Value.WITS_174,SizeOf(Value.WITS_174)); 
    End; 
    175:  
    Begin 
      FWITSStream.Write(Value.WITS_175,SizeOf(Value.WITS_175)); 
      FWITSStream_175.Write(Value.WITSHead,SizeOf(Value.WITSHead)); 
      FWITSStream_175.Write(Value.WITS_175,SizeOf(Value.WITS_175)); 
    End; 
    end; 
    FWITSStream.Position:=p; 
  end 
  Else 
    raise ENotEditOrInsert.Create('Набор данных не находится в режиме редактирования/вставки.'); 
end; 
procedure TCustomWITSData.SetWITSUniversal(const Value: TWITSUniversalRecord); 
Var 
  P:Int64; 
begin 
  //Запись данных универсальным методом 
  if FEdit or FInsert then {Если выбран режим редактирования или вставки} 
    CurUniValue:=Value 
  Else 
    raise ENotEditOrInsert.Create('Набор данных не находится в режиме редактирования/вставки.'); 
end; 
 
Function TCustomWITSData.GetWITSUniversal:TWITSUniversalRecord; 
Var 
  P:Int64; 
begin 
  // Считывание данных универсальным методом 
  p:=FWITSStream.Position; 
  FWITSStream.Read(Result.WITSHead,SizeOf(Result.WITSHead)); 
  Result.RECID:=Result.WITSHead.RECID; 
  Case Result.RECID of 
  151: FWITSStream.Read(Result.WITS_151,SizeOf(Result.WITS_151)); 
  152: FWITSStream.Read(Result.WITS_152,SizeOf(Result.WITS_152)); 
  153: FWITSStream.Read(Result.WITS_153,SizeOf(Result.WITS_153)); 
  154: FWITSStream.Read(Result.WITS_154,SizeOf(Result.WITS_154)); 
  155: FWITSStream.Read(Result.WITS_155,SizeOf(Result.WITS_155)); 
  156: FWITSStream.Read(Result.WITS_156,SizeOf(Result.WITS_156)); 
  157: FWITSStream.Read(Result.WITS_157,SizeOf(Result.WITS_157)); 
  158: FWITSStream.Read(Result.WITS_158,SizeOf(Result.WITS_158)); 
  159: FWITSStream.Read(Result.WITS_159,SizeOf(Result.WITS_159)); 
  160: FWITSStream.Read(Result.WITS_160,SizeOf(Result.WITS_160)); 
  161: FWITSStream.Read(Result.WITS_161,SizeOf(Result.WITS_161)); 
  162: FWITSStream.Read(Result.WITS_162,SizeOf(Result.WITS_162)); 
  163: FWITSStream.Read(Result.WITS_163,SizeOf(Result.WITS_163)); 
  164: FWITSStream.Read(Result.WITS_164,SizeOf(Result.WITS_164)); 
  165: FWITSStream.Read(Result.WITS_165,SizeOf(Result.WITS_165)); 
  166: FWITSStream.Read(Result.WITS_166,SizeOf(Result.WITS_166)); 
  167: FWITSStream.Read(Result.WITS_167,SizeOf(Result.WITS_167)); 
  168: FWITSStream.Read(Result.WITS_168,SizeOf(Result.WITS_168)); 
  169: FWITSStream.Read(Result.WITS_169,SizeOf(Result.WITS_169)); 
  170: FWITSStream.Read(Result.WITS_170,SizeOf(Result.WITS_170)); 
  171: FWITSStream.Read(Result.WITS_171,SizeOf(Result.WITS_171)); 
  172: FWITSStream.Read(Result.WITS_172,SizeOf(Result.WITS_172)); 
  173: FWITSStream.Read(Result.WITS_173,SizeOf(Result.WITS_173)); 
  174: FWITSStream.Read(Result.WITS_174,SizeOf(Result.WITS_174)); 
  175: FWITSStream.Read(Result.WITS_175,SizeOf(Result.WITS_175)); 
  end; 
  FWITSStream.Position:=p; 
end; 
 
procedure TCustomWITSData.Edit; 
begin 
  // Включение режима редактирования 
  if FActive then FEdit:=true 
  Else 
    Raise ENotActive.Create('Недопустимое действие на не активном наборе данных.'); 
end; 
 
procedure TCustomWITSData.Insert; 
begin 
  // Включение режима вставки записи 
  if FActive then FInsert:=true 
  Else 
    Raise ENotActive.Create('Недопустимое действие на не активном наборе данных.'); 
end; 
 
procedure TCustomWITSData.Post; 
begin 
  // Запись всех данных на жесткий диск 
  if FActive then 
    if FEdit or FInsert then 
    Begin 
      // записываем в общий поток 
      SetWITSUniversalCur(CurUniValue); 
      { Перезаписываем поток заново (Это опасно! Если во время записи выключить 
        питание ПК, то можно потерять все данные). } 
      SaveFromFile(FDataBaseName); 
      // Сбрасываем все флаги. 
      FEdit:=False; 
      FInsert:=False; 
    end 
    Else 
      Raise ENotEditOrInsert.Create('Набор данных не находится в режиме редактирования/вставки.') 
  Else 
    Raise ENotActive.Create('Недопустимое действие на не активном наборе данных.'); 
end; 
 
procedure TCustomWITSData.SetDataBaseName(const Value: TFileName); 
begin 
  if not FActive then 
    FDataBaseName := Value 
  Else 
    Raise EActive.Create('Недопустимое действие на активном наборе данных.'); 
end; 
 
procedure TCustomWITSData.Close; 
begin 
  // Закрываем набор предварительно сохранив все изменения на жесткий диск 
  SaveFromFile(FDataBaseName); 
  FActive:=false; 
  ClearAllStek; // Сбрасываем все стеки 
end; 
 
procedure TCustomWITSData.Open; 
begin 
 // Открыть новый набор данных 
 if FileExists(FDataBaseName) then 
 Begin 
  if not FActive then 
  Begin 
    LoadFromFile(FDataBaseName); 
    FActive:=true; 
  end 
  else 
    raise EActive.Create('Недопустимое действие на активном наборе данных.'); 
 end 
 Else 
    raise EFileNotExists.Create('Файл "'+FDataBaseName+'" не существует.'); 
end; 
 
function TCustomWITSData.IsActive: Boolean; 
begin 
 Result:=FActive; 
end; 
 
procedure TCustomWITSData.Cancel; 
begin 
  // Отмена всех изменений. 
  if FActive then 
  Begin 
    Close;  // Просто переоткрываем набор данных 
    Open; 
  End 
  Else 
    raise ENotActive.Create('Недопустимое действие на не активном наборе данных.'); 
end; 
 
procedure TCustomWITSData.Next; 
begin 
  // переход на следующую запись в общем потоке 
  if (FRecordNo+1)then 
    RecordNo:=RecordNo+1; 
end; 
 
procedure TCustomWITSData.Previous; 
begin 
  // переход на предыдущую запись в общем потоке 
  if (FRecordNo-1)>=0 then 
    RecordNo:=RecordNo-1; 
end; 
 
procedure TCustomWITSData.Next(RECID: SmallInt); 
Var 
  CurRecNo:Cardinal; 
begin 
   CurRecNo:=GetLevelRecordNo(RECID); // Определяем текущую позицию потока определенного уровня 
   {Если новая позиция существует то вычисляем позицию} 
   if (CurRecNo+1)then 
    LevelRecordNo(RECID,CurRecNo+1); 
end; 
 
procedure TCustomWITSData.Previous(RECID: SmallInt); 
Var 
  CurRecNo:Cardinal; 
begin 
   CurRecNo:=GetLevelRecordNo(RECID); // Определяем текущую позицию потока определенного уровня 
   {Если новая позиция существует то вычисляем позицию} 
   if (CurRecNo-1)>=0 then 
    LevelRecordNo(RECID,CurRecNo-1); 
end; 
 
function TCustomWITSData.GetLevelRecordNo(RECID: SmallInt): Cardinal; 
Var 
  H:Cardinal; 
begin 
  h:=SizeOf(TWITSHead); 
  Case RECID of 
   151: Result:=(FWITSStream_151.Position-SizeOf(TWITS_151)) div (h + SizeOf(TWITS_151)); 
   152: Result:=(FWITSStream_152.Position-SizeOf(TWITS_152)) div (h + SizeOf(TWITS_152)); 
   153: Result:=(FWITSStream_153.Position-SizeOf(TWITS_153)) div (h + SizeOf(TWITS_153)); 
   154: Result:=(FWITSStream_154.Position-SizeOf(TWITS_154)) div (h + SizeOf(TWITS_154)); 
   155: Result:=(FWITSStream_155.Position-SizeOf(TWITS_155)) div (h + SizeOf(TWITS_155)); 
   156: Result:=(FWITSStream_156.Position-SizeOf(TWITS_156)) div (h + SizeOf(TWITS_156)); 
   157: Result:=(FWITSStream_157.Position-SizeOf(TWITS_157)) div (h + SizeOf(TWITS_157)); 
   158: Result:=(FWITSStream_158.Position-SizeOf(TWITS_158)) div (h + SizeOf(TWITS_158)); 
   159: Result:=(FWITSStream_159.Position-SizeOf(TWITS_159)) div (h + SizeOf(TWITS_159)); 
   160: Result:=(FWITSStream_160.Position-SizeOf(TWITS_160)) div (h + SizeOf(TWITS_160)); 
   161: Result:=(FWITSStream_161.Position-SizeOf(TWITS_161)) div (h + SizeOf(TWITS_161)); 
   162: Result:=(FWITSStream_162.Position-SizeOf(TWITS_162)) div (h + SizeOf(TWITS_162)); 
   163: Result:=(FWITSStream_163.Position-SizeOf(TWITS_163)) div (h + SizeOf(TWITS_163)); 
   164: Result:=(FWITSStream_164.Position-SizeOf(TWITS_164)) div (h + SizeOf(TWITS_164)); 
   165: Result:=(FWITSStream_165.Position-SizeOf(TWITS_165)) div (h + SizeOf(TWITS_165)); 
   166: Result:=(FWITSStream_166.Position-SizeOf(TWITS_166)) div (h + SizeOf(TWITS_166)); 
   167: Result:=(FWITSStream_167.Position-SizeOf(TWITS_167)) div (h + SizeOf(TWITS_167)); 
   168: Result:=(FWITSStream_168.Position-SizeOf(TWITS_168)) div (h + SizeOf(TWITS_168)); 
   169: Result:=(FWITSStream_169.Position-SizeOf(TWITS_169)) div (h + SizeOf(TWITS_169)); 
   170: Result:=(FWITSStream_170.Position-SizeOf(TWITS_170)) div (h + SizeOf(TWITS_170)); 
   171: Result:=(FWITSStream_171.Position-SizeOf(TWITS_171)) div (h + SizeOf(TWITS_171)); 
   172: Result:=(FWITSStream_172.Position-SizeOf(TWITS_172)) div (h + SizeOf(TWITS_172)); 
   173: Result:=(FWITSStream_173.Position-SizeOf(TWITS_173)) div (h + SizeOf(TWITS_173)); 
   174: Result:=(FWITSStream_174.Position-SizeOf(TWITS_174)) div (h + SizeOf(TWITS_174)); 
   175: Result:=(FWITSStream_175.Position-SizeOf(TWITS_175)) div (h + SizeOf(TWITS_175)); 
   End; 
end; 
 
end.