После долгих поисков и чтения документов я обнаружил, что Siemens все еще разрабатывает серверный модуль MSSql, и теперь он не завершен. Данные будут внутри буфера приема: InstLsql_Microsoft.statRcvData.bytes[]
. Но вы должны искать свою информацию.
Но, тем не менее, лучший способ чтения и записи в регистры ПЛК - это использовать S7netplus
библиотеку (.NET-библиотеку для подключения Siemens S7). S7.Net Plus является продолжением работы, проделанной Juergen1969 над проектом S7.Net. Библиотека мне показалась простой и эффективной, но с конца 2009 года проект не претерпел изменений.
Загрузите и установите в C # Project:
PM> Install-Package S7netplus -Version 0.4.0
Для создания экземпляра драйвера вам необходимо использовать этот конструктор:
public Plc(CpuType cpu, string ip, Int16 rack, Int16 slot)
Пример:
Этот код создает объект Plc для plc S7-300 с IP-адресом 127.0.0.1 для plc в стойке 0 с процессором в слоте 2:
Plc plc = new Plc(CpuType.S7300, "127.0.0.1", 0, 2);
Подключение к ПЛК
public void Open()
Например, эта строка кода открывает соединение:
plc.Open();
Отключение от ПЛК
public void Close()
Например, это закрывает соединение:
plc.Close();
Чтение байтов / Запись байтов
Библиотека предлагает несколько методов чтения переменных. Базовый и наиболее используемый - 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 []: массив байтов для записи в ПЛК. Пример: этот метод считывает первые 200 байтов DB1:
var bytes = plc.ReadBytes(DataType.DataBlock, 1, 0, 200);
Дополнительная документация находится здесь:
документация S7.Net
person
Peyman Majidi
schedule
02.07.2020