Z397 IP

Материал из IronLogic Wiki
Перейти к: навигация, поиск

Конвертер Z397-IP - устройство, позволяющее организовать взаимодействие между контроллерами Z5R-Net и Matrix-II Net, подключенными по RS-485, и компьютером через IP протокол. Подключение с сети через Ethernet с возможностью создания виртуального СОМ-порта, поддержка которых присутствует в большинстве ОС с открытым кодом, что значительно упрощает реализацию ПО верхнего уровня. Отличительной особенностью Z397-IP является гальваническая развязка между собой двух портов RS-485.

• Конвертер Z-397 IP предназначен для организации связи устройств, подключённых к линиям RS485(422), с удалённым компьютером через локальную сеть по протоколу TCP/IP. При использовании специальных драйверов, на компьютере создаются виртуальные COM порты, связанные с конвертером. Это позволяет использовать при работе с конвертером любое программное обеспечение, рассчитанное на работу с обычными COM портами.
• Конвертер имеет две линии RS485, одна из которых гальванически развязана от остальных узлов конвертера. При работе эти линии полностью независимы и программное обеспечение может работать с ними через два разных виртуальных COM порта.
• Для передачи данных и управления линиями RS485 конвертер поддерживает открытый протокол NVT (англ. Network Virtual Terminal, RFC2217).
• Конвертер может работать в двух режимах установки соединения с компьютером:
- режим TCP сервера. В этом режиме, после регистрации в локальной сети и получения IP адреса, конвертер ожидает соединения от компьютера, на котором установлена программа-клиент;
- режим TCP клиента. В этом режиме конвертер пытается сам установить соединение с удалённым компьютером. На компьютере должна работать программа-сервер, а в конвертере корректно настроены IP адрес и TCP порт компьютера, ожидающего соединения.
• Конфигурирование и обновление прошивки устройства может осуществляться как удалённо (по протоколу TELNET), так и при подключении к компьютеру по USB.
• Конвертер имеет переключатель, запрещающий удалённое изменение параметров.

Монтаж и подключение.

Разъёмы и органы управления

ETHERNET.png


ETHERNET - Разъём RJ45 для подсоединения к локальной сети. Для подключения используется стандартный патч-корд с прямым порядком обжима.


Cross.png


12V - Разъём питания. К данному разъёму подключается блок питания идущий в поставке. Если используется другой источник питания, он должен удовлетворять следующим требованиям:

- Постоянное напряжение от 8В до 18В, или переменное напряжение от 7В до 14В.

- Ток не менее 100 мА.


USB.png
Connector.png

iPORT1 - Разъём для подключения к гальваноразвязанной линии №1 RS485.

PORT2 - Разъём для подключения к линии №2 RS485.

LOCK/UNLOCK - Блокировочный переключатель. В положении “UNLOCK” возможна удалённая конфигурация устройства по протоколу TELNET , в положении “LOCK” попытки соединения по протоколу TELNET блокируются, также блокируется возможность обновления прошивки по сети.


USB - Разъём USB тип B. Используется для соединения конвертера с персональным компьютером во время конфигурации или обновления внутреннего программного обеспечения. Для подключения используется кабель USB AM – USB BM (входит в комплект поставки).

Индикация

LED.png

CONVERTER STATUS – Отображает текущее состояние конвертера:

Состояние
Индикация

Режим USB диска.

Медленно мигающий красный

Выключен переключатель Lock

Красный

Включен переключатель Lock

Зелёный

Проблема питания

Быстро мигающий красный


ETHERNET – Отображает состояние подключения по локальной сети.

Состояние
Индикация

Не подключён кабель

Выключен

Получение IP адреса

Медленно мигающий красный

IP адрес Получен

Зелёный

Ошибка получения IP

Быстро мигающий красный

Получение пакетов

Вспышки зелёного

iPORT1, PORT2 – Отображает состояние линий RS485.

Состояние
Индикация

Нет TCP соединения с линией

Выключен

Есть TCP соединение

Зелёный

Приём / Передача

Вспышки зелёного

Подключение к линиям RS485

SH1.png

Пример схемы подключения конвертера к двум линиям RS485.

Конвертер находится на конце линии, поэтому необходимо подключение нагрузочного сопротивления 120 Ом (входит в комплект поставки).


SH2.png

Пример схемы подключения конвертера в середине линии RS485.

Нагрузочное сопротивление подключать не требуется


При большой длине линии связи необходимо объединить “земли” конвертора и контроллеров. Для этого можно использовать отдельный провод или пару проводов из кабеля, которым осуществлена прокладка линии RS485.

Режимы работы конвертера

Режим сервера.

Конвертер, настроенный на работу в режиме сервера, после соединения с сетью и получения IP адреса ожидает установки соединения. Соединение устанавливает компьютер, расположенный в локальной или внешней сети.

Pr1.png
Pr2.png

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

Режим клиента

В режиме клиента, после получения IP адреса, конвертер пытается установить соединение с локальным или удалённым компьютером – сервером. При невозможности установления соединения попытка повторяется.

Pr3.png

В данном режиме работы нет необходимости знать IP адреса всех конвертеров, входящих в систему. Все они будут соединяться с одним сервером самостоятельно. При этом нет возможности перенести сервер на другой компьютер без переконфигурирования всех конверторов.

Режим ETHERNET моста

При использовании двух конверторов можно организовать ETHERNET мост между линиями RS485. В этом режиме один конвертор настраивается как сервер, а второй как клиент с адресом сервера равным IP адресу первого конвертора.

Pr.png

Этот режим можно использовать для объединения в единую структуру сегментов RS485, расположенных на больших расстояниях друг от друга.


Настройка конвертера.

Заводские настройки позволяют конвертеру регистрироваться в локальной сети автоматически. При успешной регистрации в сети конвертер готов к работе. Это отображается постоянным зелёным свечением индикатора “ETRHERNET”. При ошибке автоматического получения IP адреса индикатор “ETHERNET” , будет часто мигать красным цветом.
Примечание:
Если при включении устройство не сможет получить IP адрес по протоколу DHCP (делается 10 попыток), оно переходит в режим “ZeroConf” (RFC3927) и присваивает себе IP из диапазона 169.254.x.x В этом режиме можно произвести удалённую настройку параметров устройства по протоколу TELNET. Для этого компьютер, с которого будет производится соединение должен также иметь IP адрес из диапазона 169.254.x.x

В случае если конфигурация сети не предусматривает автоматическое определение настроек (отсутствует сервер DHCP) необходимо настроить параметры конвертера вручную.

Настройка с помощью конфигурационного файла.

Для этого требуется подключить устройство к персональному компьютеру с помощью кабеля USB. В этом режиме устройство питается от шины USB и дополнительное внешнее питание подключать необязательно. Не рекомендуется подключать по USB более одного конвертера одновременно. После подключения в системе появится новый съёмный диск с меткой “Z397IP”. В корневой директории этого диска находится текстовый файл “CONFIG.CFG”, в котором определены все параметры устройства. В случае необходимости нужно отредактировать данный файл для корректной работы устройства в условиях конкретной системы.

Таблица 1. Параметры:


Параметр
Описание
Заводские значения
Сетевые параметры

USE_DHCP=X

Данный параметр указывает можно (1) или нельзя (0) использовать для настройки сетевых параметров сервис DHCP (Dynamic Host Configuration Protocol— протокол динамической конфигурации узла).

1
Сетевые настройки, используемые при выключенном DHCP

LOCAL_IP=XXX.XXX.XXX.XXX

IP адрес, присваиваемый устройству

192.168.0.4

NETMASK=XXX.XXX.XXX.XXX

Маска подсети.

255.255.255.0

GATEWAY=XXX.XXX.XXX.XXX

Основной шлюз, используемый для передачи данных.

192.168.0.1
Настройки параметров TCP/IP

L1_PORT=XXXXX

L2_PORT=XXXXX

TCP – порт, с которым будет осуществляется соединение для работы с линией RS485

1000 1001

L1_RADDR=XXX.XXX.XXX.XXX

L2_RADDR=XXX.XXX.XXX.XXX

Разрешённый IP адрес или адрес удалённого сервера.

255.255.255.255

L1_RPORT=XXXXX

L2_RPORT=XXXXX

Порт удалённого сервера

0
Настройки линий RS485.

RS422_MODE=X

Включить поддержку протокола RS422.

(1-Да, 0-Нет)

iPORT 1 – передача.

PORT 2 – приём.

0

L1_STARTCHAR=XXX

L2_STARTCHAR=XXX

Символ начала пакета линии RS485.

NONE

L1_ENDCHAR=XXX

L2_ENDCHAR=XXX

Символ конца пакета линии RS485

NONE

L1_BAUDRATE=XXXXXX

L2_BAUDRATE=XXXXXX

Скорость передачи данных линии RS485.

19200


Для работы устройства необходимо:

1. Настроить сетевые параметры.

В случае использования в локальной сети DHCP сервера:

USE_DHCP=1

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


USE_DHCP=0

LOCAL_IP=192.168.1.100

SUBNETMASK=255.255.255.0 

GATEWAY=192.168.1.1

2. Настроить TCP порты для подключения к конвертеру в режиме “сервер”, например:

VC_PORT1=1000

VC_PORT2=1001 

3. При необходимости настроить IP адрес компьютера, с которого/с которым будет осуществляться подключение.

L1_RADDR=192.168.1.2

L2_RADDR=255.255.255.255

Адрес 255.255.255.255 разрешает соединение с любым компьютером.

Адрес 0.0.0.0 запрещает соединение с любым компьютером.


4.При работе конвертера в режиме клиента необходимо настроить TCP порты удалённого сервера.

L1_RPORT=9000

L2_RPORT=0

Установка порта = 0 настраивает соответствующую линию на работу в режиме ожидания соединения (сервер).

5. Настроить параметры линии и протокола RS485 , например:

RS422_MODE=0

L1_STARTCHAR=0xFA 

L1_ENDCHAR=0xF5 

L2_STARTCHAR=NONE 

L2_ENDCHAR=CR

L1_BAUDRATE=19200

L2_BAUDRATE=57600

Символы начала и конца пакета используются для увеличения скорости передачи пакетов по линиям RS485. Также они позволяют избавится от ошибок в линии.

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

При использовании символа конца пакета конвертор осуществляет передачу по Ethernet или RS485 сразу после получения соответствующего символа. Это позволяет уменьшить задержки передачи, так как, если символ конца пакета не используется, конвертор определяет конец пакета по таймауту во входном потоке.

Значения стартовых и стоповых символов зависят от протокола, который будет использоваться при работе с устройствами, подключёнными к линиям RS485.

Примеры символов начала и конца пакетов для некоторых протоколов обмена:



GATE
QUEST

MATRIX V (120)

MATRIX III RD-All

STARTCHAR

0xFA
0xFE
STX (0x02)
NONE

ENDCHAR

0xF5
0xFD
ETX (0x03)
CR(0x0D)


В качестве символов начала и конца пакета можно использовать:

NONE – символ не используется.

0xHH – шестнадцатеричный код символа (0x00 – 0xFF).

DDD – десятичный код символа (0-255).

‘Символ’ – одиночный символ из таблицы ASCII (‘!’ – ‘~’).

УпрСим – название управляющего символа по стандарту ASCII:

УпрСим
HEX
УпрСим
HEX
УпрСим
HEX
УпрСим
HEX
NUL
0x00
BS
0x08
DLE
0x10
CAN
0x18
SOH
0x01
TAB
0x09
DC1
0x11
EM
0x19
STX
0x02
LF
0x0A
DC2
0x12
SUB
0x1A
ETX
0x03
VT
0x0B
DC3
0x13
ESC
0x1B
EOT
0x04
FF
0x0C
DC4
0x14
FS
0x1C
ENQ
0x05
CR
0x0D
NAK
0x15
GS
0x1D
ACK
0x06
SO
0x0E
SYN
0x16
RS
0x1E
BEL
0x07
SI
0x0F
ETB
0x17
US
0x1F






