1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/zhaopeiym-IoTClient

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
5 лет назад
4 месяцев назад
4 месяцев назад
Loading...
README.md

IoTClient

English | 中文文档

image image image

  • Это клиент реализации протокола связи для устройств интернета вещей (IoT), который будет включать в себя основные протоколы связи ПЛК, такие как ModBus, Bacnet и другие распространённые промышленные протоколы связи.
  • Этот компонент основан на .NET Standard 2.0 и может использоваться для кроссплатформенной разработки .Net, такой как Windows, Linux и даже запускаться на Raspberry Pi.
  • Данный компонент является открытым исходным кодом и бесплатным для использования, а также использует наиболее свободный протокол MIT. Вы также можете модифицировать и использовать его в коммерческих целях (при коммерческом использовании, пожалуйста, оцените и протестируйте).
  • Инструменты разработки: Visual Studio 2019
  • Группа обмена QQ: 700324594

Каталог документов

Инструкции по использованию

Справочный компонент

Установка через Nuget Install-Package IoTClient
Или графическая установка
image

Операции чтения и записи ModBusTcp

//1、Создание экземпляра клиента — введите правильный IP и порт
ModBusTcpClient client = new ModBusTcpClient("127.0.0.1", 502);

//2、Операция записи — параметры: адрес, значение, номер станции, код функции
client.Write("4", (short)33, 2, 16);

//2.1、[Примечание] При записи данных необходимо уточнить тип данных
client.Write("0", (short)33, 2, 16);    //Запись значения типа short
client.Write("4", (ushort)33, 2, 16);   //Запись значения типа ushort
client.Write("8", (int)33, 2, 16);      //Запись значения типа int
client.Write("12", (uint)33, 2, 16);    //Запись значения типа uint
client.Write("16", (long)33, 2, 16);    //Запись значения типа long
client.Write("20", (ulong)33, 2, 16);   //Запись значения типа ulong
client.Write("24", (float)33, 2, 16);   //Запись значения типа float client.Write("28", (double)33, 2, 16);  //Записать значение типа double
client.Write("32", true, 2, 5);         //Записать значение типа Coil
client.Write("100", "orderCode", stationNumber);  //Записать строку

//3、Операция чтения: параметры — адрес, номер станции, код функции
var value = client.ReadInt16("4", 2, 3).Value;

//3.1 Другие типы операций чтения данных
client.ReadInt16("0", stationNumber, 3);    //Чтение данных типа short
client.ReadUInt16("4", stationNumber, 3);   //Чтение данных типа ushort
client.ReadInt32("8", stationNumber, 3);    //Чтение данных типа int
client.ReadUInt32("12", stationNumber, 3);  //Чтение данных типа uint
client.ReadInt64("16", stationNumber, 3);   //Чтение данных типа long
client.ReadUInt64("20", stationNumber, 3);  //Чтение данных типа ulong
client.ReadFloat("24", stationNumber, 3);   //Чтение данных типа float
client.ReadDouble("28", stationNumber, 3);  //Чтение данных типа double
client.ReadCoil("32", stationNumber, 1);    //Чтение данных типа Coil
client.ReadDiscrete("32", stationNumber, 2);//Чтение данных типа Discrete
client.ReadString("100", stationNumber, readLength:10); //Чтение строки

//4、Если не активен Open, то соединение будет автоматически открываться и закрываться каждый раз при операциях чтения и записи, что значительно снизит эффективность чтения и записи. Поэтому рекомендуется открывать и закрывать вручную.
client.Open();

//5、Операции чтения и записи возвращают объект результата Result
var result = client.ReadInt16("4", 2, 3);
//5.1 Успешность чтения (true или false)
var isSucceed = result.IsSucceed;
//5.2 Информация об исключении при неудачном чтении
var errMsg = result.Err;
//5.3 Запрос, фактически отправленный операцией
var requst  = result.Requst;
//5.4 Ответ от сервера
var response = result.Response;
//5.5 Значение
var value3 = result.Value;

