Найти в Дзене

Передача данных S7-1200 в SQL

Рассмотрим подключение S7-1200, S7-1500 к SQL Microsoft express через сервер-посредник. Данный способ позволяет не использовать ресурсы контроллера для формирования запросов к SQL. Данные из контроллера будут отправляться с помощью функции TSEND_C на сервер-посредник, а тот уже будет выполнять все остальные действия. Код сервера-посредника на Phyton ----------------------------- import socket # Импортироватт библиотеку socket для работы с сетевыми соединениями. import pyodbc # Импортировать библиотеку pyodbc для взаимодействия с SQL Server. # Настройки SQL Server server = 'your_server' # Имя или адрес сервера базы данных SQL Server. database = 'your_database' # Имя базы данных, в которую будут записываться данные. username = 'your_username' # Имя пользователя для доступа к SQL Server. password = 'your_password' # Пароль для доступа к SQL Server. # Устанавливаем соединение с SQL Server, используя указанные настройки. conn = pyodbc.connect(f'DRIVER={{ODBC Driver 17 for SQL S

Рассмотрим подключение S7-1200, S7-1500 к SQL Microsoft express через сервер-посредник.

Данный способ позволяет не использовать ресурсы контроллера для формирования запросов к SQL. Данные из контроллера будут отправляться с помощью функции TSEND_C на сервер-посредник, а тот уже будет выполнять все остальные действия.

Код сервера-посредника на Phyton

-----------------------------

import socket # Импортироватт библиотеку socket для работы с сетевыми соединениями.

import pyodbc # Импортировать библиотеку pyodbc для взаимодействия с SQL Server.

# Настройки SQL Server

server = 'your_server' # Имя или адрес сервера базы данных SQL Server.

database = 'your_database' # Имя базы данных, в которую будут записываться данные.

username = 'your_username' # Имя пользователя для доступа к SQL Server.

password = 'your_password' # Пароль для доступа к SQL Server.

# Устанавливаем соединение с SQL Server, используя указанные настройки.

conn = pyodbc.connect(f'DRIVER={{ODBC Driver 17 for SQL Server}};SERVER={server};DATABASE={database};UID={username};PWD={password}')

# Настройки сокета

host = 'your_host' # Адрес хоста (IP-адрес сервера), который будет слушать подключения.

port = 12345 # Порт, который будет использоваться для приёма данных от контроллера.

# Создаем сокет TCP/IP для связи с клиентом (контроллером S7-1200).

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# Привязатт сокет к указанному адресу и порту.

s.bind((host, port))

# Перевести сокет в режим прослушивания подключений.

s.listen(1)

print("Сервер ожидает подключение...") # Вывести сообщение, чтобы видеть статус сервера.

while True: # Бесконечный цикл для обработки подключений.

conn_socket, addr = s.accept() # Принятт входящее соединение от клиента.

print(f"Подключено: {addr}") # Вывести адрес подключившегося клиента.

data = conn_socket.recv(1024) # Принять данные от клиента (размер - до 1024 байт).

if not data: # Если данных нет, выйти из цикла.

break

data_str = data.decode('utf-8') # Декодировать данные из байтового формата в строку.

print(f"Полученные данные: {data_str}") # Вывести полученные данные для проверки.

# Разделить строку на переменные и записать их в таблицу базы данных.

cursor = conn.cursor() # Создать курсор для выполнения SQL-запросов.

cursor.execute("INSERT INTO log_table (VAR1, VAR2, VAR3, VAR4, VAR5) VALUES (?, ?, ?, ?, ?)", data_str.split(','))

conn.commit() # Применить изменения в базе данных.

print("Данные записаны в SQL Server.") # Сообщить, что данные успешно записаны.

conn_socket.close() # Закрыть соединение с клиентом.

-------------------------

Порядок действий :

1. Настроить контроллер S7-1200**

- Убедитесь, что ваш контроллер настроен для отправки данных через TCP/IP.

- В TIA Portal нужно создать передачу данных с помощью блока `TSEND_C`, где вы указываете IP-адрес вашего сервера и порт (например, 12345). Эти данные будут переданы из контроллера в виде строки.

2. Подготовить сервер для приема данных**

- Этот код работает на сервере, где вы планируете обрабатывать данные. Он включает:

- Прослушивание сети: Сервер ожидает подключения от контроллера.

- Обработка данных: Принимаемые данные преобразуются в читаемый формат.

- Запись в SQL Server: Принятые данные записываются в базу данных.

3. Что нужно сделать с этим кодом.

Настроить программу

- Установить Python (если еще не установлен). Скачать его с [официального сайта Python] https://www.python.org.

- Установить библиотеку `pyodbc`, которая позволит работать с SQL Server:

```bash

pip install pyodbc

```

Настроить переменные в коде

- Обновите следующие параметры:

- `your_server`: Имя вашего SQL Server или его IP-адрес.

- `your_database`: Имя вашей базы данных.

- `your_username` и `your_password`: Учётные данные для подключения к SQL Server.

- `your_host`: IP-адрес вашего сервера (тот, что будет прослушивать контроллер).

- `port`: Порт, который будет использоваться для подключения (например, 12345).

Запустить программу

- Сохранить код в файл, например, `server.py`.

- Открыть терминал или командную строку, перейти в папку с файлом и выполнить команду:

```bash

python server.py

```

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

4. Отладка и тестирование.

- На стороне контроллера: Убедитесь, что данные успешно отправляются на указанный IP и порт.

- На сервере: Проверьте, отображаются ли сообщения, например, "Полученные данные" и "Данные записаны в SQL Server".

- В SQL Server: Проверьте таблицу (например, `log_table`), чтобы увидеть, что данные записаны.

5. Что вы будете делать с этим кодом.

Этот код — часть решения. Вам нужно:

1. Настроить контроллер для отправки данных.

2. Настроить сервер с этим кодом для приема да

нных.

3. Подключить SQL Server для хранения данных.

---------------------