Файл: Диссертация на соискание ученой степени кандидата технических наук Владимирский государственный университет.doc
Добавлен: 11.01.2024
Просмотров: 333
Скачиваний: 3
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
Документация
Для ПТК «ПХВ-1» разрабатывается и предоставляется пользователю следующая документация:
Общесистемная документация:
-
общее описание ПТК (ПД); -
инструкция по эксплуатации КТС (ИЭ); -
руководство по системной поддержке (ИЭ); -
описание программного обеспечения (ПА); -
ведомость машинных носителей информации.
-
На фронтальные и локальные ПЛК:
сборочный чертёж (СБ);
схема электрическая принципиальная (ЭЗ);
таблица соединений (ТЭ4);
таблица подключения ( ТЭ5);
ведомость покупных изделий (ВП);
ведомость ЗИП;
паспорт (ПС);
ведомость эксплуатационных документов (ВЭ);
руководство по эксплуатации (РЭ);
руководство программиста (РП);
перечень элементов ПЭЗ.
-
На АРМ:
-
Руководство пользователя (ИЗ); -
Чертежи видеокадров (ИЗ); -
Описание программного обеспечения.
Документация оформляется в соответствии с требованиями ЕСКД и ЕСПД. На составные компоненты импортного производства пользователю предоставляется эксплуатационная документация на русском языке. На ПТК «ПХВ-1» выпущены и действуют технические условия.
ПРИЛОЖЕНИЕ 7
Код основного модуля программы MODBUS_MASTER
//******************************************************************************
//******************************** MODBUS MASTER ******************************* //******************************************************************************
iinclude "comport.h" iinclude "crclrc.h" ttinclude "modbus.h" ttinclude
#ifdef WIN32 /************** секция WINDOWS ****************/
ttdefine usleep(delay) Sleep(delay/1000)
#endif
#include
unsigned char _mod_buffer[260];
unsigned char _mod_ascii_buffer[MAX_ASCII_BUF];
enum DebugDataType{ DATA_DEC, DATA_HEX, DATA_OCT, DATA_BIN, DATA_FLOAT
};
int __mod__debugType = DATA_HEX; // глобальные переменные
int __mod_debugState = MOD_DEBUG_OFF; // управление выполнением
int _mod_protocol_type = MODBUS_DEFAULT; // программы
//struct timeb _mod_ResponseTime; // время записи в устройство и время ответа операции MODBUS
long _mod_responseTime; // время ответа в миллисекундах
//float _mod_charPS = 0; // 1/(( baud rate ) / ( длина в битах )) //
// function pointers - используются когда установлен режим DEBUG или ASCII int (*_mod_procSendDataToDevice)(unsigned char devNum, unsigned char command, unsigned int count) = _mod_SendDataToDeviceRTU;
int (*_mod_procGetDataFromDevice)(unsigned char devNum, unsigned char **data, unsigned long *count) = _mod_GetDataFromDeviceRTU;
int (*_mod_procRecieveData)(unsigned short *crcRet, int *exErrorCode) = _mod_RecieveData;
int (*_mod_procTransmitData)(int count) = _mod_TransmitData;
/*int (*_mod_procRecieveDataASCII)(unsigned short *crcRet, int *exErrorCode) = _mod_RecieveDataASCII;
int (*_mod_procTransmitDataASCII)(int count) = _mod_TransmitDataASCII;*/ //
// Сканирование сети MODBUS
int ScanModBus(LPMODBUSDEVICE device) {
register int i=MAX_DEVICE_COUNT,j=0; unsigned char *dataPtr;
unsigned long nCount;
int dbgType = GetModBusDebugType();
int dbgState = GetModBusDebugState();
// Запрет операции отладки функции IO до начала сканирования
// if (dbgState == MOD_DEBUG_ON) // ModBusDebugEnable(0,0);
printf("%d\n", dbgState) ;
while(—i){// Сканирование всей сети MODBUS функцией 0x11
if (SendDataToDevice(i,0x11,0) != SUCCESSFUL) continue; if (GetDataFromDevice(i, SdataPtr, SnCount) == SUCCESSFUL) { device[j].devAddr = i; device[j].devID = *(dataPtr + 3);
}
usleep(50000);
}
// Выполнение операции отладки, если она разрешена
// if (dbgState == MOD_DEBUG_ON) // ModBusDebugEnable(1,dbgType);
return j;
}
/ / Получить идентификатор устройства
int GetDevicelD(unsigned char devNum, LPMODBUSDEVICE device) {
register int res;
unsigned char *dataPtr;
unsigned long nCount;
int dbgType = GetModBusDebugType();
int dbgState = GetModBusDebugState();
// Запрет операции отладки функции IO до начала сканирования
// if (dbgState == MOD_DEBUG_ON) // ModBusDebugEnable(0,0);
/ / Посылаем функцию 0x11 для получения информации об устройстве SendDataToDevice(devNum,0x11,0);
if ((res = GetDataFromDevice(devNum,SdataPtr,SnCount)) == SUCCESSFUL){ / / Полученные данные записываем в структуру device->devAddr = devNum; device->devID = *(dataPtr + 3);
}
usleep(50000);
// Выполнение операции отладки, если она разрешена
// if (dbgState == MOD_DEBUG_ON) / / ModBusDebugEnable(1, dbgType);
return res;
}
/ / Проверка на наличие устройства с номером devNum в списке найденных устройств
int IsDevicelnList(unsigned char devNum,LPMODBUSDEVICE device,int devCount) (
register int i = devCount, j=0; while(i—){
if (devNum==device[j].devAddr) return 0;
}
return -1;
}
/ / Чтение дискретных выходов устройства
int ReadDiscreteOut(unsigned char devNum, unsigned long startAddr, unsigned long count,
unsigned char **data, unsigned long *nBytes)
{
register int res; unsigned char *dataPtr; unsigned long nCount;
unsigned short *ptr = (unsigned short *)GetDataPtr();
*ptr = EndianSwap (startAddr) ; // Переставим старшие и младшие байты
*(ptr+1) = EndianSwap (count) ; // адреса и счетчика
/ / Пошлем данные устройству
if ((res = SendDataToDevice(devNum,0x01,4))!=SUCCESSFUL) return res; / / Считаем данные из устройства
if ((res = GetDataFromDevice(devNum, SdataPtr, SnCount)) !=SUCCESSFUL) return
res;
*data = dataPtr+3; // data - Содержит битовый ряд с положением дискретных
выходов каналов
*nBytes = * (dataPtr+2) ; // - Количество значащих бит в полученном массиве return res;
}
// Не удалось проверить, т.к. функция не работает в ПКЦ12
int ReadDiagnostic(unsigned char devNum,unsigned short *value) {
register int res;
unsigned char *dataPtr = GetDataPtr(); unsigned long nCount; *dataPtr = 0x00; *(dataPtr+1) = 0x02; *(dataPtr+2) = 0x00; *(dataPtr+3) = 0x00; // *ptr = 0x0002; // *(ptr+1) = 0x0000;
if ((res = SendDataToDevice(devNum,0x08,4))!=SUCCESSFUL) return res; if ((res = GetDataFromDevice(devNum,SdataPtr,&nCount))!=SUCCESSFUL) return
res;
*value = EndianSwap(*((unsigned short *)(dataPtr+4))); return res;
}
// He удалось проверить, т.к. функция не работает в ПКЦ12
int ClearDiagnostic(unsigned char devNum) {
register int res;
unsigned char *dataPtr = GetDataPtr(); unsigned long nCount; *dataPtr = 0x00; *(dataPtr+1) = 0x01; *(dataPtr+2) = OxFF; *(dataPtr+3) = 0x00; // *ptr = 0x0002; // *(ptr+1) = 0x0000;
if ((res = SendDataToDevice(devNum,0x08,4))!=SUCCESSFUL) return res; if ((res = GetDataFromDevice(devNum,SdataPtr,SnCount))!=SUCCESSFUL) return
res;
return res;
}
// Чтение группы регистров устройства / / Параметры:
// devNum - номер устройства на шине MODBUS // startAddr - начальный адрес регистра устройства // count - количество регистров подлежащих прочтению // data - возвращается указатель на прочитанные данные // nRegs - количество прочитанных регистров
int ReadRegisters(unsigned char devNum, unsigned long startAddr, unsigned long count,
unsigned short **data, unsigned long *nRegs)
{
register int res; unsigned char *dataPtr; unsigned long nCount;
unsigned short *ptr = (unsigned short *)GetDataPtr(); *ptr = EndianSwap(startAddr); *(ptr+l) = EndianSwap(count);
if ((res = SendDataToDevice(devNum,0x03,4))!=SUCCESSFUL) return res; if ((res = GetDataFromDevice(devNum,SdataPtr,SnCount))!=SUCCESSFUL) return
res ;
ptr = (unsigned short *)(dataPtr+3); *data = ptr;
*nRegs = (*(dataPtr+2)) » 1; /* i=*nRegs; do{
*ptr = EndianSwap(*ptr); ptr++; }while(—i);*/ return res;
}
// Чтение группы 32-х разрядных регистров устройства / / Параметры:
// devNum - номер устройства на шине MODBUS
// startAddr - начальный адрес регистра устройства
// count - количество регистров подлежащих прочтению
// data - возвращается указатель на прочитанные данные
// nRegs - количество прочитанных регистров
int ReadRegisters32(unsigned char devNum, unsigned long startAddr, unsigned
long count,
unsigned long **data, unsigned long *nRegs)
{
register int res; unsigned char *dataPtr; unsigned long nCount;
unsigned short *ptr = (unsigned short *)GetDataPtr(); *ptr = EndianSwap(startAddr); *(ptr+l) = EndianSwap (count«l ) ;
if ((res = SendDataToDevice(devNum,0x03,4))!=SUCCESSFUL) return res; if ((res = GetDataFromDevice(devNum,SdataPtr,SnCount))!=SUCCESSFUL) return
res;
ptr = (unsigned short *)(dataPtr+3); *data = (unsigned long *)ptr; *nRegs = (*(dataPtr+2)) >> 2; /* i=*nRegs; do {
*ptr = EndianSwap(*ptr); *(ptr+l) = EndianSwap(*(ptr+l)); ptr+=2;
}while(—i);*/ return res;
}
1 ... 17 18 19 20 21 22 23 24 25
/ / Чтение одного 32-х разрядного регистра устройства / / Параметры:
// devNum - номер устройства на шине MODBUS
// startAddr - начальный адрес регистра устройства
// value - считанное из устройства значение
int ReadRegister32(unsigned char devNum, unsigned long startAddr, unsigned
long *value) {
register int res; unsigned char *dataPtr; unsigned long nCount;
unsigned short *ptr = (unsigned short *)GetDataPtr(); *ptr = EndianSwap(startAddr); *(ptr+l) = 0x0200;
if ((res = SendDataToDevice(devNum,0x03,4))!=SUCCESSFUL) return res; if ((res = GetDataFromDevice(devNum,SdataPtr,SnCount))!=SUCCESSFUL) return
res;
ptr = (unsigned short *)(dataPtr+3); if (*(dataPtr+2)!=4) return READ_ERROR; *ptr = EndianSwap(*ptr); *(ptr+l) = EndianSwap(*(ptr+1)); *value = *((unsigned long*)ptr); return res;
}
// Чтение одного 16-ти разрядного регистра устройства / / Параметры:
// devNum - номер устройства на шине MODBUS
// startAddr - начальный адрес регистра устройства
// value - считанное из устройства значение
int ReadRegisterl6(unsigned char devNum, unsigned long startAddr, unsigned
short *value) {
register int res; unsigned char *dataPtr; unsigned long nCount;
unsigned short *ptr = (unsigned short *)GetDataPtr(); *ptr = EndianSwap(startAddr); *(ptr+1) = 0x0100;
if ((res = SendDataToDevice(devNum,0x03,4))!=SUCCESSFUL) return res; if ((res = GetDataFromDevice(devNum,SdataPtr,SnCount))!=SUCCESSFUL) return
res;
ptr = (unsigned short *)(dataPtr+3); if (*(dataPtr+2)!=2) return READ_ERROR; *value = EndianSwap(*ptr); return res;
}
/ / При записи используются все те же параметры что и при чтении
int WriteRegisters(unsigned char devNum, unsigned long startAddr, unsigned long count,
unsigned short *data,unsigned long *regStart, unsigned long *nRegs)
{
register int res;
unsigned char *dataPtr = GetDataPtr(); unsigned long nCount; unsigned char byteCount;
unsigned short *ptr = (unsigned short *)dataPtr;
*ptr = EndianSwap(startAddr);
*(ptr+l) = EndianSwap(count);
byteCount = (count&OxFF)
*(dataPtr+4) = byteCount;
ptr = (unsigned short *) (dataPtr+5);
memcpy (ptr, data, counted) ;
if ((res = SendDataToDevice(devNum,0x10,5 + byteCount))!=SUCCESSFUL) return res;
if ((res = GetDataFromDevice(devNum,SdataPtr,SnCount))!=SUCCESSFUL) return
res;
ptr = (unsigned short *)(dataPtr+2); *regStart = EndianSwap(*ptr); "nRegs = EndianSwap(*(ptr+1)); return res;
}
int WriteRegisterl6(unsigned char devNum, unsigned long startAddr, unsigned
short value) {
register int res;
unsigned char *dataPtr = GetDataPtr(); unsigned long nCount; unsigned char byteCount;
unsigned short *ptr = (unsigned short *)dataPtr;
*ptr = EndianSwap(startAddr);
*(ptr+1) = 0x0200;
byteCount = 2;
*(dataPtr+4) = byteCount;
ptr = (unsigned short *)(dataPtr+5);
*ptr = EndianSwap(value);
if ((res = SendDataToDevice(devNum,0x10,5 + byteCount))!=SUCCESSFUL) return res;
if ((res = GetDataFromDevice(devNum, SdataPtr, SnCount)) !=SUCCESSFUL) return
res;
return res;
}
int WriteRegisters32(unsigned char devNum, unsigned long startAddr, unsigned long count,
unsigned long *data,unsigned long *regStart, unsigned long *nRegs)
{
register int res;
unsigned char *dataPtr = GetDataPtr(); unsigned long nCount; unsigned char byteCount;
unsigned short *ptr = (unsigned short *)dataPtr;
*ptr = EndianSwap(startAddr);
* (ptr+1) = EndianSwap (counted) ;
byteCount = ((count<
*(dataPtr+4) = byteCount;
ptr = (unsigned short *)(dataPtr+5);
memcpy(ptr,data, count<<2) ;
if ((res = SendDataToDevice(devNum,0x10,5 + byteCount))!=SUCCESSFUL) return res;
if ((res = GetDataFromDevice(devNum, SdataPtr,SnCount))!=SUCCESSFUL) return
res;
ptr = (unsigned short *)(dataPtr+2); *regStart = EndianSwap(*ptr); *nRegs = EndianSwap(*(ptr+1)); return res;
}
int WriteRegister32(unsigned char devNum, unsigned long startAddr, unsigned
long value) {
register int res;
unsigned char *dataPtr = GetDataPtr(); unsigned long nCount; unsigned char byteCount;
unsigned short *ptr = (unsigned short *)dataPtr;
*ptr = EndianSwap(startAddr);
*(ptr+1) = 0x0200;
byteCount = 4;
*(dataPtr+4) = byteCount;
ptr = (unsigned short *)(dataPtr+5);
*ptr = EndianSwap((unsigned short)(value & OxFFFF)); *(ptr+l) = EndianSwap((unsigned short)(value>>l6));
if ((res = SendDataToDevice(devNum,0x10,5 + byteCount))!=SUCCESSFUL) return res;
if ((res = GetDataFromDevice(devNum,SdataPtr,&nCount))!=SUCCESSFUL) ret
res;
return res;
}
//********** Возвращает ответ устройства в миллисекундах ******************** //***************************************************************************
long GetResponseTime(){ return _mod_responseTime;}
/у***************************************************************************
jу**************** Вывод сообщения об ошибке ******************************** //***************************************************************************
void _mod_PrintError(int err) {
printf("*** MODBUS ERROR %d ***: ",err); switch(err){
04200911472 Дерябин Александр Вячеславович 1
Защита информации в телекоммуникациях АСУ ТП химической промышленности 1
1 УГРОЗЫ ИНФОРМАЦИОННОЙ БЕЗОПАСНОСТИ И УЯЗВИМОСТИ АСУ ТП 9
1.1 Телекоммуникации АСУ ТП 9
1.1.1 Типовая структура АСУ ТП 9
¡1]]]]]] 1ЕШ ШШ В11 36
Il i 46
2 ЗАЩИТА ИНФОРМАЦИИ В АСУ ТП 63
i 398
А=я2/я, 1 ... ык (43Л) 543
А = — ■ А ; А = — ■■ АА, =—■ А 576
А = " А ^ А = " А ^ ■ ■ ■ ^ А = " А 577
М1 = --М»>М2 = --М»>-'>Мп-, = —-А 579
к. т, 843
Акт внедрения 843
printf("undefined error"); break;
}ПРИЛОЖЕНИЕ S
Экранный снимок программы MUDBUS MAS'Г1-К
icrosoft Windows XP [Версия 5.1.2600 CO Корпорация Майкрософт, 1985-2001.
C:\Docui4ents and SettingsSAnMHMHCTpaTop>cd..
C:\DocUMonts and Settings)cd..
С: \ )no dbus пав t e r. e xe
modbusmaster uZ.l
usage : mo dbus piaster [options] [long options] long options:
COM port options:
—con [port],[baudrate],[format 3,[flow]
[port] - port папе
_ в X
I-
<9600 - by default)
[baudrate] — set con port baudrat
e
[format] - data format In special form: [XHPHS], i.e. 8N1
where [X] — number bits of data [5..81 <8 — by default>
[PI - parity type: (N, E
[S3 - number of stop bits [1,23 <1 - by default>
[flow] — flow control: [none, soft, hard, both3 (none — by default)
[flow]
MODBUS options: —node
—node - device number [0..2473 —function - select HODBUS function
—rag — register index that must be read or write
—data - data string that would transmit to register
—byte - set byte numltar in message which point to a number
—items - count of items to read
—scan - perform a full MODBUS net scan for any devices —listen - listen COM port short options:
-d - enable COM port debug mode, data type visualization:
[dec,bin,hex.oct,float] -c automatic calculation CRC of the BflU data
-r - read one register of the device according the following format: b - print data as BIN
-
- print data as OCT h - print data as HEX
f — print data as float c - print data as set of chars print data as DEC by default —w - write register
32 write data to 32 bit register 16 - write data to 16 bit register raw - write raw data to port -e — endiari type:
b - use in register operation big endians
-
- use in register operation little endians
if both parameters are set use half big endians {only
2 numbers)
-
enable ASCII mode Cnot fully supported )
-
print device response tine
-
listen COM port
verbos
eПРИЛОЖЕНИЕ 9
АКТЫ ВНЕДРЕНИЯ«Утверждаю» Генеральный директор ООО «ПСВ-Холдинг»
/
/
7
Д. Ю. Пунин
АКТ ВНЕДРЕНИЯ
Результаты исследований, полученные Дерябиным A.B. при выполнении диссертационной работы, в частности:
Методики и рекомендации по обеспечению информационной безопасности каналов связи в АСУТП, а также рекомендации по выбору программных и аппаратных средств для проектирования автоматизированной системы управления технологическими процессами, соответствующих стандартам и требованиям по безопасности в химической промышленности.
внедрены в 2008-2009 году на нашем новом производственном предприятии в г.Электросталь, Московской области - в АСУТП комплекса по производству поливииилхлорида и бумвинила.
Методики и рекомендации позволили существенно облегчить работу проектировщиков при выборе методов и средств защиты информации. Методики позволили повысить защищенность информации и телекоммуникаций в АСУТП предприятия. Выработанные методики позволили снизить количество сбоев в технологическом процессе из-за искажения или потери информации, что положительно сказалось на качестве выпускаемой продукции
.
С
Лохиов М. В.
Семенов А. А
.
•и
АКТ ВНЕДРЕНИЯ
Результаты, полученные Дерябиным A.B. при выполнении диссертационной работы, в частности:
-
Методики защиты телекоммуникаций АСУТП верхнего и нижнего уровней;
-
Рекомендации по обеспечению защиты проводных и беспроводных каналов связи АСУТП и SCADA-систем;
внедрены на объектах проектируемых и обслуживаемых нашим предприятием в 2008 году и будут внедряться в дальнейшем.
Сергеев М. А.
Главный инженер:
Руководитель проектной группы:
Методики показали высокую эффективность и позволили существенным образом увеличить защищенность передаваемой информации и всей системы в целом
.
к. т,
Акт внедрения
Результаты, полученные Дерябиным A.B. при выполнении диссертационной работы, в частности:
-
Методики применения различных способов защиты информации от несанкционированного доступа в АСУТП;
-
Рекомендации по защите телекоммуникационных и компьютерных сетей;
внедрены на нашем предприятии в 2008-2009гг. Они нашли практическое применение при обмене информацией с нашими филиалами в гг. Иваново, Санкт-Петербург, Омске и т.п.
Сирко С. Э.
Указанные методики хороши тем, что при сравнительно небольших затратах обеспечивают высокую эффективность и не требуют специальной подготовки нашего персонала.
Начальник отдела-
Смушко О.Л.
Начальник лаборатории
(т) /* 192
1>8>9600>
1 ... 17 18 19 20 21 22 23 24 25
/ / Чтение одного 32-х разрядного регистра устройства / / Параметры:
// devNum - номер устройства на шине MODBUS
// startAddr - начальный адрес регистра устройства
// value - считанное из устройства значение
int ReadRegister32(unsigned char devNum, unsigned long startAddr, unsigned
long *value) {
register int res; unsigned char *dataPtr; unsigned long nCount;
unsigned short *ptr = (unsigned short *)GetDataPtr(); *ptr = EndianSwap(startAddr); *(ptr+l) = 0x0200;
if ((res = SendDataToDevice(devNum,0x03,4))!=SUCCESSFUL) return res; if ((res = GetDataFromDevice(devNum,SdataPtr,SnCount))!=SUCCESSFUL) return
res;
ptr = (unsigned short *)(dataPtr+3); if (*(dataPtr+2)!=4) return READ_ERROR; *ptr = EndianSwap(*ptr); *(ptr+l) = EndianSwap(*(ptr+1)); *value = *((unsigned long*)ptr); return res;
}
// Чтение одного 16-ти разрядного регистра устройства / / Параметры:
// devNum - номер устройства на шине MODBUS
// startAddr - начальный адрес регистра устройства
// value - считанное из устройства значение
int ReadRegisterl6(unsigned char devNum, unsigned long startAddr, unsigned
short *value) {
register int res; unsigned char *dataPtr; unsigned long nCount;
unsigned short *ptr = (unsigned short *)GetDataPtr(); *ptr = EndianSwap(startAddr); *(ptr+1) = 0x0100;
if ((res = SendDataToDevice(devNum,0x03,4))!=SUCCESSFUL) return res; if ((res = GetDataFromDevice(devNum,SdataPtr,SnCount))!=SUCCESSFUL) return
res;
ptr = (unsigned short *)(dataPtr+3); if (*(dataPtr+2)!=2) return READ_ERROR; *value = EndianSwap(*ptr); return res;
}
/ / При записи используются все те же параметры что и при чтении
int WriteRegisters(unsigned char devNum, unsigned long startAddr, unsigned long count,
unsigned short *data,unsigned long *regStart, unsigned long *nRegs)
{
register int res;
unsigned char *dataPtr = GetDataPtr(); unsigned long nCount; unsigned char byteCount;
unsigned short *ptr = (unsigned short *)dataPtr;
*ptr = EndianSwap(startAddr);
*(ptr+l) = EndianSwap(count);
byteCount = (count&OxFF)
*(dataPtr+4) = byteCount;
ptr = (unsigned short *) (dataPtr+5);
memcpy (ptr, data, counted) ;
if ((res = SendDataToDevice(devNum,0x10,5 + byteCount))!=SUCCESSFUL) return res;
if ((res = GetDataFromDevice(devNum,SdataPtr,SnCount))!=SUCCESSFUL) return
res;
ptr = (unsigned short *)(dataPtr+2); *regStart = EndianSwap(*ptr); "nRegs = EndianSwap(*(ptr+1)); return res;
}
int WriteRegisterl6(unsigned char devNum, unsigned long startAddr, unsigned
short value) {
register int res;
unsigned char *dataPtr = GetDataPtr(); unsigned long nCount; unsigned char byteCount;
unsigned short *ptr = (unsigned short *)dataPtr;
*ptr = EndianSwap(startAddr);
*(ptr+1) = 0x0200;
byteCount = 2;
*(dataPtr+4) = byteCount;
ptr = (unsigned short *)(dataPtr+5);
*ptr = EndianSwap(value);
if ((res = SendDataToDevice(devNum,0x10,5 + byteCount))!=SUCCESSFUL) return res;
if ((res = GetDataFromDevice(devNum, SdataPtr, SnCount)) !=SUCCESSFUL) return
res;
return res;
}
int WriteRegisters32(unsigned char devNum, unsigned long startAddr, unsigned long count,
unsigned long *data,unsigned long *regStart, unsigned long *nRegs)
{
register int res;
unsigned char *dataPtr = GetDataPtr(); unsigned long nCount; unsigned char byteCount;
unsigned short *ptr = (unsigned short *)dataPtr;
*ptr = EndianSwap(startAddr);
* (ptr+1) = EndianSwap (counted) ;
byteCount = ((count<
*(dataPtr+4) = byteCount;
ptr = (unsigned short *)(dataPtr+5);
memcpy(ptr,data, count<<2) ;
if ((res = SendDataToDevice(devNum,0x10,5 + byteCount))!=SUCCESSFUL) return res;
if ((res = GetDataFromDevice(devNum, SdataPtr,SnCount))!=SUCCESSFUL) return
res;
ptr = (unsigned short *)(dataPtr+2); *regStart = EndianSwap(*ptr); *nRegs = EndianSwap(*(ptr+1)); return res;
}
int WriteRegister32(unsigned char devNum, unsigned long startAddr, unsigned
long value) {
register int res;
unsigned char *dataPtr = GetDataPtr(); unsigned long nCount; unsigned char byteCount;
unsigned short *ptr = (unsigned short *)dataPtr;
*ptr = EndianSwap(startAddr);
*(ptr+1) = 0x0200;
byteCount = 4;
*(dataPtr+4) = byteCount;
ptr = (unsigned short *)(dataPtr+5);
*ptr = EndianSwap((unsigned short)(value & OxFFFF)); *(ptr+l) = EndianSwap((unsigned short)(value>>l6));
if ((res = SendDataToDevice(devNum,0x10,5 + byteCount))!=SUCCESSFUL) return res;
if ((res = GetDataFromDevice(devNum,SdataPtr,&nCount))!=SUCCESSFUL) ret
res;
return res;
}
//********** Возвращает ответ устройства в миллисекундах ******************** //***************************************************************************
long GetResponseTime(){ return _mod_responseTime;}
/у***************************************************************************
jу**************** Вывод сообщения об ошибке ******************************** //***************************************************************************
void _mod_PrintError(int err) {
printf("*** MODBUS ERROR %d ***: ",err); switch(err){
04200911472 Дерябин Александр Вячеславович 1
Защита информации в телекоммуникациях АСУ ТП химической промышленности 1
1 УГРОЗЫ ИНФОРМАЦИОННОЙ БЕЗОПАСНОСТИ И УЯЗВИМОСТИ АСУ ТП 9
1.1 Телекоммуникации АСУ ТП 9
1.1.1 Типовая структура АСУ ТП 9
¡1]]]]]] 1ЕШ ШШ В11 36
Il i 46
2 ЗАЩИТА ИНФОРМАЦИИ В АСУ ТП 63
i 398
А=я2/я, 1 ... ык (43Л) 543
А = — ■ А ; А = — ■■ АА, =—■ А 576
А = " А ^ А = " А ^ ■ ■ ■ ^ А = " А 577
М1 = --М»>М2 = --М»>-'>Мп-, = —-А 579
к. т, 843
Акт внедрения 843
printf("undefined error"); break;
}ПРИЛОЖЕНИЕ S
Экранный снимок программы MUDBUS MAS'Г1-К
icrosoft Windows XP [Версия 5.1.2600 CO Корпорация Майкрософт, 1985-2001.
C:\Docui4ents and SettingsSAnMHMHCTpaTop>cd..
C:\DocUMonts and Settings)cd..
С: \ )no dbus пав t e r. e xe
modbusmaster uZ.l
usage : mo dbus piaster [options] [long options] long options:
COM port options:
—con [port],[baudrate],[format 3,[flow]
[port] - port папе
_ в X
I-
<9600 - by default)
[baudrate] — set con port baudrat
e
[format] - data format In special form: [XHPHS], i.e. 8N1
where [X] — number bits of data [5..81 <8 — by default>
[PI - parity type: (N, E
[S3 - number of stop bits [1,23 <1 - by default>
[flow] — flow control: [none, soft, hard, both3 (none — by default)
[flow]
MODBUS options: —node
—node - device number [0..2473 —function - select HODBUS function
—rag — register index that must be read or write
—data - data string that would transmit to register
—byte - set byte numltar in message which point to a number
—items - count of items to read
—scan - perform a full MODBUS net scan for any devices —listen - listen COM port short options:
-d - enable COM port debug mode, data type visualization:
[dec,bin,hex.oct,float] -c automatic calculation CRC of the BflU data
-r - read one register of the device according the following format: b - print data as BIN
-
- print data as OCT h - print data as HEX
f — print data as float c - print data as set of chars print data as DEC by default —w - write register
32 write data to 32 bit register 16 - write data to 16 bit register raw - write raw data to port -e — endiari type:
b - use in register operation big endians
-
- use in register operation little endians
if both parameters are set use half big endians {only
2 numbers)
-
enable ASCII mode Cnot fully supported )
-
print device response tine
-
listen COM port
verbos
eПРИЛОЖЕНИЕ 9
АКТЫ ВНЕДРЕНИЯ«Утверждаю» Генеральный директор ООО «ПСВ-Холдинг»
/
/
7
Д. Ю. Пунин
АКТ ВНЕДРЕНИЯ
Результаты исследований, полученные Дерябиным A.B. при выполнении диссертационной работы, в частности:
Методики и рекомендации по обеспечению информационной безопасности каналов связи в АСУТП, а также рекомендации по выбору программных и аппаратных средств для проектирования автоматизированной системы управления технологическими процессами, соответствующих стандартам и требованиям по безопасности в химической промышленности.
внедрены в 2008-2009 году на нашем новом производственном предприятии в г.Электросталь, Московской области - в АСУТП комплекса по производству поливииилхлорида и бумвинила.
Методики и рекомендации позволили существенно облегчить работу проектировщиков при выборе методов и средств защиты информации. Методики позволили повысить защищенность информации и телекоммуникаций в АСУТП предприятия. Выработанные методики позволили снизить количество сбоев в технологическом процессе из-за искажения или потери информации, что положительно сказалось на качестве выпускаемой продукции
.
С
Лохиов М. В.
Семенов А. А
.
•и
АКТ ВНЕДРЕНИЯ
Результаты, полученные Дерябиным A.B. при выполнении диссертационной работы, в частности:
-
Методики защиты телекоммуникаций АСУТП верхнего и нижнего уровней;
-
Рекомендации по обеспечению защиты проводных и беспроводных каналов связи АСУТП и SCADA-систем;
внедрены на объектах проектируемых и обслуживаемых нашим предприятием в 2008 году и будут внедряться в дальнейшем.
Сергеев М. А.
Главный инженер:
Руководитель проектной группы:
Методики показали высокую эффективность и позволили существенным образом увеличить защищенность передаваемой информации и всей системы в целом
.
к. т,
Акт внедрения
Результаты, полученные Дерябиным A.B. при выполнении диссертационной работы, в частности:
-
Методики применения различных способов защиты информации от несанкционированного доступа в АСУТП;
-
Рекомендации по защите телекоммуникационных и компьютерных сетей;
внедрены на нашем предприятии в 2008-2009гг. Они нашли практическое применение при обмене информацией с нашими филиалами в гг. Иваново, Санкт-Петербург, Омске и т.п.
Сирко С. Э.
Указанные методики хороши тем, что при сравнительно небольших затратах обеспечивают высокую эффективность и не требуют специальной подготовки нашего персонала.
Начальник отдела-
Смушко О.Л.
Начальник лаборатории
(т) /* 192
1>8>9600>
1 ... 17 18 19 20 21 22 23 24 25
/ / Чтение одного 32-х разрядного регистра устройства / / Параметры:
// devNum - номер устройства на шине MODBUS
// startAddr - начальный адрес регистра устройства
// value - считанное из устройства значение
int ReadRegister32(unsigned char devNum, unsigned long startAddr, unsigned
long *value) {
register int res; unsigned char *dataPtr; unsigned long nCount;
unsigned short *ptr = (unsigned short *)GetDataPtr(); *ptr = EndianSwap(startAddr); *(ptr+l) = 0x0200;
if ((res = SendDataToDevice(devNum,0x03,4))!=SUCCESSFUL) return res; if ((res = GetDataFromDevice(devNum,SdataPtr,SnCount))!=SUCCESSFUL) return
res;
ptr = (unsigned short *)(dataPtr+3); if (*(dataPtr+2)!=4) return READ_ERROR; *ptr = EndianSwap(*ptr); *(ptr+l) = EndianSwap(*(ptr+1)); *value = *((unsigned long*)ptr); return res;
}
// Чтение одного 16-ти разрядного регистра устройства / / Параметры:
// devNum - номер устройства на шине MODBUS
// startAddr - начальный адрес регистра устройства
// value - считанное из устройства значение
int ReadRegisterl6(unsigned char devNum, unsigned long startAddr, unsigned
short *value) {
register int res; unsigned char *dataPtr; unsigned long nCount;
unsigned short *ptr = (unsigned short *)GetDataPtr(); *ptr = EndianSwap(startAddr); *(ptr+1) = 0x0100;
if ((res = SendDataToDevice(devNum,0x03,4))!=SUCCESSFUL) return res; if ((res = GetDataFromDevice(devNum,SdataPtr,SnCount))!=SUCCESSFUL) return
res;
ptr = (unsigned short *)(dataPtr+3); if (*(dataPtr+2)!=2) return READ_ERROR; *value = EndianSwap(*ptr); return res;
}
/ / При записи используются все те же параметры что и при чтении
int WriteRegisters(unsigned char devNum, unsigned long startAddr, unsigned long count,
unsigned short *data,unsigned long *regStart, unsigned long *nRegs)
{
register int res;
unsigned char *dataPtr = GetDataPtr(); unsigned long nCount; unsigned char byteCount;
unsigned short *ptr = (unsigned short *)dataPtr;
*ptr = EndianSwap(startAddr);
*(ptr+l) = EndianSwap(count);
byteCount = (count&OxFF)
*(dataPtr+4) = byteCount;
ptr = (unsigned short *) (dataPtr+5);
memcpy (ptr, data, counted) ;
if ((res = SendDataToDevice(devNum,0x10,5 + byteCount))!=SUCCESSFUL) return res;
if ((res = GetDataFromDevice(devNum,SdataPtr,SnCount))!=SUCCESSFUL) return
res;
ptr = (unsigned short *)(dataPtr+2); *regStart = EndianSwap(*ptr); "nRegs = EndianSwap(*(ptr+1)); return res;
}
int WriteRegisterl6(unsigned char devNum, unsigned long startAddr, unsigned
short value) {
register int res;
unsigned char *dataPtr = GetDataPtr(); unsigned long nCount; unsigned char byteCount;
unsigned short *ptr = (unsigned short *)dataPtr;
*ptr = EndianSwap(startAddr);
*(ptr+1) = 0x0200;
byteCount = 2;
*(dataPtr+4) = byteCount;
ptr = (unsigned short *)(dataPtr+5);
*ptr = EndianSwap(value);
if ((res = SendDataToDevice(devNum,0x10,5 + byteCount))!=SUCCESSFUL) return res;
if ((res = GetDataFromDevice(devNum, SdataPtr, SnCount)) !=SUCCESSFUL) return
res;
return res;
}
int WriteRegisters32(unsigned char devNum, unsigned long startAddr, unsigned long count,
unsigned long *data,unsigned long *regStart, unsigned long *nRegs)
{
register int res;
unsigned char *dataPtr = GetDataPtr(); unsigned long nCount; unsigned char byteCount;
unsigned short *ptr = (unsigned short *)dataPtr;
*ptr = EndianSwap(startAddr);
* (ptr+1) = EndianSwap (counted) ;
byteCount = ((count<
*(dataPtr+4) = byteCount;
ptr = (unsigned short *)(dataPtr+5);
memcpy(ptr,data, count<<2) ;
if ((res = SendDataToDevice(devNum,0x10,5 + byteCount))!=SUCCESSFUL) return res;
if ((res = GetDataFromDevice(devNum, SdataPtr,SnCount))!=SUCCESSFUL) return
res;
ptr = (unsigned short *)(dataPtr+2); *regStart = EndianSwap(*ptr); *nRegs = EndianSwap(*(ptr+1)); return res;
}
int WriteRegister32(unsigned char devNum, unsigned long startAddr, unsigned
long value) {
register int res;
unsigned char *dataPtr = GetDataPtr(); unsigned long nCount; unsigned char byteCount;
unsigned short *ptr = (unsigned short *)dataPtr;
*ptr = EndianSwap(startAddr);
*(ptr+1) = 0x0200;
byteCount = 4;
*(dataPtr+4) = byteCount;
ptr = (unsigned short *)(dataPtr+5);
*ptr = EndianSwap((unsigned short)(value & OxFFFF)); *(ptr+l) = EndianSwap((unsigned short)(value>>l6));
if ((res = SendDataToDevice(devNum,0x10,5 + byteCount))!=SUCCESSFUL) return res;
if ((res = GetDataFromDevice(devNum,SdataPtr,&nCount))!=SUCCESSFUL) ret
res;
return res;
}
//********** Возвращает ответ устройства в миллисекундах ******************** //***************************************************************************
long GetResponseTime(){ return _mod_responseTime;}
/у***************************************************************************
jу**************** Вывод сообщения об ошибке ******************************** //***************************************************************************
void _mod_PrintError(int err) {
printf("*** MODBUS ERROR %d ***: ",err); switch(err){
04200911472 Дерябин Александр Вячеславович 1
Защита информации в телекоммуникациях АСУ ТП химической промышленности 1
1 УГРОЗЫ ИНФОРМАЦИОННОЙ БЕЗОПАСНОСТИ И УЯЗВИМОСТИ АСУ ТП 9
1.1 Телекоммуникации АСУ ТП 9
1.1.1 Типовая структура АСУ ТП 9
¡1]]]]]] 1ЕШ ШШ В11 36
Il i 46
2 ЗАЩИТА ИНФОРМАЦИИ В АСУ ТП 63
i 398
А=я2/я, 1 ... ык (43Л) 543
А = — ■ А ; А = — ■■ АА, =—■ А 576
А = " А ^ А = " А ^ ■ ■ ■ ^ А = " А 577
М1 = --М»>М2 = --М»>-'>Мп-, = —-А 579
к. т, 843
Акт внедрения 843
printf("undefined error"); break;
}ПРИЛОЖЕНИЕ S
Экранный снимок программы MUDBUS MAS'Г1-К
icrosoft Windows XP [Версия 5.1.2600 CO Корпорация Майкрософт, 1985-2001.
C:\Docui4ents and SettingsSAnMHMHCTpaTop>cd..
C:\DocUMonts and Settings)cd..
С: \ )no dbus пав t e r. e xe
modbusmaster uZ.l
usage : mo dbus piaster [options] [long options] long options:
COM port options:
—con [port],[baudrate],[format 3,[flow]
[port] - port папе
_ в X
I-
<9600 - by default)
[baudrate] — set con port baudrat
e
[format] - data format In special form: [XHPHS], i.e. 8N1
where [X] — number bits of data [5..81 <8 — by default>
[PI - parity type: (N, E
[S3 - number of stop bits [1,23 <1 - by default>
[flow] — flow control: [none, soft, hard, both3 (none — by default)
[flow]
MODBUS options: —node
—node - device number [0..2473 —function - select HODBUS function
—rag — register index that must be read or write
—data - data string that would transmit to register
—byte - set byte numltar in message which point to a number
—items - count of items to read
—scan - perform a full MODBUS net scan for any devices —listen - listen COM port short options:
-d - enable COM port debug mode, data type visualization:
[dec,bin,hex.oct,float] -c automatic calculation CRC of the BflU data
-r - read one register of the device according the following format: b - print data as BIN
-
- print data as OCT h - print data as HEX
f — print data as float c - print data as set of chars print data as DEC by default —w - write register
32 write data to 32 bit register 16 - write data to 16 bit register raw - write raw data to port -e — endiari type:
b - use in register operation big endians
-
- use in register operation little endians
if both parameters are set use half big endians {only
2 numbers)
-
enable ASCII mode Cnot fully supported )
-
print device response tine
-
listen COM port
verbos
eПРИЛОЖЕНИЕ 9
АКТЫ ВНЕДРЕНИЯ«Утверждаю» Генеральный директор ООО «ПСВ-Холдинг»
/
/
7
Д. Ю. Пунин
АКТ ВНЕДРЕНИЯ
Результаты исследований, полученные Дерябиным A.B. при выполнении диссертационной работы, в частности:
Методики и рекомендации по обеспечению информационной безопасности каналов связи в АСУТП, а также рекомендации по выбору программных и аппаратных средств для проектирования автоматизированной системы управления технологическими процессами, соответствующих стандартам и требованиям по безопасности в химической промышленности.
внедрены в 2008-2009 году на нашем новом производственном предприятии в г.Электросталь, Московской области - в АСУТП комплекса по производству поливииилхлорида и бумвинила.
Методики и рекомендации позволили существенно облегчить работу проектировщиков при выборе методов и средств защиты информации. Методики позволили повысить защищенность информации и телекоммуникаций в АСУТП предприятия. Выработанные методики позволили снизить количество сбоев в технологическом процессе из-за искажения или потери информации, что положительно сказалось на качестве выпускаемой продукции
.
С
Лохиов М. В.
Семенов А. А
.
•и
АКТ ВНЕДРЕНИЯ
Результаты, полученные Дерябиным A.B. при выполнении диссертационной работы, в частности:
-
Методики защиты телекоммуникаций АСУТП верхнего и нижнего уровней;
-
Рекомендации по обеспечению защиты проводных и беспроводных каналов связи АСУТП и SCADA-систем;
внедрены на объектах проектируемых и обслуживаемых нашим предприятием в 2008 году и будут внедряться в дальнейшем.
Сергеев М. А.
Главный инженер:
Руководитель проектной группы:
Методики показали высокую эффективность и позволили существенным образом увеличить защищенность передаваемой информации и всей системы в целом
.
к. т,
Акт внедрения
Результаты, полученные Дерябиным A.B. при выполнении диссертационной работы, в частности:
-
Методики применения различных способов защиты информации от несанкционированного доступа в АСУТП;
-
Рекомендации по защите телекоммуникационных и компьютерных сетей;
внедрены на нашем предприятии в 2008-2009гг. Они нашли практическое применение при обмене информацией с нашими филиалами в гг. Иваново, Санкт-Петербург, Омске и т.п.
Сирко С. Э.
Указанные методики хороши тем, что при сравнительно небольших затратах обеспечивают высокую эффективность и не требуют специальной подготовки нашего персонала.
Начальник отдела-
Смушко О.Л.
Начальник лаборатории
(т) /* 192
1>8>9600>
1 ... 17 18 19 20 21 22 23 24 25
/ / Чтение одного 32-х разрядного регистра устройства / / Параметры:
// devNum - номер устройства на шине MODBUS
// startAddr - начальный адрес регистра устройства
// value - считанное из устройства значение
int ReadRegister32(unsigned char devNum, unsigned long startAddr, unsigned
long *value) {
register int res; unsigned char *dataPtr; unsigned long nCount;
unsigned short *ptr = (unsigned short *)GetDataPtr(); *ptr = EndianSwap(startAddr); *(ptr+l) = 0x0200;
if ((res = SendDataToDevice(devNum,0x03,4))!=SUCCESSFUL) return res; if ((res = GetDataFromDevice(devNum,SdataPtr,SnCount))!=SUCCESSFUL) return
res;
ptr = (unsigned short *)(dataPtr+3); if (*(dataPtr+2)!=4) return READ_ERROR; *ptr = EndianSwap(*ptr); *(ptr+l) = EndianSwap(*(ptr+1)); *value = *((unsigned long*)ptr); return res;
}
// Чтение одного 16-ти разрядного регистра устройства / / Параметры:
// devNum - номер устройства на шине MODBUS
// startAddr - начальный адрес регистра устройства
// value - считанное из устройства значение
int ReadRegisterl6(unsigned char devNum, unsigned long startAddr, unsigned
short *value) {
register int res; unsigned char *dataPtr; unsigned long nCount;
unsigned short *ptr = (unsigned short *)GetDataPtr(); *ptr = EndianSwap(startAddr); *(ptr+1) = 0x0100;
if ((res = SendDataToDevice(devNum,0x03,4))!=SUCCESSFUL) return res; if ((res = GetDataFromDevice(devNum,SdataPtr,SnCount))!=SUCCESSFUL) return
res;
ptr = (unsigned short *)(dataPtr+3); if (*(dataPtr+2)!=2) return READ_ERROR; *value = EndianSwap(*ptr); return res;
}
/ / При записи используются все те же параметры что и при чтении
int WriteRegisters(unsigned char devNum, unsigned long startAddr, unsigned long count,
unsigned short *data,unsigned long *regStart, unsigned long *nRegs)
{
register int res;
unsigned char *dataPtr = GetDataPtr(); unsigned long nCount; unsigned char byteCount;
unsigned short *ptr = (unsigned short *)dataPtr;
*ptr = EndianSwap(startAddr);
*(ptr+l) = EndianSwap(count);
byteCount = (count&OxFF)
*(dataPtr+4) = byteCount;
ptr = (unsigned short *) (dataPtr+5);
memcpy (ptr, data, counted) ;
if ((res = SendDataToDevice(devNum,0x10,5 + byteCount))!=SUCCESSFUL) return res;
if ((res = GetDataFromDevice(devNum,SdataPtr,SnCount))!=SUCCESSFUL) return
res;
ptr = (unsigned short *)(dataPtr+2); *regStart = EndianSwap(*ptr); "nRegs = EndianSwap(*(ptr+1)); return res;
}
int WriteRegisterl6(unsigned char devNum, unsigned long startAddr, unsigned
short value) {
register int res;
unsigned char *dataPtr = GetDataPtr(); unsigned long nCount; unsigned char byteCount;
unsigned short *ptr = (unsigned short *)dataPtr;
*ptr = EndianSwap(startAddr);
*(ptr+1) = 0x0200;
byteCount = 2;
*(dataPtr+4) = byteCount;
ptr = (unsigned short *)(dataPtr+5);
*ptr = EndianSwap(value);
if ((res = SendDataToDevice(devNum,0x10,5 + byteCount))!=SUCCESSFUL) return res;
if ((res = GetDataFromDevice(devNum, SdataPtr, SnCount)) !=SUCCESSFUL) return
res;
return res;
}
int WriteRegisters32(unsigned char devNum, unsigned long startAddr, unsigned long count,
unsigned long *data,unsigned long *regStart, unsigned long *nRegs)
{
register int res;
unsigned char *dataPtr = GetDataPtr(); unsigned long nCount; unsigned char byteCount;
unsigned short *ptr = (unsigned short *)dataPtr;
*ptr = EndianSwap(startAddr);
* (ptr+1) = EndianSwap (counted) ;
byteCount = ((count<
*(dataPtr+4) = byteCount;
ptr = (unsigned short *)(dataPtr+5);
memcpy(ptr,data, count<<2) ;
if ((res = SendDataToDevice(devNum,0x10,5 + byteCount))!=SUCCESSFUL) return res;
if ((res = GetDataFromDevice(devNum, SdataPtr,SnCount))!=SUCCESSFUL) return
res;
ptr = (unsigned short *)(dataPtr+2); *regStart = EndianSwap(*ptr); *nRegs = EndianSwap(*(ptr+1)); return res;
}
int WriteRegister32(unsigned char devNum, unsigned long startAddr, unsigned
long value) {
register int res;
unsigned char *dataPtr = GetDataPtr(); unsigned long nCount; unsigned char byteCount;
unsigned short *ptr = (unsigned short *)dataPtr;
*ptr = EndianSwap(startAddr);
*(ptr+1) = 0x0200;
byteCount = 4;
*(dataPtr+4) = byteCount;
ptr = (unsigned short *)(dataPtr+5);
*ptr = EndianSwap((unsigned short)(value & OxFFFF)); *(ptr+l) = EndianSwap((unsigned short)(value>>l6));
if ((res = SendDataToDevice(devNum,0x10,5 + byteCount))!=SUCCESSFUL) return res;
if ((res = GetDataFromDevice(devNum,SdataPtr,&nCount))!=SUCCESSFUL) ret
res;
return res;
}
//********** Возвращает ответ устройства в миллисекундах ******************** //***************************************************************************
long GetResponseTime(){ return _mod_responseTime;}
/у***************************************************************************
jу**************** Вывод сообщения об ошибке ******************************** //***************************************************************************
void _mod_PrintError(int err) {
printf("*** MODBUS ERROR %d ***: ",err); switch(err){
04200911472 Дерябин Александр Вячеславович 1
Защита информации в телекоммуникациях АСУ ТП химической промышленности 1
1 УГРОЗЫ ИНФОРМАЦИОННОЙ БЕЗОПАСНОСТИ И УЯЗВИМОСТИ АСУ ТП 9
1.1 Телекоммуникации АСУ ТП 9
1.1.1 Типовая структура АСУ ТП 9
¡1]]]]]] 1ЕШ ШШ В11 36
Il i 46
2 ЗАЩИТА ИНФОРМАЦИИ В АСУ ТП 63
i 398
А=я2/я, 1 ... ык (43Л) 543
А = — ■ А ; А = — ■■ АА, =—■ А 576
А = " А ^ А = " А ^ ■ ■ ■ ^ А = " А 577
М1 = --М»>М2 = --М»>-'>Мп-, = —-А 579
к. т, 843
Акт внедрения 843
printf("undefined error"); break;
}ПРИЛОЖЕНИЕ S
Экранный снимок программы MUDBUS MAS'Г1-К
icrosoft Windows XP [Версия 5.1.2600 CO Корпорация Майкрософт, 1985-2001.
C:\Docui4ents and SettingsSAnMHMHCTpaTop>cd..
C:\DocUMonts and Settings)cd..
С: \ )no dbus пав t e r. e xe
modbusmaster uZ.l
usage : mo dbus piaster [options] [long options] long options:
COM port options:
—con [port],[baudrate],[format 3,[flow]
[port] - port папе
_ в X
I-
<9600 - by default)
[baudrate] — set con port baudrat
e
[format] - data format In special form: [XHPHS], i.e. 8N1
where [X] — number bits of data [5..81 <8 — by default>
[PI - parity type: (N
[S3 - number of stop bits [1,23 <1 - by default>
[flow] — flow control: [none, soft, hard, both3 (none — by default)
[flow]
MODBUS options: —node
—node - device number [0..2473 —function - select HODBUS function
—rag — register index that must be read or write
—data - data string that would transmit to register
—byte - set byte numltar in message which point to a number
—items - count of items to read
—scan - perform a full MODBUS net scan for any devices —listen - listen COM port short options:
-d - enable COM port debug mode, data type visualization:
[dec,bin,hex.oct,float]
-r - read one register of the device according the following format: b - print data as BIN
-
- print data as OCT h - print data as HEX
f — print data as float c - print data as set of chars print data as DEC by default —w - write register
32 write data to 32 bit register 16 - write data to 16 bit register raw - write raw data to port
b - use in register operation big endians
-
- use in register operation little endians
if both parameters are set use half big endians {only
2 numbers)
-
enable ASCII mode Cnot fully supported )
-
print device response tine
-
listen COM port
verbos
eПРИЛОЖЕНИЕ 9
АКТЫ ВНЕДРЕНИЯ«Утверждаю» Генеральный директор ООО «ПСВ-Холдинг»
/
/
7
Д. Ю. Пунин
АКТ ВНЕДРЕНИЯ
Результаты исследований, полученные Дерябиным A.B. при выполнении диссертационной работы, в частности:
Методики и рекомендации по обеспечению информационной безопасности каналов связи в АСУТП, а также рекомендации по выбору программных и аппаратных средств для проектирования автоматизированной системы управления технологическими процессами, соответствующих стандартам и требованиям по безопасности в химической промышленности.
внедрены в 2008-2009 году на нашем новом производственном предприятии в г.Электросталь, Московской области - в АСУТП комплекса по производству поливииилхлорида и бумвинила.
Методики и рекомендации позволили существенно облегчить работу проектировщиков при выборе методов и средств защиты информации. Методики позволили повысить защищенность информации и телекоммуникаций в АСУТП предприятия. Выработанные методики позволили снизить количество сбоев в технологическом процессе из-за искажения или потери информации, что положительно сказалось на качестве выпускаемой продукции
.
С
Лохиов М. В.
Семенов А. А
.
•и
АКТ ВНЕДРЕНИЯ
Результаты, полученные Дерябиным A.B. при выполнении диссертационной работы, в частности:
-
Методики защиты телекоммуникаций АСУТП верхнего и нижнего уровней; -
Рекомендации по обеспечению защиты проводных и беспроводных каналов связи АСУТП и SCADA-систем;
внедрены на объектах проектируемых и обслуживаемых нашим предприятием в 2008 году и будут внедряться в дальнейшем.
Сергеев М. А.
Главный инженер:
Руководитель проектной группы:
Методики показали высокую эффективность и позволили существенным образом увеличить защищенность передаваемой информации и всей системы в целом
.
к. т,
Акт внедрения
Результаты, полученные Дерябиным A.B. при выполнении диссертационной работы, в частности:
-
Методики применения различных способов защиты информации от несанкционированного доступа в АСУТП; -
Рекомендации по защите телекоммуникационных и компьютерных сетей;
внедрены на нашем предприятии в 2008-2009гг. Они нашли практическое применение при обмене информацией с нашими филиалами в гг. Иваново, Санкт-Петербург, Омске и т.п.
Сирко С. Э.
Указанные методики хороши тем, что при сравнительно небольших затратах обеспечивают высокую эффективность и не требуют специальной подготовки нашего персонала.
Начальник отдела-
Смушко О.Л.
Начальник лаборатории
(т) /* 192
1 ... 17 18 19 20 21 22 23 24 25