• 大小: 15KB
    文件类型: .cs
    金币: 2
    下载: 1 次
    发布日期: 2021-06-11
  • 语言: C#
  • 标签: C#  Modbus  

资源简介

C#环境下的Modbus类,很精简.原创.包括modbus ASCII和RTU两种传输模式.当然也就有LRC和CRC两种校验方式咯

资源截图

代码片段和文件信息

using System;
using System.Data;

/*
 PDU:功能码+数据
 ADU:地址码+PDU+校验码
 */
namespace MODBUS
{
    public class clModbus
    {
        public byte DevAddr;
        public byte FunCode;
        //public UInt16 RegAddr;
        //public UInt16 RegCnt;
        public byte[] MbBuf;
        public clModbus()
        {
            MbBuf = new byte[1 + 2 + 2 + 2 * 252 + 2 + 2 + 1];
            DevAddr = 1;
            FunCode = 3;
        }
        private byte ToAscii(int v int pos)
        {
            if (pos >= 8) return 0;
            v >>= pos * 4;
            v &= 0xf;
            if (v > 9) return (byte)(v - 10 + ‘A‘);
            else return (byte)(v + ‘0‘);
        }
        public UInt32 frameToAscii(byte[] PduBuf UInt32 Len)
        {
            byte lrctmp;
            UInt32 i;

            MbBuf[0] =(byte) ‘:‘;
            MbBuf[1] = ToAscii(DevAddr 1); MbBuf[2] = ToAscii(DevAddr 0);
            MbBuf[3] = ToAscii(FunCode 1); MbBuf[4] = ToAscii(FunCode 0);

            lrc =(byte)(DevAddr + FunCode);
            for (i=0; i < Len; i++)
            {
                tmp = PduBuf[i];
                lrc += tmp;
                MbBuf[i*2+5] = ToAscii(tmp 1); MbBuf[i*2+6] = ToAscii(tmp 0);
            }
            i = i * 2 + 5; lrc = (byte)(0xff-lrc+1);//取补码
            MbBuf[i++] = ToAscii(lrc 1); MbBuf[i++] = ToAscii(lrc 0);
            MbBuf[i++] = 0x0d; MbBuf[i++] = 0x0a;
            return i;
        }
        public UInt32 frameToRtu(byte[] PduBuf UInt32 Len)
        {
            byte ucCRCHi = 0xFF;
            byte ucCRCLo = 0xFF;
            int iIndex;
            UInt32 i;
            byte[] aucCRCHi =
            {
                0x00 0xC1 0x81 0x40 0x01 0xC0 0x80 0x41 0x01 0xC0 0x80 0x41
                0x00 0xC1 0x81 0x40 0x01 0xC0 0x80 0x41 0x00 0xC1 0x81 0x40
                0x00 0xC1 0x81 0x40 0x01 0xC0 0x80 0x41 0x01 0xC0 0x80 0x41
                0x00 0xC1 0x81 0x40 0x00 0xC1 0x81 0x40 0x01 0xC0 0x80 0x41
                0x00 0xC1 0x81 0x40 0x01 0xC0 0x80 0x41 0x01 0xC0 0x80 0x41
                0x00 0xC1 0x81 0x40 0x01 0xC0 0x80 0x41 0x00 0xC1 0x81 0x40
                0x00 0xC1 0x81 0x40 0x01 0xC0 0x80 0x41 0x00 0xC1 0x81 0x40
                0x01 0xC0 0x80 0x41 0x01 0xC0 0x80 0x41 0x00 0xC1 0x81 0x40
                0x00 0xC1 0x81 0x40 0x01 0xC0 0x80 0x41 0x01 0xC0 0x80 0x41
                0x00 0xC1 0x81 0x40 0x01 0xC0 0x80 0x41 0x00 0xC1 0x81 0x40
                0x00 0xC1 0x81 0x40 0x01 0xC0 0x80 0x41 0x01 0xC0 0x80 0x41
                0x00 0xC1 0x81 0x40 0x00 0xC1 0x81 0x40 0x01 0xC0 0x80 0x41 
                0x00 0xC1 0x81 0x40 0x01 0xC0 0x80 0x41 0x01 0xC0 0x80 0x41
                0x00 0xC1 0x81 0x40 0x00 0xC1 0x81 0x40 0x01 0xC0 0x80 0x41 
                0x01 0

评论

共有 条评论