Приложение для управления устройством по modbus RTU - C#

Узнай цену своей работы

Формулировка задачи:

Необходимо написать приложение для управления девайсом по modbus RTU. функция чтения 0х03, записи - 0х06 и 0х10. Не могу найти примеры как работать с modbus и в частности работы с этими функциями. Если есть у кого исходники или готовые проекты, ссылки где что почитать - поделитесь пожалуйста...

Решение задачи: «Приложение для управления устройством по modbus RTU»

textual
Листинг программы
  1.  public class TModBus
  2.     {
  3.         List<byte> buff;
  4.         public const ushort myPolinom = 0xA001;
  5.  
  6.         public TModBus()
  7.         {
  8.             buff = new List<byte>();
  9.         }
  10.  
  11.         public byte[] getFirmCommand(byte com, byte[] data, byte adr)
  12.         {
  13.             ushort crcMdb;
  14.             buff.Clear();
  15.             buff.Add(adr);
  16.             buff.Add(0x42);
  17.             buff.Add(com);
  18.             if (data != null)
  19.                 for (int i = 0; i < data.Length; i++)
  20.                     buff.Add(data[i]);
  21.             crcMdb = getCrc(buff.ToArray());
  22.             buff.Add((byte)(crcMdb & 0xFF));
  23.             buff.Add((byte)((crcMdb >> 8) & 0xFF));
  24.             return buff.ToArray();
  25.         }
  26.  
  27.         ushort getCrc(byte[] mdbBuf)
  28.         {
  29.             ushort crc;
  30.             byte tmpB;
  31.             crc = 0xFFFF;
  32.             for (int i = 0; i < mdbBuf.Length; i++)
  33.             {
  34.                 tmpB = mdbBuf[i];
  35.                 for (int j = 0; j < 8; j++)
  36.                 {
  37.                     crc = (ushort)(crc ^ (tmpB & 1));
  38.                     if ((crc & 1) != 0)
  39.                         crc = (ushort)((crc >> 1) ^ myPolinom);
  40.                     else
  41.                         crc = (ushort)(crc >> 1);
  42.                     tmpB = (byte)(tmpB >> 1);
  43.                 }
  44.             }
  45.             return crc;
  46.         }
  47.     }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.857 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы