资源描述
Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,7.1 MODBUS,通讯介绍,Modbus,协议是一个主,/,从协议,它允许一个并且只能一个主机发送命令,查询从机的响应。主机可单独对一个从机发送命令,也可以广播方式对所有从机发送命令。,从机对每一个单独发送给它们的查询返回讯息(响应)。但对广播方式的查询不做响应。,Modbus,主站模式,-Modbus,主站模式允许,Twido,控制器向从站发出,Modbus,查询并等待响应。,Modbus,从站模式,-Modbus,从站模式允许,Twido,控制器响应主站的,Modbus,查询,,Twido,控制器支持供对象访问的标准,modbus,数据,控制功能和服务扩展。,注意:,RS-485,网络(没有中继器)可安装,32,个设备(,1,个主机和最多,31,个从机),它们的地址可在,1,到,247,之间选择,距离可,200,米,通讯波特率达,38400,。,第七章,TWIDO PLC,通讯功能,1,7.1 MODBUS通讯介绍第七章 TWIDO PLC通讯功,下图是,MODBUS,主,/,从站通讯结构图:,主站,从站,1,从站,2,从站,10,从站,121,从站,30,主站,(,下层网络,),从站,2,从站,4,从站,180,从站,121,从站,51,TWIDO PLC,做从站时,只需设定相应的参数即可,不需要编写通讯程序;,TWIDO PLC,做主站时,需设定相应的参数,还需要编写通讯程序去访问从站的数据。,第七章,TWIDO PLC,通讯功能,2,下图是MODBUS主/从站通讯结构图:主站从站1从站2从站,下图是,EIA RS-232,和,EIA RS-485,型的电缆连接定义图。,如果,Twido,控制器使用端口,1,,,5,号引脚的,DPT,信号必须与,7,号引脚的,0V,相接。这意味着,Twido,控制器的端口,1,通信是,Modbus,而不是和,TwidoSoft,软件通信。,第七章,TWIDO PLC,通讯功能,3,下图是EIA RS-232和EIA RS-485型的电,7.1.1 MODBUS,主、从站通讯端口的配置方法,TWIDO PLC,的编程口和扩展通讯口都能做,MODBUS,的主站或从站,在“硬件”菜单中点击“通讯配置”菜单,出现下图“,PLC,通讯配置”界面。端口,1,、,2,的设定方法一样。设定完成后点击“确认”退出,点击“对勾”图标接受参数配置。,选择,MODBUS,协议和地址,设定通讯相关参数,第七章,TWIDO PLC,通讯功能,4,7.1.1 MODBUS主、从站通讯端口的配置方法选择MOD,7.1.2 MODBUS,主站编程方法,TWIDO PLC,做,MODBUS,子站时,是被动的工作方式,不需要用户编写任何的通讯程序。,TWIDO PLC,做,MODBUS,主站时,是主动的工作方式,需要主动发送命令到各子站完成读写数据的工作。,在,TWIDO PLC,中,需要填写通讯用字表,并用,EXCH,指令完成通讯指令。,通讯字表由控制字表、发送字表、接受字表构成。一般组成格式如下表:,高字节,低字节,控制表,命令,长度(发送,/,接收),接收偏移,发送偏移,发送表,发送字节,1,发送字节,2,.,.,.,发送字节,n,发送字节,n+1,接收表,接收字节,1,接收字节,2,.,.,.,接收字节,p,接收字节,p+1,第七章,TWIDO PLC,通讯功能,5,7.1.2 MODBUS主站编程方法高字节低字节控制表命令,控制字表、发送字表、接受字表一般存放在连续的,MW,组成的字表中,发送和,/,或接收帧的最大值是,256,字节。,“长度”字节指发送表的长度(以字节为单位,最大,256,字节),“命令”字节在,Modbus RTU,查询(除了广播)情形下必须总是等于“,01”,(,00,:只发送,,01,:发送,/,接收,,02,:只接收。,Tx,发送偏移和,Rx,接受偏移)。,“,Tx,发送偏移”它用于解决,Modbus,协议中字节,/,字的偏移问题。插入空字节,使发送表排列更整齐,“,Rx,接受偏移”字节包含信息包发送时加入的字节在接收表中的排列号(,1,表示第一个字节,,2,表示第二个字节,等等)。它用于处理,Modbus,协议中与字节,/,字的值有关的问题。例如,如果此字节包含,3,,则表中第三个字节将被填为零,使得实际接收到的第三个字节在表中变为第四个字节。,第七章,TWIDO PLC,通讯功能,6,控制字表、发送字表、接受字表一般存放在连续的MW组,7.1.3 MODBUS,主站标准协议的字表格式,TWIDO PLC,的,MODBUS,协议支持主站访问子站的位元件、字元件(位,%Mi,和字,%Mwi,),,RTU,和,ASCII,模式使用相同的表格式。,(,1,),Modbus,主站模式:读,N,位(,M,),下表是使用请求码,01,和,02,来读取子站的位元件,M,的标准格式的描述:,索引号,高字节,低字节,控制表,0,01,(发送,/,接收),06,(发送长度),(*),1,03,(接收偏移),00,(发送偏移),发送表,2,从,(1.247),01,或,02,(请求码),3,读取的第一位的编号,4,N=,读取的位数,接收表(响应之后),5,从,(1.247),01,或,02,(响应码),6,00,(由,Rx,偏移加入的字节),N,2,=1+(N,1,-1)/8,读的数据字节数,7,读取的第一个字节,(if N1),读取的第二个字节,(if N1),8,读取的第三个字节,(if N1),.,(N,2,/2)+6(N,2,是偶数,),(N,2,+1/2)+6(N,2,是奇数,),读取的第,N,个字节,(if N1),第七章,TWIDO PLC,通讯功能,7,7.1.3 MODBUS主站标准协议的字表格式索引号高字节,索引号,高字节,低字节,控制表,0,01,(发送,/,接收),06,(发送长度),(*),1,03,(接收偏移),00,(发送偏移),发送表,2,从,(1.247),03,或,04,(请求码),3,读取的第一字的编号,4,N=,读取的字数,接收表(响应之后),5,从,(1.247),03,或,04,(响应码),6,00,(由,Rx,偏移加入的字节),2*N,(读取的字节数),7,读取的第一个字,8,读取的第二个字,(if N1),.,N+6,读取的第,N,个字,(if N2),(,2,),Modbus,主站模式:读,N,字(,MW,),下表是使用请求码,03,和,04,来读取子站的字元件,MW,的标准格式的描述:,第七章,TWIDO PLC,通讯功能,8,索引号高字节低字节控制表001(发送/接收)06(发送长度,索引号,高字节,低字节,控制表,0,01,(发送,/,接收),06,(发送长度),(*),1,00,(接收偏移),00,(发送偏移),发送表,2,从,(1.247),05,(请求码),3,写的位元件的编号,4,写的位的值,接收表(响应之后),5,从,(1.247),05,(响应码),6,被写的位数,7,被写的值,(,3,),Modbus,主站模式:写一个位元件(,M,),下表是使用请求码,05,来写子站的一个位元件,M,的标准格式的描述:,第七章,TWIDO PLC,通讯功能,9,索引号高字节低字节控制表001(发送/接收)06(发送长度,索引号,高字节,低字节,控制表,0,01,(发送,/,接收),06,(发送长度),(*),1,00,(接收偏移),00,(发送偏移),发送表,2,从,(1.247),06,(请求码),3,写的字元件的编号,4,写的字值,接收表(响应之后),5,从,(1.247),06,(响应码),6,被写的字数,7,被写的值,(,4,),Modbus,主站模式:写一个字元件(,MW,),下表是使用请求码,06,来写子站的一个字元件,MW,的标准格式的描述:,第七章,TWIDO PLC,通讯功能,10,索引号高字节低字节控制表001(发送/接收)06(发送长度,(,5,),Modbus,主站模式:写,N,个位元件(,M,),下表是使用请求码,15,来写子站的,N,个位元件,M,的标准格式的描述:,表,索引,高字节,低字节,控制表,0,01,(发送,/,接收),8+,字节数(发送),1,00,(接收偏移),07,(发送偏移),发送表,2,从,(1.247),15,(请求码),3,写的第一个位元件的编号,4,N,1,=,写的位数,5,00,(不发送,偏移结果),N,2,=1+(N,1,-1)/8,写的数据字节数,6,第一个字节的值,第二个字节的值,7,第三个字节的值,第四个字节的值,.,(N,2,/2)+5(N,2,是偶数,),(N,2,+1/2)+5(N,2,是奇数,),第,N,个字节的值,2,nd,字节,接收表(响应之后),从,(1.247),15,(响应码),被写的第一位的编号,被写的位数(,=N,1,),第七章,TWIDO PLC,通讯功能,11,(5)Modbus主站模式:写N个位元件(M)表高字节,(,6,),Modbus,主站模式:写,N,个字元件(,MW,),下表是使用请求码,16,来写子站的,N,个字元件,MW,的标准格式的描述:,索引号,高字节,低字节,控制表,0,01,(发送,/,接收),8+(2*N),(发送长度),1,00,(接收偏移),07,(发送偏移),发送表,2,从,(1.247),16,(请求码),3,写的第一字元件的编号,4,N=,写的字数,5,00,(不发送,偏移结果),2*N=,写的字节数,6,写的第一个字值,7,写的第二个值,.,N+5,写的第,N,个值,接收表(响应之后),N+6,从,(1.247),16,(响应码),N+7,被写的第一字的编号,N+8,被写的字数(,=N,),第七章,TWIDO PLC,通讯功能,12,(6)Modbus主站模式:写N个字元件(MW)索引号,7.1.4,如何用程序填写,MODBUS,协议的字表,本节将以实例的方式来说明如何用赋值指令填写符合上节表格要求的,MW,字表。,例一:要求编写程序从,11,号子站读取从,MW500,开始的连续,10,个字元件。,编程思路:,1,、要求读多个字元件,所以用“,03,或,04,请求码”的表格,找到相应的表格。,2,、合理规划存放本字表的,MW,空间(因为在一个程序中可能会有多个字表,所以要合理规划),本例中从,MW200,开始。(注意:,MW200,和,MW500,在此例中完全不同的含义),3,、按照标准表格,用赋值指令对,MW200,开始的字表进行赋值,如下图:,第七章,TWIDO PLC,通讯功能,13,7.1.4 如何用程序填写MODBUS协议的字表第七章 TW,上页中的程序只是填写了控制表和发送表,实际上在程序中我们只需要填写这两个字表,接收表不用程序填写。接收表是收到响应数据后,由系统自动完成的,但我们必须给接受表预留足够的空间。,本例中三个字表总长度,L,N,6+1,N,是读的字元件的个数。这个“,L”,将在,EXCH,指令中用到。,本例中,接收表收到的数据的前两个字是系统信息,如站号、请求码等。从第三个字开始才是存放从子站读取的字元件,即,MW207,MW216,存放了从够子站读到的,MW500,MW509,。,到此,我们能算出本例中控制表、发送表、接收表总共占用了,MW200,MW216,的空间,总长度为,17,个字。,填写了控制表和发送表,并预留了接收表的长度后,还要对整个字表用发送,/,接收消息,-,交换指令(,EXCH,)执行处理,如下图:,第七章,TWIDO PLC,通讯功能,14,上页中的程序只是填写了控制表和发送表,实际上在程序中我,例二:要求编写程序往,11,号子站
展开阅读全文