//6、Пакетное чтение
var list = new List<ModBusInput>();
list.Add(new ModBusInput()
{
    Address = "2",
    DataType = DataTypeEnum.Int16,
    FunctionCode = 3,
    StationNumber = 1
});
list.Add(new ModBusInput()
{
    Address = "2",
    DataType = DataTypeEnum.Int16,
    FunctionCode = 4,
    StationNumber = 1
});
list.Add(new ModBusInput()
{
    Address = "199",
    DataType = DataTypeEnum.Int16,
    FunctionCode = 3,
    StationNumber = 1
});
var result = client.BatchRead(list);

//7、Другие параметры конструктора
//IP, порт, время ожидания, настройки большого и малого конца
ModBusTcpClient client = new ModBusTcpClient("127.0.0.1", 502, 1500, EndianFormat.ABCD);

Для более подробного использования ModBusTcp обратитесь к Unit Test.

Операции чтения и записи ModBusRtu

//Создание клиента — [имя COM-порта, скорость передачи данных, количество битов данных, стоп-биты, чётность]
ModBusRtuClient client = new ModBusRtuClient("COM3", 9600, 8, StopBits.One, Parity.None);

//Остальные операции чтения и записи такие же, как у ModBusTcpClient.

Операции чтения и записи ModBusAscii

//Создание клиента — [имя COM-порта, скорость передачи данных, количество битов данных, стоп-биты, чётность]
ModbusAsciiClient client = new ModbusAsciiClient("COM3", 9600, 8, StopBits.One, Parity.None);

//Остальные операции чтения и записи такие же, как у ModBusTcpClient.

Операции чтения и записи ModbusRtuOverTcp

//Прозрачная передача через последовательный порт, т. е. отправка сообщений в формате Rtu в режиме Tcp

//Создание клиента — IP, порт, тайм-аут, настройки большого и малого конца
ModbusRtuOverTcpClient client = new ModbusRtuOverTcpClient("127.0.0.1", 502, 1500, EndianFormat.ABCD);

//Остальные операции чтения и записи такие же, как у ModBusTcpClient.

SiemensClient (Siemens) операции чтения и записи

//1 Создание клиента — введите модель, IP и порт
//Другие модели: SiemensVersion.S7_200, SiemensVersion.S7_300, SiemensVersion.S7_400, SiemensVersion.S7_1200, SiemensVersion.S7_1500
SiemensClient client = new SiemensClient(SiemensVersion.S7_200Smart, "127.0.0.1",102);

//2 Операция записи
... ### Текст запроса:
client.Write("Q1.3", true);
client.Write("V2205", (short)11);
client.Write("V2209", 33);

//3、Read operation
var value1 = client.ReadBoolean("Q1.3").Value;
var value2 = client.ReadInt16("V2205").Value;
var value3 = client.ReadInt32("V2209").Value;

//4、If there is no active Open, it will automatically open and close the connection every time you read and write operations, which will greatly reduce the efficiency of reading and writing. So it is recommended to open and close manually.
client.Open();

//5、Read and write operations will return the operation result object Result
var result = client.ReadInt16("V2205");
//5.1 Whether the reading is successful (true or false)
var isSucceed = result.IsSucceed;
//5.2 Exception information for failed reading
var errMsg = result.Err;
//5.3 Read the request message actually sent by the operation
var requst  = result.Requst;
//5.4 Read the response message from the server
var response = result.Response;
//5.5 Read value
var value4 = result.Value;

**Примечание: об адресе Siemens PLC**

VB263, VW263, VD263: B, W, D обозначают соответственно: byte (8 бит), word (16 бит), doubleword (32 бита).

Когда этот компонент передаёт адрес, нет необходимости передавать тип данных, просто используйте соответствующий метод для чтения соответствующего типа, например:

  • VB263 — client.ReadByte("V263")
  • VD263 — client.ReadFloat("V263")
  • VD263 — client.ReadInt32("V263")
  • DB108.DBW4 — client.ReadUInt16("DB108.4")
  • DB1.DBX0.0 — client.ReadBoolean("DB1.0.0")
  • DB1.DBD0 — client.ReadFloat("DB1.0")
|C# data type | smart200 | 1200/1500/300
|---|---|---
|bit | V1.0 | DB1.DBX1.0
|byte | VB1 | DB1.DBB1
|shor <br> ushort  | VW2 | DB1.DBW2
|int <br> uint <br> float | VD4 | DB1.DBD4

