TWIDO modbus通讯说明书

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

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

1 / 18
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功