Подключение PL C Siemens S7-1500 к SQL базе данных сервера - PullRequest
6 голосов
/ 16 июня 2020

Руководство по подключению: , здесь . Я слежу за гидом и делаю много вещей. Соединение между PL C и SQL сервером: ok , я успешно зашел на SQL. Я могу insert в таблицы, update и выполнять store procedures.

Но когда я запускаю запрос select, я не знаю, как получать данные и читать значения.

Tia Portal

I use TIA PORTAL v16.

PLC: S7 1200 siemens

I have a simple table, I wanna simply read an integer, first with one row! then expand my work.

This is my table structure:

CREATE TABLE MyTable(
[id] [int] IDENTITY(1,1) NOT NULL,
[value] [int] NOT NULL,
)
) ON [PRIMARY]

and this is my select query:

SELECT [value]
FROM [dbo].[MyTable]
WHERE id = 12033

expected result:

20

SQL shot

https://support.industry.siemens.com/tf/ww/en/posts/connecting-an-plc-siemens-s7-1500-to-an-sql-server-database/239392/?page=0&pageSize=10#post939400

1 Ответ

1 голос
/ 03 июля 2020

После долгих поисков и чтения документов я обнаружил, что Siemens все еще разрабатывает серверный модуль MS Sql, и теперь он не завершен. Данные будут внутри буфера приема: InstLsql_Microsoft.statRcvData.bytes[]. Но вы должны искать свою информацию.

Но, тем не менее, лучший способ читать и писать в регистры PL C - это использовать библиотеку S7netplus (A. NET Library для Siemens S7 Connectivity). S7. Net Plus - это продолжение работы, проделанной Juergen1969 над проектом S7. Net. Я нашел библиотеку простой и эффективной, но с конца 2009 года проект не претерпел изменений. необходимо использовать этот конструктор:

public Plc(CpuType cpu, string ip, Int16 rack, Int16 slot)

Пример:

Этот код создает объект Pl c для S7-300 pl c по IP-адресу 127.0.0.1, для a pl c в стойке 0 с процессором в слоте 2:

Plc plc = new Plc(CpuType.S7300, "127.0.0.1", 0, 2);

Подключение к PL C

public void Open()

Например, эта строка кода открывает соединение:

plc.Open();

Отключение от PL C

public void Close()

Например, это закрывает соединение:

plc.Close();

Чтение байтов / Запись байтов

Библиотека предлагает несколько методов чтения переменных. Базовый c один и наиболее используемый - это ReadBytes.

public byte[] ReadBytes(DataType dataType, int db, int startByteAdr, int count)

public void WriteBytes(DataType dataType, int db, int startByteAdr, byte[] value)

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

dataType: вы должны указать расположение памяти с помощью перечисления DataType

public enum DataType
{
    Input = 129,
    Output = 130,
    Memory = 131,
    DataBlock = 132,
    Timer = 29,
    Counter = 28
}

db: адрес типа данных, например, если вы хотите прочитать DB1, это поле будет «1»; если вы хотите прочитать T45, это поле - 45. startByteAdr: адрес первого байта, который вы хотите прочитать, например, если вы хотите прочитать DB1.DBW200, это 200. count: содержит, сколько байтов вы хотите читать. Value []: массив байтов для записи в pl c. Пример: этот метод считывает первые 200 байтов DB1:

var bytes = plc.ReadBytes(DataType.DataBlock, 1, 0, 200);

Дополнительная документация здесь: S7. Net документация

...