SP
0x20

Отредактированный файл “CONFIG.CFG” необходимо сохранить на съёмном диске Z397IP. После этого устройство нужно корректно (через безопасное извлечение) отключить от компьютера. При включении питания устройство попытается зарегистрироваться в локальной сети и, в случае успеха, будет ожидать соединения с удалённым компьютером. В случае возникновения ошибок при регистрации в сети, они будут сохранены в файле “ERROR.TXT” и доступны для просмотра, при подключении устройства к персональному компьютеру по USB

Настройка с помощью протокола TELNET.

Устройство, подключённое к локальной сети, можно конфигурировать по протоколу TELNET. Для этого необходимо чтобы устройство было правильно сконфигурировано для работы в данной локальной сети. Для удалённой конфигурации надо выполнить следующие шаги:
Переключить блокирующий переключатель в положение “UNLOCK”.
Соединится с устройством с помощью программы TELNET. Для этого необходимо выполнить команду “TELNET <IP-адрес устройства> ”, если IP адрес устройства не известен, можно воспользоваться утилитой поиска устройств, находящейся на прилагаемом CD диске.
После соединения в программе TELNET появится приглашение вида :

Z397-IP (SN:00003) command shell
Version 1.01.25[Apr 5 2011 15:17:48]
Pulsar Ltd. +7(812)703-77-65, +7(495)787-70-66
Copyright 2010 RF Enabled
http://www.ironlogic.ru
Type '?' and return for help
Z397-IP> 

Для настройки параметров используются следующие команды:
cfg – выводит текущие значения всех параметров, например:

Z397-IP>cfg
---------- IP SETUP ----------
USE_DHCP=1
LOCAL_IP=192.168.1.4 NETMASK=255.255.255.0
GATEWAY=192.168.1.1 DNS=192.168.1.1
L1_PORT=1000 L2_PORT=1001
L1_RADDR=192.168.1.2 L2_RADDR=255.255.255.255
L1_RPORT=9000 L2_RPORT=0
------- PROTOCOL SETUP -------
RS422_MODE=0
L1_STARTCHAR=0xFA L2_STARTCHAR=NONE
L1_ENDCHAR=0xF5 L2_ENDCHAR=CR
-------- RS485 SETUP ---------
L1_BAUDRATE=19200 L2_BAUDRATE=19200
Z397-IP> 

set <ПАРАМЕТР>=<ЗНАЧЕНИЕ> – установка нового значения для параметра. В качестве <ПАРАМЕТР> используются такие же названия параметров, как и в конфигурационном файле.

Z397-IP>set USE_DHCP=0
SET USE_DHCP=0 OK!
Z397-IP> 

sav – сохранение параметров в конфигурационном файле:

Z397-IP>sav
Parameters saved OK!
Z397-IP>


rst – перезапуск устройства.

Z397-IP>rst

Подключение к узлу утеряно.


Обновление программного обеспечения устройства

Для обновления прошивки устройства необходимо подключить устройство к персональному компьютеру с помощью кабеля USB. В этом режиме устройство питается от шины USB и дополнительное внешнее питание не требуется. Не рекомендуется подключать по USB более одного конвертера одновременно. После подключения в системе появится новый съёмный диск с меткой Z397IP. Файл прошивки “XXX.ROM” необходимо записать в корневую директорию этого диска.
После окончания записи файла устройство нужно корректно (через безопасное извлечение) отключить от USB. Если внешнее питание было отключено, необходимо его подключить. При этом начнётся процесс обновления прошивки, что будет показано "бегущими огнями" на индикаторах. После окончания обновления устройство перезапустится и будет готово к работе.

Восстановление заводских настроек устройства

