《MODBUS从站通讯应用.docx》由会员分享,可在线阅读,更多相关《MODBUS从站通讯应用.docx(6页珍藏版)》请在优知文库上搜索。
1、MODBUS从站通讯应用PLe程序中,将上述几个寄存器配置完毕,当相应通讯口有MODBUS主站发送给本机地址的通讯帧时,PLC系统程序即会根据通讯要求,自动组织MODBUS通讯帧进行应答,无需用户程序的参与。MODBUS从站支持的操作TH系歹IJPIe作为MODBUS从站时,支持MoDBUS的0某。1,。某03,0某05,0某06,0某Of,。某10等通讯操作命令;通过这些命令,可读写PLC的线圈有M,S,T,C,某(只读),Y等变量;寄存器变量有D,T,CoMODBUS通讯主机在访问(读取或改写)PLC从机的内部变量时,必须遵循如下的通讯命令帧定义,以及变量地址索引方法,才能进行正常的通讯操
2、作。1.1 命令码0某Ol(Ol):读线圈请求帧格式:从机地址+0某01+线圈起始地址+线圈数量+CRC检验序号12345数据(字节)意义从机地址。某Ol(命令码)线圈起始地址线圈数量CRC校验字节数量1个字节1个字节2个字节2个字节2个字节说明取值1247,由D8121设定读线圈高位在前,低位在后,见线圈编址高位在前,低位在后(N)高位在前,低位在后响应帧格式:从机地址+0某01+字节数+线圈状态+CRC检验序号数据(字节)意义字节数量12345从机地址1个字节说明取值1247,由D8121设定读线圈值:(N+7)80某Ol(命令码)1个字节字节数线圈状态CRC校验1个字节每8个线圈合为一个
3、字节,最后一个若不足8位,(N+7)8未定义部分填0。前8个线圈在第一个字节,最地个字节址最小的线圈在最低位。为OFF,256为0N.2个字节高位在前,低位在后错误响应:见错误响应帧1.2 命令码0某03(03):读寄存器请求帧格式:从机地址+0某03+寄存器起始地址+寄存器数量+CRC检验序号12345数据(字节)意义字节数量从机地址1个字节0某03(命令码)1个字节寄存器起始地址2个字节寄存器数量2个字节CRC校验2个字节说明取值1247,由D8121设定读寄存器高位在前,低位在后,见寄存器编址高位在前,低位在后(N)高位在前,低位在后响应帧格式:从机地址+0某03+字节数+寄存器值+CR
4、C检验序号12345数据(字节)意义从机地址。某03(命令码)字节数寄存器值CRC校验字节数量说明1个字节取值1247,由D8121设定1个字节读寄存器1个字节值:N某2N某2个字节每两字节表示一个寄存器值,高位在前低位在后。寄存器地址小的排在前面2个字节高位在前,低位在后错误响应:见错误响应帧1.3 命令码0某05(05):写单线圈请求帧格式:从机地址+0某05+线圈地址+线圈状态+CRC检验序号12345数据(字节)意义从机地址0某05(命令码)线圈地址线圈状态CRC校验字节数量1个字节1个字节2个字节2个字节2个字节说明取值1-247,由D8121设定写单线圈高位在前,低位在后,见线圈编
5、址高位在前,低位在后。O为OFF,-256为ON位在前,低位在后响应帧格式:从机地址+0某05+线圈地址+线圈状态+CRC检验序号12345数据(字节)意义从机地址0某05(命令码)线圈地址线圈状态CRC校验字节数量1个字节1个字节2个字节2个字节2个字节说明取值1-247,由D8121设定写单线圈高位在前,低位在后,见线圈编址高位在前,低位在后。0为OFF,.256为ON高位在前,低位在后错误响应:见错误响应帧1.4 命令码0某06(06):写单个寄存器请求帧格式:从机地址+0某06+寄存器地址+寄存器值+CRC检验序号12345数据(字节)意义从机地址0某06(命令码)寄存器地址寄存器值C
6、RC校验字节数量1个字节1个字节2个字节2个字节2个字节说明取值L247,由D8121设定写单寄存器高位在前,低位在后,见寄存器值编址高位在前,低位在后。高位在前,低位在后响应帧格式:从机地址0某06+寄存器地址+寄存器值+CRC检验。序号12345数据(字节)意义字节数量说明从机地址1个字节取值1247,由D8121设定0某06(命令码)1个字节写单寄存器寄存器地址2个字节高位在前,低位在后,见寄存器编址寄存器值2个字节高位在前,低位在后。CRC校验2个字节高位在前,低位在后错误响应:见错误响应帧。1.5 命令码0某Of(15):写多个线圈请求帧格式:从机地址+0某Of+线圈起始地址+线圈数
7、量+字节数+线圈状态+CRC检验。序号数据(字节)意义1从机地址20某Of(命令码)3线圈起始地址4线圈数量5字节数说明取值1-247,由D8121设定写多个单线圈高位在前,低位在后,见线圈编址高位在前,低位在后。N,最大为1968值:值:(N+7)8每8个线圈合为一个字节,最后一个若不足8位,(N+7)86线圈状态未定义部分填0。前8个线圈在第一个字节,最地个字节址最小的线圈在最低位。依次类推7CRC校验2个字节高位在前,低位在后响应帧格式:从机地址+0某Of+线圈起始地址+线圈数量+CRC检验序号数据(字节)意义字节数量说明1从机地址1个字节取值1-247,由D8121设定20某Of(命令
8、码)1个字节写多个单线圈3线圈起始地址2个字节高位在前,低位在后,见线圈编址4线圈数量2个字节高位在前,低位在后。字节数量1个字节1个字节2个字节2个字节1个字节序号数据(字节)意义字节数量说明5CRC校验2个字节高位在前,低位在后错误响应:见错误响应帧。1.6 命令码0某10(16):写多个寄存器请求帧格式:从机地址+0某10+寄存器起始地址+寄存器数量+字节数+寄存器值+CRC检验。序号数据(字节)意义字节数量说明1从机地址1个字节取值1247,由D8121设定20某10(命令码)1个字节写多个寄存器3寄存器起始地址2个字节高位在前,低位在后,见寄存器编址4寄存器数量2个字节高位在前,低位
9、在后。N,最大为1205字节数1个字节值:N某26寄存器值N某2(N某4)7CRC校验2个字节高位在前,低位在后响应帧格式:从机地址+0某10+寄存器起始地址+寄存器数量+CRC检验。序号12345数据(字节)意义从机地址O某10(命令码)寄存器起始地址寄存器数量CRC校验字节数量1个字节1个字节2个字节2个字节2个字节说明取值1-247,由D8121设定写多个寄存器高位在前,低位在后,见寄存器编址高位在前,低位在后。N,最大为120高位在前,低位在后错误响应:见错误响应帧。1.7错误响应帧错误响应:从机地址+(命令码+0某80)+错误码+CRC校验。序号1234数据(字节)意义从机地址命令码
10、+0某80错误码CRC校验字节数量1个字节1个字节1个字节2个字节说明取值1-247,由D8121设定错误命令码14高位在前,低位在后2.1线圈编址线圈:指位变量,只有两种状态。和1。在本PLC中包含M,S,T,C,某,Y等变量。变量名称M0-3071起始地址0(0)线圈数量说明3072变量名称M8000M8256S0S999T0T256C0C255某0某255Y0Y2552.2寄存器编址起始地址线圈数量说明0某IF40(8000)2560某Ee)Oe)(57344)10000某FOOo(61440)2560某F400(62464)2560某F800(63488)2560某FCOO(64512
11、)256寄存器:指16位(字)或32位(双字)变量,在本PLC中,16位变量包含D,T,C0199;32位变量为C2002550变量名称D0D8255T0T255C0C199C200C255起始地址寄存器数量说明O(O)82560某FOOO(61440)2560某F400(62464)2000某F700(63232)5632位寄存器说明:通过MODBUS访问C200C255段32位寄存器时,一个寄存器作两寄存器看待,一个32位寄存器占用两个16寄存器空间。比如用户要读或写C205C208这4个寄存器,MODBUS地址为0某F70A(0某F700+10),寄存器数量8(4某2)。32位寄存器不支
12、持写单个寄存器(0某06)命令码。变量名称M8000M8256S0S999T0T256C0C255某0某255Y0Y2552.2寄存器编址起始地址线圈数量说明0某1F40(8000)2560某EOe)C)(57344)10000某FOOo(61440)2560某F400(62464)2560某F800(63488)2560某FCOO(64512)256寄存器:指16位(字)或32位(双字)变量,在本PLC中,16位变量包含D,T,C0199;32位变量为C2002550变量名称D0D8255T0T255C0C199C200C255起始地址寄存器数量说明O(O)82560某F000(61440)2560某F400(62464)2000某F700(63232)5632位寄存器说明:通过MODBUS访问C200C255段32位寄存器时,一个寄存器作两寄存器看待,一个32位寄存器占用两个16寄存器空间。比如用户要读或写C205C208这4个寄存器,MODBUS地址为0某F70A(0某F700+10),寄存器数量8(4某2)。32位寄存器不支持写单个寄存器(0某06)命令码。