Приложение для управления устройством по modbus RTU - C#
Формулировка задачи:
Необходимо написать приложение для управления девайсом по modbus RTU. функция чтения 0х03, записи - 0х06 и 0х10. Не могу найти примеры как работать с modbus и в частности работы с этими функциями. Если есть у кого исходники или готовые проекты, ссылки где что почитать - поделитесь пожалуйста...
Решение задачи: «Приложение для управления устройством по modbus RTU»
textual
Листинг программы
- public class TModBus
- {
- List<byte> buff;
- public const ushort myPolinom = 0xA001;
- public TModBus()
- {
- buff = new List<byte>();
- }
- public byte[] getFirmCommand(byte com, byte[] data, byte adr)
- {
- ushort crcMdb;
- buff.Clear();
- buff.Add(adr);
- buff.Add(0x42);
- buff.Add(com);
- if (data != null)
- for (int i = 0; i < data.Length; i++)
- buff.Add(data[i]);
- crcMdb = getCrc(buff.ToArray());
- buff.Add((byte)(crcMdb & 0xFF));
- buff.Add((byte)((crcMdb >> 8) & 0xFF));
- return buff.ToArray();
- }
- ushort getCrc(byte[] mdbBuf)
- {
- ushort crc;
- byte tmpB;
- crc = 0xFFFF;
- for (int i = 0; i < mdbBuf.Length; i++)
- {
- tmpB = mdbBuf[i];
- for (int j = 0; j < 8; j++)
- {
- crc = (ushort)(crc ^ (tmpB & 1));
- if ((crc & 1) != 0)
- crc = (ushort)((crc >> 1) ^ myPolinom);
- else
- crc = (ushort)(crc >> 1);
- tmpB = (byte)(tmpB >> 1);
- }
- }
- return crc;
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д