Здравствуйте!
У меня есть следующая задача:
1. На ПК-сервере (Windows 10) работает программа на Java.
2. Подключено Программируемое реле Овен ПР200.
3. Используется модем iRZ MC55iT.
4. На клиентском компьютере установлен Owen OPC Server и SCADA.
Мне нужно организовать двухсторонний обмен данными между ПР200 (через модем) и ПК-клиентом с использованием ПК-сервера. То есть, при обновлении данных на ПР200 они должны отправляться через модем на ПК-сервер и обновляться на ПК-клиенте в Owen OPC Server (по протоколу Modbus TCP/IP). Аналогично, данные должны передаваться в обратном направлении. Также из Owen OPC Server данные будут извлекаться в SCADA.
Вот код программы для ПК-сервера:
<pre><code class="java">public static void main(String[] args) {
// Создаем два Modbus сервера для двух портов (1 - OPC Server, 2 - ПР200)
ModbusServer opcServer = new ModbusServer();
opcServer.setPort(502);
ModbusServer pr200Server = new ModbusServer();
pr200Server.setPort(1502);
// Читаем из базы данных последние данные и загружаем в Modbus Holding Registers
opcServer.holdingRegisters = readFromDatabase();
pr200Server.holdingRegisters = readFromDatabase();
// Запускаем сервера в отдельных потоках
new Thread(() -> startServer(opcServer, "OPC Server")).start();
new Thread(() -> startServer(pr200Server, "PR200")).start();
// Устанавливаем обработчики изменений регистров
pr200Server.setNotifyHoldingRegistersChanged(() -> {
System.out.println("Изменились данные у ПР200 -> записываем в БД и отправляем на OPC Server");
printWithoutFirstElement( pr200Server.holdingRegisters,
Для настройки модема iRZ MC55iT для установления GPRS-соединения между Программируемым реле Овен ПР200 и сервером, а также для работы с вашими Java-программами и OPC сервером, необходимо выполнить несколько шагов:
### Шаг 1: Настройка модема iRZ MC55iT
1. **Подключите модем к вашему компьютеру**: Убедитесь, что он правильно подключен и распознан операционной системой.
2. **Установка драйверов**: Установите необходимые драйверы, если они не установлены автоматически. Обычно они идут в комплекте с модемом или доступны на сайте производителя.
3. **Настройка параметров GPRS**:
- Используйте программу для управления модемом, например, AT-команды через терминал (например, PuTTY или HyperTerminal).
- Настройте APN (Access Point Name) вашего мобильного оператора:
```plaintext
AT+CGDCONT=1,"IP","your_apn" // Замените "your_apn" на APN вашего оператора
```
- Установите имя пользователя и пароль, если требуется:
```plaintext
AT+CSTT="your_username","your_password"
```
- Активируйте GPRS:
```plaintext
AT+CIICR // Поднять GPRS канал
AT+CIFSR // Получить IP адрес
```
4. **Проверьте подключение**: Убедитесь, что модем успешно подключен к интернету, проверив полученный IP-адрес.
### Шаг 2: Настройка ПР200
1. **Соедините ПР200 с модемом**: Используйте RS-232 или RS-485 для подключения.
2. **Настройте параметры порта**: Убедитесь, что параметры портов (baud rate, parity, data bits, stop bits) согласованы между ПР200 и модемом.
### Шаг 3: Настройка ПК-сервера (Java)
1. **Настройка Modbus TCP/IP**: Убедитесь, что ваш Modbus сервер правильно настроен для взаимодействия с клиентом (ПР200 и OPC сервером). Используйте фрагмент кода, который вы начали:
```java
// Запуск серверов
new Thread(() -> startServer(opcServer, "OPC Server")).start();
new Thread(() -> startServer(pr200Server, "PR200")).start();
```
2. **Обработчики для связи с ПР200 и OPC сервером**:
- Разработайте механизм для получения данных от ПР200 через GPRS.
- Используйте библиотеку для работы с Modbus, например, jModbus, для обработки запросов и отправки ответов.
3. **Обработка изменений данных**: В дедуплирующем коде добавьте логику отправки данных на OPC сервер, когда происходит изменение данных в ПР200.
### Шаг 4: Настройка Owen OPC Server
1. **Настройте Owen OPC Server**: Убедитесь, что он правильно настроен на прослушивание данных.
2. **Соедините с SCADA**: Настройте SCADA для получения необходимых данных из Owen OPC Server.
### Пример кода для обработки изменений регистров
```java
pr200Server.setNotifyHoldingRegistersChanged(() -> {
System.out.println("Изменились данные у ПР200 -> записываем в БД и отправляем на OPC Server");
// Логика записи в БД
writeToDatabase(pr200Server.holdingRegisters);
// Логика передачи на OPC Server
opcServer.holdingRegisters = Arrays.copyOf(pr200Server.holdingRegisters, pr200Server.holdingRegisters.length);
});
```
### Заключение
Следуя этим шагам, вы сможете настроить GPRS-соединение между вашим ПР200, модемом iRZ MC55iT и сервером, а также организовать обмен данными с OPC сервером и SCADA. Убедитесь в правильности настроек протоколов и, при необходимости, проконсультируйтесь с документацией оборудования для дополнительных инструкций.
(Со схемой стало понятнее; но сложнее :) <br/> <br/> 1) Я смотрю на Овен ПР200 - и не вижу RS-232. <br/> <a href="https://owen.ru/product/pr200/connection" rel="nofollow">https://owen.ru/product/pr200/connection</a> <br/> Есть опциональные RS-485. Но это, - немного так другой стандарт интерфейса... Конвертор RS-485 - RS-232 бывает (от той же Moxa), но стоит денег. <br/> <br/> 2) Последние лет -дцать все стараются не изобретать велосипед, а использовать готовые компоненты. <br/> Можете ли рассмотреть вариант замены <br/> а) ПР200 - на модификацию с Ethetnet'ом (например - ПР205) <br/> <br/> б) Модем iRZ MC55iT - на роутер с GPRS модулем и сотовой антенной. Роутер должен уметь своими силами поднять PPP соединение с Интернетом через LTE/GPRS сотового оператора и поверх него - VPN соединение. <br/> Микротик (если хочется помучаться :) или Кинетик <br/> <br/> А с Овена - уже работать по Modbus/TCP по установленному IP соединению. <br/> <br/> 3) Если "уже всё предрешено", то <br/> 3а) Вопрос с RS-232 портом <br/> 3б) - Хватит ли у Овена ресурсов (а Вам - терпения вырисовывать всё это на FBD) для работы по модему и пинания GPRS соединения для каждого блока данных <br/> 3в) На схеме - продумайте и прорисуйте - куда у Вас приходит GPRS соединение? Сейчас оно аж до ПК-сервера доходит. В реальности это не так. Оно куда-то в публичный интернет уйдёт. Как дальше соединение до сервера пойдёт?