После долгих поисков и чтения документов я обнаружил, что 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 документация