c# 开发modbus rtu/tcp采集模块 问题 点击:2753 | 回复:2



shenwanzhong

    
  • 精华:0帖
  • 求助:2帖
  • 帖子:8帖 | 20回
  • 年度积分:0
  • 历史总积分:175
  • 注册:2010年7月03日
发表于:2012-11-22 09:57:56
楼主
#region Build Message
        private void BuildMessage(byte address, byte type, ushort start, ushort registers, ref byte【】 message)
        {
            //Array to receive CRC bytes:
            byte【】 CRC = new byte【2】;

            for (int i = 0; i < 4; i++)
                message【i】 = 0;
            message【5】 = 6;
            message【6】 = address;
            message【7】 = type;
            message【8】 = (byte)(start >> 8);
            message【9】 = (byte)start;
            message【10】 = (byte)(registers >> 8);
            message【11】 = (byte)registers;

        }
        #endregion
这段代码 报文怎么解析的  请高手帮忙解释一下 谢谢
正在下载,请等待……
下载附件需0积分!




昆仑摩勒

  • 精华:1帖
  • 求助:1帖
  • 帖子:32帖 | 446回
  • 年度积分:0
  • 历史总积分:1058
  • 注册:2004年11月22日
发表于:2012-12-27 16:00:20
1楼
有个Nmodbus 开源的库很好用,傻瓜式的,楼主可以搜索一下

飘渺无踪

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 36回
  • 年度积分:0
  • 历史总积分:83
  • 注册:2005年7月03日
发表于:2013-01-10 21:35:43
2楼

Modbus通信格式一般如下:

读数据;

地址 命令码 数据寄存器  数目 CRC校验码 例如读取信捷PLC的数据格式;

//读出D2 -D11 内容
            data2【0】 = 0X01;//地址
            data2【1】 = 0X03;//读出指令
            data2【2】 = 0X00;//地址_l
            data2【3】 = 0X02;//地十_h
            data2【4】 = 0X00;//个数高位
            data2【5】 = 0X0A;//个数低位
            data2【6】 = 0X64;//CRC_L
            data2【7】 = 0X0D;//CRC_H

然后写入串口

com1.Write(data2, 0, data2.Length);


热门招聘
相关主题

官方公众号

智造工程师