modbus里功能码的意义。

2019-08-23 14:19发布

ModBus常用功能码 (功能码为10进制)  
01 READ COIL STATUS                       读线圈寄存器   
02 READ INPUT STATUS           读状态寄存器
03 READ HOLDING REGISTER      读保持寄存器
04 READ INPUT REGISTER                  读输入寄存器   
05 WRITE SINGLE COIL                        写单线圈寄存器  
06 WRITE SINGLE REGISTER       写单保持寄存器
15 WRITE MULTIPLE COIL          写多线圈寄存器
16 WRITE MULTIPLE REGISTER           写多保持寄存器void ModBus(void)
{
     switch(Function)
     {   
          case 0x01:
                    ReadCoil();     
                    break;
          case 0x02:         
                    break;
          case 0x03:
                    ReadReg();   
                    break;
          case 0x04:
                    break;   
          case 0x05:
                    SetCoil();
                    break;
          case 0x06:
                    SetReg();
                    break;
          case 0x0f:
                    SetNCoil();
                    break;
          case 0x10:
                    SetNReg();
          default: ;
     }      
}
哪位大虾帮忙解释下什么意思?这个是接受到一个字节后执行的程序。阅读线圈,设置线圈是什么意思啊?只有一个站号01  麻烦大虾说的通俗点,小弟没搞过PLC ,用的STM32f103vct6芯片。(公司程序里面的)


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
刘东君
1楼-- · 2019-08-23 18:26
搞过单片机不? 相当于51单片机的位操作  例如你定义一个位变量   bit i; 然后将i的值送给
TXD_BUF[5]=i;  这就相当于读线圈。
八度空间
2楼-- · 2019-08-23 18:57
线圈寄存器实际就是PLC的输出寄存器,一系列的存储单元,实际的做法就是继电器,那些存储单元当作是软继电器,和单片机控制继电器一样使用,再接近一点就是STM32的ODR和IDR寄存器了
束命
3楼-- · 2019-08-23 22:26
 精彩回答 2  元偷偷看……
mchoose
4楼-- · 2019-08-23 23:16
功能码表示要读或者写的数据类型。数据类型总共就是4种:DI,DO,AI,AO。DI也就是数字量输入,在这里叫做状态寄存器;DO是数字量输出,叫做线圈寄存器;AI是模拟量输入,这里叫做输入寄存器;AO是数字量输出,也就是保持寄存器。数字量占一个bit,模拟量占2个字节。功能码指示了要读单个、写单个寄存器,或者读多个写多个寄存器。要想详细了解可以去看看Modbus协议的资料。
沧海
5楼-- · 2019-08-24 00:22
八度空间 发表于 2017-3-28 09:03
线圈寄存器实际就是PLC的输出寄存器,一系列的存储单元,实际的做法就是继电器,那些存储单元当作是软继电 ...

我的这个函数是属于从站响应是吧?主站发送一个数据帧,然后执行函数里面响应的功能是把?
八度空间
6楼-- · 2019-08-24 03:50
mchoose 发表于 2017-3-28 09:08
功能码表示要读或者写的数据类型。数据类型总共就是4种:DI,DO,AI,AO。DI也就是数字量输入,在这里叫做 ...

好详细喔