NewLife.Schneider — это библиотека драйверов связи для программируемых логических контроллеров (PLC) Schneider Electric, основанная на протоколе Modbus TCP. Это один из компонентов драйверов экосистемы NewLife IoT, предоставляющий стандартизированный доступ к устройствам Schneider PLC для вышестоящих IoT-платформ, таких как ZeroIoT и IoTEdge. Разработчики могут подключаться к устройствам и читать/записывать данные через унифицированные интерфейсы IDriver / INode.
🌐 Другие языки: English | 简体中文 | Español | Français | Deutsch | 日本語 | 한국어 | Português (BR) | العربية
- Готов к использованию — Построен на реализации Modbus TCP от NewLife.Modbus, установите через NuGet и начинайте сразу
- Автообнаружение — Аннотирован атрибутом
[Driver("SchneiderPLC")], IoT-платформы могут автоматически сканировать и загружать драйвер - Чтение/запись по тегам — Читайте и записывайте напрямую, используя собственный синтаксис адресации Schneider (
"MW100","M0.1","MF100"), без необходимости вникать в детали протокола Modbus - Автоматическое преобразование типов — Автоматически преобразует big-endian байты Modbus в соответствующие типы .NET (UInt16/UInt32/Single/Boolean) при чтении
- Единый интерфейс — Следует стандартным абстракциям NewLife.IoT, бесшовно интегрируется с экосистемой IoT
- Мультиплатформенность — Поддерживает netstandard2.1/2.0/net461/net45, совместим как с устаревшими системами .NET Framework, так и с современными .NET-приложениями
dotnet add package NewLife.Schneiderusing NewLife.Schneider.Drivers;
using NewLife.IoT.Drivers;
var driver = new SchneiderDriver();
// Настройка параметров
var pm = new SchneiderParameter
{
Host = 1,
Server = "192.168.1.100:502",
};
// Открытие соединения
var node = await driver.OpenAsync(null, pm);
// Чтение регистра хранения 100 (возвращает UInt16)
var value = await driver.ReadTag(node, "MW100");
// Строго типизированное чтение: автоматическое преобразование
var temp = await driver.ReadTagValue<Single>(node, "MF100"); // %MF → Single
var flag = await driver.ReadTagValue<Boolean>(node, "M0.1"); // %M → Boolean
// Запись регистра хранения 100 (поддерживает родные типы .NET)
await driver.WriteTag(node, "MW100", (UInt16)12345);
await driver.WriteTag(node, "MD200", (UInt32)100000);
await driver.WriteTag(node, "MF100", 3.14159f);
// Пакетное чтение
var dic = await driver.ReadTags(node, ["MW100", "MD200", "M0.1"]);
// Закрытие соединения
await driver.CloseAsync(node);// Парсер адресов (можно использовать без подключения к PLC)
var addr = SchneiderAddress.Parse("MW100");
Console.WriteLine(addr.GetReadCode()); // 3 → FC03 Чтение регистров хранения
Console.WriteLine(addr.GetModbusAddress()); // 100
var coil = SchneiderAddress.Parse("M0.1");
Console.WriteLine(coil.GetModbusAddress()); // 1 = 0*8 + 1
Console.WriteLine(coil.GetReadCode()); // 1 → FC01 Чтение катушек
var di = SchneiderAddress.Parse("I2.3");
Console.WriteLine(di.GetWriteCode()); // 0 → Только чтение
// Безопасный парсинг
if (SchneiderAddress.TryParse("QW50", out var qw))
Console.WriteLine($"{qw.Type}:{qw.Offset}"); // HoldingRegister:50// Создание предустановленных параметров по модели
var pm = driver.CreateParameter(SchneiderModel.M221);
pm.Server = "192.168.1.100:502";
// Или ручной запрос информации о модели
var info = SchneiderModelHelper.GetModelInfo("M262");
Console.WriteLine($"{info.Name}: {info.MaxRegisters} регистров");| Документ | Описание |
|---|---|
| Требования (中文) | Видение, основные цели и функциональные требования |
| Список функций (中文) | 3D-отслеживание: реализация / тест / документация |
| Архитектура (中文) | Уровни, компоненты, рабочие процессы и ключевые решения |
| Конкурентный анализ (中文) | Матрица сравнения и анализ пробелов |
| Мост Modbus Plus (中文) | Доступ к устройствам Modbus Plus через мост Ethernet-модуля |
| Пакет | Описание |
|---|---|
| NewLife.IoT | Стандартные абстракции IoT (интерфейсы IDriver/INode) |
| NewLife.Modbus | Реализация протокола Modbus TCP/RTU/ASCII |
- Исходный код: https://github.com/NewLifeX/NewLife.Schneider
- NuGet: https://www.nuget.org/packages/NewLife.Schneider
- Веб-сайт NewLife: https://newlifex.com
- Группы QQ: 1600800 / 1600838
Основанная в 2002 году, команда NewLife (新生命) занимается предоставлением консультационных услуг по аппаратно-программным приложениям для IoT-индустрии, планированию системной архитектуры и разработке. Более 80 проектов с открытым исходным кодом, созданных командой, широко используются в энергетике, образовании, интернете, телекоммуникациях, транспорте, логистике, промышленной автоматизации, здравоохранении и культурном наследии, с более чем 4 миллионами загрузок на NuGet.
Другие проекты: NewLife.Core | NewLife.XCode | NewLife.Redis | NewLife.MQTT | Stardust | AntJob | Ещё