Показано с 1 по 5 из 5

Тема: Переменная Ip адреса

  1. #1
    Пользователь
    Регистрация
    22.07.2015
    Адрес
    Kazan
    Сообщений
    23

    Question Переменная Ip адреса

    Всем привет ,может кто подскажет как вытащить ip адресс плк в среде codesys(не через браузер) , допустим есть библиотеки позволяющие вытащить время как переменную.Хочу реализовать горячую смену ip адреса.

  2. #2
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,575

    По умолчанию

    можно переписать файл, хранящий адрес, но изменения вступят в силу только после перезагрузки, так что получется не такая и горячая замена
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  3. #3
    Пользователь
    Регистрация
    22.07.2015
    Адрес
    Kazan
    Сообщений
    23

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    можно переписать файл, хранящий адрес, но изменения вступят в силу только после перезагрузки, так что получется не такая и горячая замена
    А можно конкретнее пожалуйста , с перезагрузкой как нибудь разберусь.

  4. #4
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    4,108

    По умолчанию

    Цитата Сообщение от Линар Посмотреть сообщение
    А можно конкретнее пожалуйста , с перезагрузкой как нибудь разберусь.
    Посмотрите здесь http://www.owen.ru/forum/showthread.php?t=17746
    Захват-3.png
    Скрытый текст:
    Код:
    PROGRAM File_IP
    VAR
    	BUFER: ARRAY [1..76] OF BYTE;(*Буфер для чтения и записи файла local_addres.dat*)
    	EMAC: STRING; (*Смвольные значения в файле*)
    	IP: STRING(11); (*Смвольные значения в файле*)
    	GATE: STRING(11); (*Смвольные значения в файле*)
    	MASK: STRING(11); (*Смвольные значения в файле*)
    	StatusOfFile: INT:=100;
    	f: DWORD;
    	statusf: DWORD;
    END_VAR
    
    (*Используются глобальные переменные в модуле Modbus slave -регистры для обмена с панелью
    	dwIP: DWORD; 
    	dwGATE: DWORD;
    	dwMASK: DWORD;
    *)
    CASE StatusOfFile OF
    0:	(*проверить не изменялись ли значения в панели и если да, то новые значения поместить в буфер*)
    	IF dwIP <> IP4hex_DECODE(IP) THEN
    	_STRING_TO_BUFFER(IP4_TO_STRH(dwIP), 27, ADR(BUFER), SIZEOF(BUFER)); StatusOfFile:=10;
    	END_IF
    	IF dwGATE <> IP4hex_DECODE(GATE) THEN
    	_STRING_TO_BUFFER(IP4_TO_STRH(dwGATE), 45, ADR(BUFER), SIZEOF(BUFER));StatusOfFile:=10;
    	END_IF
    	IF dwMASK <> IP4hex_DECODE(MASK) THEN
    	_STRING_TO_BUFFER(IP4_TO_STRH(dwMASK), 63, ADR(BUFER), SIZEOF(BUFER)); StatusOfFile:=10;
    	END_IF
    10:	(*сохранить предыдущее состояние файла*)
    	statusf:=SysFileCopy('local_addres.bak', 'local_addres.dat');StatusOfFile:=11;
    11:	(*открыть файл на запись*)
    	f:=SysFileOpen('local_addres.dat', 'w');StatusOfFile:=12;
    12:	(*записать буфер в файл*)
    	statusf:=SysFileWrite(f, ADR(BUFER), SIZEOF(BUFER));StatusOfFile:=102;
    
    (*Эта часть выполняется однократно после старта ПЛК*)
    100: (*Открыть файл на чтение*)
    	f:=SysFileOpen('local_addres.dat', 'r');
    	IF f=0 THEN
    	StatusOfFile:=200; (*Нет такого файла*)
    	ELSE
    	StatusOfFile:=101;	(*ОК, файл существует*)
    	END_IF
    101: (*Прочитать файл в буфер*)
    	statusf:=SysFileRead(f, ADR(BUFER), SIZEOF(BUFER));StatusOfFile:=102;
    102: (*Закрываем файл*)
    	SysFileClose(f);StatusOfFile:=103;
    103: (*Текущие значения из файла в панель*)
    		dwIP:=IP4hex_DECODE(IP);
    		dwGATE:=IP4hex_DECODE(GATE);
    		dwMASK:=IP4hex_DECODE(MASK);
    		StatusOfFile:=0;
    
    200: (*Если файла нет, то попробовать его восстановить*)
    	statusf:=SysFileCopy('local_addres.dat', 'local_addres.bak');StatusOfFile:=201;
    201:
    	IF statusf=0 THEN
    	(*старой версии файла нет, создать новый*)
    	_STRING_TO_BUFFER('EMAC=6A:77:00:22:01:98$n$rIP=C0:A8:01:41$n$rGATE=C0:A8:01:01$n$rMASK=FF:FF:FF:00$n$r', 0, ADR(BUFER), SIZEOF(BUFER));
    	StatusOfFile:=11; (*Записать новый файл*)
    	ELSE
    	StatusOfFile:=100;
    	END_IF
    END_CASE
    EMAC:=BUFFER_TO_STRING(ADR(BUFER), SIZEOF(BUFER), 5, 21);
    IP:=BUFFER_TO_STRING(ADR(BUFER), SIZEOF(BUFER), 27, 37);
    GATE:=BUFFER_TO_STRING(ADR(BUFER), SIZEOF(BUFER), 45, 55);
    MASK:=BUFFER_TO_STRING(ADR(BUFER), SIZEOF(BUFER), 63, 73);
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Мой канал на РУТУБЕ
    https://rutube.ru/channel/23641433/
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  5. #5
    Пользователь
    Регистрация
    22.07.2015
    Адрес
    Kazan
    Сообщений
    23

    По умолчанию

    petera Спасибо!

Похожие темы

  1. Переменная Reset
    от xroi в разделе Среда программирования OWEN Logic
    Ответов: 17
    Последнее сообщение: 29.03.2016, 19:24
  2. Переменная
    от jus в разделе ПЛК1хх
    Ответов: 31
    Последнее сообщение: 30.03.2015, 16:54
  3. конфигурационная переменная
    от Доренский Алексей в разделе ПЛК63/73
    Ответов: 1
    Последнее сообщение: 05.10.2010, 17:12
  4. Вечная переменная!
    от Дмитрий Артюховский в разделе ПЛК1хх
    Ответов: 5
    Последнее сообщение: 15.03.2008, 19:21

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •