资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2016/5/2,#,S7-200,的,modbus rtu,通讯,MODBUS RTU,协议简介,MODBUS RTU,库的使用,两,台,PLC,之间的,MODBUS RTU,通讯,西门子,PLC,与台达变频器之间的,MODBUS RTU,通讯,S7-200的modbus rtu 通讯MODBUS RTU,1,MODBUS,协议简介,Modbus,通信协议分为串行链路的和基于,TCP/IP,的;,Modbus,串行链路协议只有一个主站,可以有,1-247,个从站。只能主站发起。,Modbus,串行电气规范:,RS485,(长距离传输),和,RS232,(短距离传输)。,Modbus,传输模式:,传输的时候实际上是按这种格式发送信息,,CRC,叫循环冗余校验,,LRC,叫纵向冗余校验。,ASC,地址,功能代码,数据数量,数据,1,数据,N,LRC,高字节,LRC,低字节,回车,换行,RTU,地址,功能代码,数据数量,数据,1,数据,N,CRC,高字节,CRC,低字节,回车,换行,MODBUS 协议简介Modbus通信协议分为串行链路的和基,2,MODBUS,协议简介,Modbus,主站寻址,00001,到,09999,是离散输出(线圈),假设输出:,QX.Y,;,最高位:,Q=0,;,寻址计算:,X,*,8+Y+1,(低位顺排);,中间补零;,10001,至,19999,是离散输入(触点),:I=1,30001,至,39999,是输入寄存器(通常模拟量),假设模拟量:,AIWN,;,最高位:,AIW=3,;,寻址计算,:(,N+2,),/2,(,N,必为偶数);,中间补零,;,40001,至,49999,是保持寄存器(,V,(,W,)存储区),:,同,3,注:模拟量和,V,区都只能写一个字,不能写双字。,MODBUS 协议简介Modbus主站寻址注:模拟量和V区都,3,MODBUS,协议库的使用,MBUS_CTRL,指令用于初始化主站通信,,MBUS_MSG,指令,(,或用于端口,1,的,MBUS_MSG_P1),用于 启动对,Modbus,从站的请求并处理应答。,MBUS_CTRL,指令用于,S7-200,端口,0,的,MBUS_CTRL,指令,(,或用于端口,1,的,MBUS_CTRL_P1,指令,),可初始化、监视或禁用,Modbus,通讯。在使用,MBUS_MSG,指令之前,必须正确执行,MBUS_CTRL,指令。指令完成后立即设定“完成”位,才能继续执行下一条指令。,MBUS_CTRL,指令在每次扫描且,EN,输入打开时执行。,MBUS_CTRL,指令必须在每次扫描时,(,包 括首次扫描,),被调用,以允许监视随,MBUS_MSG,指令启动的任何突出消息的进程。除非每次调用,MBUS_CTRL,,否则,Modbus,主设备协议将不能正确运行。,MODBUS 协议库的使用MBUS_CTRL 指令用于初始化,4,MODBUS,协议库的使用,EN,:指令使能位。,Mode,:“模式”参数。“模式”输入数值选择通讯协议。输入值,1,将,CPU,端口分配给,Modbus,协议并启用该协议。输入值,0,将,CPU,端口分配给,PPI,系统协议,并禁用,Modbus,协议,。,Baud,:“波特率”参数。,MBUS_CTRL,指令支持的波特率为,1200,、,2400,、,4800,、,9600,、,19200,、,38400,、,57600,或,115200bit/s,。,Parity,:“奇偶校验”参数。“奇偶校验”参数被设为与,Modbus,从站奇偶校验相匹配。所有 设置使用一个起始位和一个停止位。可接受的数值为:,0,无奇偶校验、,1,奇校验、,2,偶校验。,Timeout,:“超时”参数。“超时”参数设为等待来自从站应答的毫秒时间数。“超时”,数值,可以设置的范围为,1,毫秒到,32767,毫秒。典型值是,1000,毫秒,(1,秒,),。“超时”参数应该设置的足 够大,以便从站有时间对所选的,波率,做出,应答。,MODBUS 协议库的使用EN:指令使能位。,5,MODBUS,协议库的使用,Done,:,MBUS_CTRL,指令成功完成时,“完成”输出为,1,,否则为,0,。,Error,:“错误”输出代码。“错误”输出代码由反应执行该指令的结果的特定数字构成。“错 误”输出代码的含义如下:,MODBUS 协议库的使用Done:MBUS_CTRL 指,6,MODBUS,协议库的使用,MBUS_MSG,指令,(,或用于端口,1,的,MBUS_MSG_P1),用于启动对,Modbus,从站的请求并处理应 答,单条,MSG,指令只能完成对指定从站的读或写请求。,当,EN,输入和“首次”输入都为,1,时,,BUS_MSG,指令启动对,Modbus,从站的请求。发送请 求、等待应答、并处理应答通常需要多次扫描。,EN,输入必须打开以启用请求的发送,并应该保持 打开直到“完成”位被置位。,必须注意的是,一次只能激活一条,MBUS_MSG,指令。如果启用了多条,MBUS_MSG,指令,则将处理所执行的第一条,MBUS_MSG,指令,之后的所有,MBUS_MSG,指令将中止并产生错误代码,6,。,MODBUS 协议库的使用MBUS_MSG 指令(或用于端口,7,MODBUS,协议库的使用,EN,:指令使能位。,First,:“首次”参数。“首次”参数应该在有新请求要发送时才打开以进行一次扫描。“首 次”输入应当通过一个边沿检测元素,(,例如上升沿,),打开,这将导致请求被传送一次,。,Slave,:“从站”参数。“从站”参数是,Modbus,从站的地址。允许的范围是,0,到,247,。地址,0,是广播地址,只能用于写请求。不存在对地址,0,的广播请求的应答。并非所有的从站会支持广播地 址,,S7-200 Modbus,从站协议库不支持广播地址,。,RW,:“读写”参数。“读写”参数指定是否要读取或写入该消息。“读写”参数允许使用下 列两个值:,0,读,,1,写,。,Addr,:“地址”参数。“地址”参数是起始,的,Modbus,地址。允许使用下列取值范围,:,00001,至,09999,是离散输出,(,线圈,);10001,至,19999,是离散输入,(,触点,);30001,至,39999,是,输入寄存器,;,40001,至,49999,是保持,寄存器,其中离散输出,(,线圈,),和保持寄存器支持读取和写入请求,而离散输入,(,触点,),和输入寄存器仅 支持读取请求。“地址”的具体值应与,Modbus,从站支持的地址,一致,MODBUS 协议库的使用EN:指令使能位。其中离散输出(,8,MODBUS,协议库的使用,Count,:“计数”参数。“计数”参数指定在该请求中读取或写入的数据元素的数目。“计数”数值是位数,(,对于位数据类型,),和字数,(,对于字数据类型,),。,MBUS_MSG,指令将读取或写入最大,120,个字 或,1920,个位,(240,字节的数据,),。“计数”的实际限 值 还取决于,Modbus,从站中的限制。,MODBUS 协议库的使用Count:“计数”参数。“计数”,9,MODBUS,协议库的使用,DataPtr,:“,DataPtr”,参数是指向,S7-200 CPU,的,V,存储器中与读取或写入请求相关的数 据的间接地址指针(例:,&VB100,)。对于读取,请求,,,DataPtr,应指向用于存储从,Modbus,从站读取 的数据的第一个,CPU,存储器位置。对于写入请求,,DataPtr,应指向要发送到,Modbus,从站的数据的 第一个,CPU,存储器位置。,Done,:完成输出。完成输出在发送请求和接收应答时关闭。“完成”输出在应答完成或,MBUS_MSG,指令因错误而中止时打开,。,Error,:“错误”输出仅当“完成”输出打开时,有效。,低位编号的错误代码,(1,到,8),是由,MBUS_MSG,指令检测到的错误。这些错误代码通常指示与,MBUS_MSG,指令的输入参数有关的问题,或接收来自 从站的应答时出现的问题。奇偶校验和,CRC,错误指示存在应答但是数据未正确接收。这通常是由电 气故障,(,例如连接有问题或者电噪声,),引起,的。高位,编号的错误代码,(,从,101,开始,),是由,Modbus,从站返回的错误。这些错误指示从站不支持所 请求的功能,或者所请求的地址,(,或数据类型或地址范围,),不被,Modbus,从站支持,。,MODBUS 协议库的使用DataPtr:“DataPtr,10,MODBUS,协议库的使用,西门子,Modbus,从站协议库是包括两条指令:,MBUS_INIT,指令和,MBUS_SLAVE,指令。,MBUS_INIT,指令用于启用和初始化或禁止,Modbus,通讯。,MBUS_SLAVE,指令用于为,Modbus,主设备发出的请求服务。,MBUS_INIT,指令用于启用和初始化或禁止,Modbus,从站通讯。在使用,MBUS_SLAVE,指令之 前,必须正确执行,MBUS_INIT,指令。指令完成后立即设定“完成”位,才能继续执行下一条指令。,MODBUS 协议库的使用西门子 Modbus 从站协议库是,11,MODBUS,协议库的使用,EN,:指令使能位。,Mode,:模式选择,启动,/,停止,Modbus,从站通信。,Mode,参数允许使用以下两个数值:,1,启动,,0,停止。,Address,:从站地址,,MODBUS,从站地址,取值,1247,。,Baud,:波特率,可选,1200,,,2400,,,4800,,,9600,,,19200,,,38400,,,57600,,,115200,。,Parity,:奇偶校验,,0=,无校验;,1=,奇校验;,2=,偶校验,。,Delay,:延时,附加字符间延时,缺省值为,0,。,MaxIQ,:最大,I/Q,位,参与通信的最大,I/O,点数,,S7-200,的,I/O,映像区为,128/128,,缺省值 为,128,。,MODBUS 协议库的使用EN:指令使能位。,12,MODBUS,协议库的使用,MaxAI,:最大,AI,字数,参与通信的最大,AI,通道数,可为,16,或,32,。,0,用于,CPU 221,、,16,用 于,CPU 222,、,32,用于,CPU 224,、,224XP,、,226,。,MaxHold,:设定供,Modbus,地址,4xxxx,使用的,V,存储器中的字保持寄存器数目。,HoldStart,:保持寄存器区起始地址,以,&VBx,指定(间接寻址方式)。,Done,:初始化完成标志,成功初始化后置,1,。,Error,:初始化错误代码,。,MODBUS 协议库的使用MaxAI:最大 AI 字数,参与,13,MODBUS,协议库的使用,MBUS_SLAVE,指令被用于为,Modbus,主设备发出的请求服务,并且必须在每次扫描时执行,,以便,允许该指令检查和回答,Modbus,请求。,MBUS_SLAVE,指令无输入参数,在每次扫描且,EN,输入开 启时执行,。,EN,:指令使能位。,Done,:,Modbus,执行通信中时置,1,,无,MODBUS,通信活动时为,0,。,Error,:错误代码。,MODBUS 协议库的使用MBUS_SLAVE 指令被用于为,14,MODBUS,协议库的使用,利用指令库编程前首先应为其分配存储区,否则软件编译时会报错。具体方法如下,:,执行,Step7-Micro/Win,菜单命令“文件”,“,库存储区”,打开“库存储区分配”对话框。,在,“库存储区分配”对话框中输入库存储区(,V,存储区)的起始地址,注意避免该地址和 程序中已经采用或准备采用的其它地址重合。,点击,“建议地址”按钮,系统将自动计算存储区的截止地址。然后确定即可,。,MODBUS 协
展开阅读全文