### Рекомендации по использованию SiemensClient
  1. Когда не следует проявлять инициативу и открывать Siemens plc обычно допускает до 8 длинных соединений. Поэтому, когда количество соединений недостаточно или при тестировании, не проявляйте инициативу, чтобы открыть соединение, так что компонент будет автоматически открываться и закрываться немедленно.

  2. Когда следует проявить инициативу и открыть Когда количество длинных соединений достаточно, и вы хотите повысить производительность чтения и записи.

  3. Помимо активных открытых соединений, пакетное чтение и запись также могут значительно повысить производительность чтения и записи. //Пакетное чтение Dictionary<string, DataTypeEnum> addresses = new Dictionary<string, DataTypeEnum>(); addresses.Add("DB4.24", DataTypeEnum.Float); addresses.Add("DB1.434.0", DataTypeEnum.Bool); addresses.Add("V4109", DataTypeEnum.Byte); ... var result = client.BatchRead(addresses);

//Пакетная запись Dictionary<string, object> addresses = new Dictionary<string, object>(); addresses.Add("DB4.24", (float)1); addresses.Add("DB4.0", (float)2); addresses.Add("DB1.434.0", true); ... var result = client.BatchWrite(addresses);

  1. [Примечание] При записи данных необходимо уточнить тип данных client.Write("DB4.12", 9); //Записывается тип int client.Write("DB4.12", (float)9); //Записываемый тип — float

  2. SiemensClient является потокобезопасным классом Из-за ограниченных длинных подключений к ПЛК SiemensClient разработан как потокобезопасный класс. Вы можете установить SiemensClient в качестве синглтона и использовать экземпляр SiemensClient для чтения и записи ПЛК между несколькими потоками.


### Операции чтения и записи MitsubishiClient (Mitsubishi)

//1. Создание экземпляра клиента — введите правильный IP-адрес и порт MitsubishiClient client = new MitsubishiClient(MitsubishiVersion.Qna_3E, "127.0.0.1",6000);

//2. Операция записи client.Write("M100", true); client.Write("D200", (short)11); client.Write("D210", 33);

//3. Операция чтения var value1 = client.ReadBoolean("M100").Value; var value2 = client.ReadInt16("D200").Value; var value3 = client.ReadInt32("D210").Value;

//4. Если нет активного открытого соединения, оно будет автоматически открывать и закрывать соединение каждый раз, когда вы выполняете операции чтения и записи, что значительно снизит эффективность чтения и записи. Поэтому рекомендуется открывать и закрывать вручную. client.Open();

//5. Операции чтения и записи возвращают объект результата операции Result var result =

Ответ:

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

В тексте не содержится информации, которую можно было бы перевести на русский язык. Система управления энергопотреблением (коммерческая)

Управление энергопотреблением на месте — один проект

Изображения отсутствуют.

Облачное управление энергопотреблением — несколько проектов

Изображения отсутствуют.

Мобильное управление энергопотреблением

Изображения отсутствуют.

Терминальный контроль Haidilao (коммерческий)

Веб-контроль терминала Haidilao

Изображения отсутствуют.

Мобильный контроль терминала Haidilao

Изображения отсутствуют.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

IoTClient — это клиентская часть коммуникационного протокола для устройств интернета вещей. Включает в себя поддержку основных промышленных протоколов связи, таких как обмен данными с ПЛК, ModBus и Bacnet. Этот компонент является полностью открытым исходным кодом и предоставляется бесплатно. Используется самая либеральная лицензия MIT. Вы может... Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники (3)

все

Недавние действия

Загружен новый тег 0.4.0 4 месяца назад
Загружен новый тег 0.0.3 4 месяца назад
Загружен новый тег 0.0.2 4 месяца назад
Загружен новый тег 0.0.1 4 месяца назад
4 месяца назад создана задача #IFN2 Оптимизация метода ReadString класса SiemensClient
Загрузить больше
Больше нет результатов для загрузки
1
https://gitlife.ru/oschina-mirror/zhaopeiym-IoTClient.git
git@gitlife.ru:oschina-mirror/zhaopeiym-IoTClient.git
oschina-mirror
zhaopeiym-IoTClient
zhaopeiym-IoTClient
master