Для восстановления заводских настроек устройства необходимо отключить питание конвертера, замкнуть между собой одноимённые контакты обоих линий RS485 (A – A, B – B), и подать питание на устройство.
При этом все пользовательские настройки в конфигурационном файле будут заменены на настройки по умолчанию.
В этом режиме блокируется запуск внутреннего ПО. Устройство работает в режиме USB-диска, что позволяет восстановить прошивку устройства в случае неудачной попытки обновления. Прошивка записывается в устройство так же, как при обновлении.


Работа с устройством

Поиск конвертеров в сети

Для поиска всех устройств, подключённых к локальной сети реализован следующий протокол:

1. Программа, осуществляющая поиск, посылает широковещательный UDP пакет с портом назначения 9000.(Широковещательный пакет – пакет с IP адресом назначения равным 255.255.255.255). В качестве данных, передаваемых в пакете, передаётся строка:

Z397IP SEEK

2. Устройство отвечает UDP пакетом на IP адрес компьютера пославшего запрос, UDP порт получателя в этом пакете равен порту отправителя в пакете запроса. В ответном пакете содержится информация об типе устройства, его серийном номере, открытых TCP портах и.т.д. Формат информационной строки:

Z397IP-VCP-SW:1.1 SN000008 L1_Port:1000 L2_Port:1001 L1_Conn:192.168.1.31 L2_Conn:0.0.0.0 Lock:1


Параметр Описание
Z397IP
Модель устройства
VCP
Функциональные возможности (ALL/VCP/WEB)
SW:1.01.23
Версия прошивки
SN000008
Серийный номер
L1_Port:1000
TCP порт первой линии RS485
L2_Port:1001
TCP порт второй линии RS485
L1_Conn:192.168.1.31
Первая линия соединена с компьютером, имеющим IP 192.168.1.31
L2_Conn:0.0.0.0
Вторая линия не имеет активного соединения
Lock:1
Состояние переключателя "LOCK"


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

Установка соединения

Для установки соединения с конвертером без использования драйверов виртуального COM порта необходимо:

1. Если конвертер работает в режиме сервера.

- Создать клиентский сокет.

- Установить параметры сокета в соответствии с IP адресом и TCP портом конвертера.

- Установить соединение с конвертером.

Пример для OS Windows:


#define PORT 1000         
#define SERVERADDR "192.168.1.10" 

SOCKET my_sock;
client_sock=socket ( AF_INET, SOCK_STREAM, 0 );

if ( client_sock < 0 )
{
printf (" Socket ( ) error %d \n ", WSAGetLastError ( ) );
return -1;
}

sockaddr_in  dest_addr;
dest_addr.sin_family=AF_INET;
dest_addr.sin_port=htons ( PORT );
dest_addr.sin_addr=inet_addr ( SERVERADDR) 

if (connect( client_sock, ( sockaddr  * ) &dest_addr, sizeof ( dest_addr ) ) )
      {
      printf (" Connect error %d \n ", WSAGetLastError ( ) );
      return -1;
      }
printf (" Соединение с %s успешно установлено\r\n" , SERVERADDR ); 


Пример для *nix

int
open_remote_host(char *host, int port)
{
 struct sockaddr_in rem_addr;
 int len, s, x;
 struct hostent *H;
 int on = 1;

 H = gethostbyname(host);
 if (!H)
 return (-2);

 len = sizeof(rem_addr);

 s = socket(AF_INET, SOCK_STREAM, 0);
 if (s < 0)
 return s;

 setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &on, 4);

 len = sizeof(rem_addr);
 memset(&rem_addr, '\0', len);
 rem_addr.sin_family = AF_INET;
 memcpy(&rem_addr.sin_addr, H->h_addr, H->h_length);
 rem_addr.sin_port = htons(port);
 x = connect(s, (struct sockaddr *) &rem_addr, len);
 if (x < 0) {
 close(s);
 return x;
 }
set_nonblock(s);
return s;
}

- После соединения произвести конфигурацию конвертера.


2. Если конвертер работает в режиме клиента.

- Создать серверный сокет

- Установить порт сокета в соответствии с портом, настроенным в конвертере

- Ожидать соединения с конвертером.

Пример для OS Windows:

#define PORT 1000
#define BACKLOG 4

SOCKET my_sock;
server_sock=socket ( AF_INET, SOCK_STREAM, 0 );

if ( server_sock < 0 )
{
printf (" Socket ( ) error %d \n ", WSAGetLastError ( ) );
return -1;
}

sockaddr_in srv_addr;
srv_addr.sin_family=AF_INET;
srv_addr.sin_port=htons ( PORT );
srv_addr.sin_addr.s_addr = INADDR_ANY; 

if(bind (server_socket , (LPSOCKADDR )&srv_addr, sizeof(srv_address)) == SOCKET_ERROR )
{
  closesocket  (server_socket);
  return -1;
}

listen(server_socket,BACKLOG);

Пример для *nix

create_server_sock(char *addr, int port)
{
 int addrlen, s, on = 1, x;
 static struct sockaddr_in client_addr;

 s = socket(AF_INET, SOCK_STREAM, 0);
 if (s < 0)
 err(1, "socket");

 addrlen = sizeof(client_addr);
 memset(&client_addr, '\0', addrlen);
 client_addr.sin_family = AF_INET;
 client_addr.sin_addr.s_addr = inet_addr(addr);
 client_addr.sin_port = htons(port);
 setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &on, 4);
 x = bind(s, (struct sockaddr *) &client_addr, addrlen);
 if (x < 0)
 err(1, "bind %s:%d", addr, port);

 x = listen(s, 5);
 if (x < 0)
 err(1, "listen %s:%d", addr, port);
 syslog(LOG_NOTICE, "listening on %s port %d", addr, port);

 return s;
}

- После соединения произвести конфигурацию конвертера.

Настройка режима работы устройства

После установки соединения конвертер работает в режиме "NORMAL". В этом режиме все данные передатся на линию RS485. Скорость линии устанавливается в соответствии с конфигурационным файлом устройства. Для изменения скорости линии RS485, а также для перевода конвертера в режим "ADVANCED", используется протокол NVT.

Внимание: Для работы по протоколу NVT необходимо чтобы первый пакет, принятый конвертером после установки соединения, содержал NVT команду.

• NVT команды вставляются в поток данных передаваемых по TCP/IP.
• Каждая NVT команда предваряется префиксом в виде символа <IAC>
• Некоторые основные команды (EOF, ABORT, BRK, AYT, NOP, EC) передаются одним байтом, остальные команды передаются в формате <IAC><SB><КОМАНДА><IAC><SE>
• Устройство отфильтровывает и обрабатывает все команды NVT и они не попадают в выходной поток данных.
• Для посылки символа с кодом 0xFF в потоке данных, его надо удвоить (0xFF 0xFF), для того чтобы он попал в выходной поток.


Dec
HEX
Shortcut
Описание
240
F0
SE
Конец команды
241
F1
NOP
No Operation
246
F6
AYT
Are You There
250
FA
SB
Начало команды
255
FF
IAC
Data Byte 255


В данный момент устройство поддерживает только команды установки скорости порта. Остальные команды отфильтровываются из выходного потока, но не обрабатываются.
Для установки скорости порта необходимо послать следующую команду:


IAC
SB
COM_PORT_OPTION
CAS_SET_BAUDRATE
XX XX XX XX
IAC
SE
FF
FA
2C
01
Скорость 4 байта
FF
F0


Например для скорости 9600 надо послать последовательность:

FF FA 2C 01 00 00 25 80 FF F0

Для перевода конвертера в режим "ADVANCED" необходимо установить скорость линии 230400:

FF FA 2C 01 00 03 84 00 FF F0

Если режим "ADVANCED" устанавливается для первой линии (iPort1) и при этом вторая линия свободна (отсутствует TCP соединение с ней), то конвертер автоматически переходит в режим объединения линий. В этом режиме работа происходит с обеими линиями как с одной, то есть все контроллеры подключённые к линиям конвертера доступны для опроса по одному TCP соединению.