免费预览已结束,剩余19页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
S7 200 Modbus 协议使用详解点击数:930 发布时间:2009年11月3日 来源:1.ModbusRTU主站指令库的功能是通过在用户程序中调用预先编好的程序功能块实现的,该库对Port0和Port1有效。该指令库将设置通信口工作在自由口模式下。2.ModbusRTU主站指令库使用了一些用户中断功能,编其他程序时不能在用户程序中禁止中断。3.ModbusRTU主站库对CPU的版本有要求。CPU的版本必须为2.00或者2.01(即订货号为6ES721*23-0BA*),1.22版本之前(包括1.22版本)的S7-200CPU不支持。 使用ModbusRTU主站指令库,可以读写ModbusRTU从站的数字量、模拟量I/O以及保持寄存器。要使用ModbusRTU主站指令库,须遵循下列步骤:安装西门子标准指令库按照要求编写用户程序调用ModubsRTU主站指令库ModbusRTU主站功能编程1.调用ModbusRTU主站初始化和控制子程序使用SM0.0调用MBUS_CTRL完成主站的初始化,并启动其功能控制:用SM0.0调用ModbusRTU主站初始化与控制子程序各参数意义如下:a.EN使能:必须保证每一扫描周期都被使能(使用SM0.0)b.Mode模式:为1时,使能Modbus协议功能;为0时恢复为系统PPI协议c.Baud波特率:支持的通讯波特率为1200,2400,4800,9600,19200,38400,57600,115200。d.Parity校验:校验方式选择0无校验1奇较验2偶较验e.Timeout超时:主站等待从站响应的时间,以毫秒为单位,典型的设置值为1000毫秒(1秒),允许设置的范围为1-32767。注意:这个值必须设置足够大以保证从站有时间响应。f.Done完成位:初始化完成,此位会自动置1。可以用该位启动MBUS_MSG读写操作(见例程)g.Error初始化错误代码(只有在Done位为1时有效):0无错误1校验选择非法2波特率选择非法3模式选择非法2.调用ModbusRTU主站读写子程序MBUS_MSG,发送一个Modbus请求;调用ModbusRTU主站读写子程序各参数意义如下:a.EN使能:同一时刻只能有一个读写功能(即MBUS_MSG)使能注意:建议每一个读写功能(即MBUS_MSG)都用上一个MBUS_MSG指令的Done完成位来激活,以保证所有读写指令循环进行(见例程)。b.First读写请求位:每一个新的读写请求必须使用脉冲触发c.Slave从站地址:可选择的范围1-247d.RW从站地址:0读,1写注意:1.开关量输出和保持寄存器支持读和写功能2.开关量输入和模拟量输入只支持读功能e.Addr读写从站的选择读写的数据类型数据地址:00001至0xxxx-开关量输出10001至1xxxx-开关量输入30001至3xxxx-模拟量输入40001至4xxxx-保持寄存器f.Count数据个数通讯的数据个数(位或字的个数)注意:Modbus主站可读/写的最大数据量为120个字(是指每一个MBUS_MSG指令)g.DataPtr数据指针:1.如果是读指令,读回的数据放到这个数据区中2.如果是写指令,要写出的数据放到这个数据区中h.Done完成位读写功能完成位i.Error错误代码:只有在Done位为1时,错误代码才有效0无错误1响应校验错误2未用3接收超时(从站无响应)4请求参数错误(slaveaddress,Modbusaddress,count,RW)5Modbus/自由口未使能6Modbus正在忙于其它请求7响应错误(响应不是请求的操作)8响应CRC校验和错误-101从站不支持请求的功能102从站不支持数据地址103从站不支持此种数据类型104从站设备故障105从站接受了信息,但是响应被延迟106从站忙,拒绝了该信息107从站拒绝了信息108从站存储器奇偶错误常见的错误:如果多个MBUS_MSG指令同时使能会造成6号错误从站delay参数设的时间过长会造成主站3号错误从站掉电或不运行,网络故障都会造成主站3号错误3.在CPU的V数据区中为库指令分配存储区(LibraryMemory)ModbusMaster指令库需要一个284个字节的全局V存储区。参考:分配库指令数据区关于ModbusRTU主站协议库的补充说明此为西门子正式推出的标准库指令说明资料。在ModbusRTUMaster协议和PPI协议之间切换:ModbusRTUMaster协议指令库使通信口工作在自由口模式下,此时不能与Micro/WIN软件通信。要在切换回PPI协议,可以:将MBUS_CTRL指令的Mode输入端设置为逻辑“0”将CPU的允许模式选择开关置为STOP位置ModbusRTUMaster协议库的执行时间:ModbusRTUMaster协议库的MBUS_CTRL指令不需要很长的执行时间。MBUS_需要1.11ms用于初始化,在后续的每个扫描周期中只占用0.41ms。调用MBUS_MSG子程序会加长处理时间。大部分时间都用于CRC校验的计算。每读、写一个字的数据就需要1.85ms扫描时间。数据最多的情况下(读、写120字的数据),扫描时间大概会扩增加222ms。读操作的时间主要消耗在接收数据上;写操作的时间主要消耗在发送数据上。Modbus地址通常Modbus地址由5位数字组成,包括起始的数据类型代号,以及后面的偏移地址。ModbusMaster协议库把标准的Modbus地址映射为所谓Modbus功能号,读写从站的数据。ModbusMaster协议库支持如下地址:00001-09999:数字量输出(线圈)10001-19999:数字量输入(触点)30001-39999:输入数据寄存器(通常为模拟量输入)40001-49999:数据保持寄存器ModbusMaster协议库支持的功能为了支持上述Modbus地址的读写,ModbusMaster协议库需要从站支持下列功能:表1.需要从站支持的功能Modbus地址读/写Modbus从站须支持的功能00001-09999数字量输出读功能1写功能5:写单输出点功能15:写多输出点10001-19999数字量输入读功能2写30001-39999输入寄存器读功能4写40001-49999保持寄存器读功能3写功能6:写单寄存器单元功能16:写多寄存器单元Modbus地址和S7-200存储区地址的映射S7-200通过ModbusMaster和Slave协议库通信时,Modbus地址和S7-200内存储区地址的映射关系都类似。Modbus保持寄存器地址映射举例:ModbusS7-200S7-200保持寄存器地址存储区字寻址存储区字节寻址400011234VW2001234VB20012VB20134400025678VW2025678VB20256VB20378400039ABCVW2049ABCVB2049AVB205BCModbus数字量地址映射举例:位地址(0xxxx和1xxxx)数据总是以字节为单位打包读写。第一个字节中的最低有效位对应Modbus地址的起始地址。如下图所示:VX.0-10001VX.1-10002VX.2-10003VX.3-10004VX.4-10005VX.5-10006VX.6-10007VX.7-10008ModbusRTU主站例程为了更好地理解Modbus主站的编程,可参考下面的例程。注意:1.该例程使用Micro/WINV4.0SP5保存。2.该例程仅访问一个从站,若访问不同的从站,可通过改变从站地址来实现。注意:此指令库/程序的作者和拥有者对于该软件的功能性和兼容性不负任何责任。使用该软件的风险完全由用户自行承担。由于它是免费的,所以不提供任何担保,错误纠正和热线支持,用户不必为此联系西门子技术支持与服务部门。200 modbus通讯问题 悬赏分:5 - 解决时间:2010-2-510:21 比方说我要读写40001这个寄存器的数据,根据西门子给的modbus库的程序块,一个写一个读,如果我有10台表,那是不是说我要建立20个这样的快才能实现,如果我要读10个寄存器的数据那是不是就要建立200个块啊,我感觉应该不是这样的我用改变count的数值的方法读到了其它所有位的值,但是发现了问题,在count为一时我可以读写数值,但是当把count改为2以上的值时,发现写的块报错一次,马上又好了,而且不能写值(一台表时写、读一个寄存器地址都没问题)。我想办法看了一下串口的数据交换,发现了和平常不同的数据如下: 一台表,读写40019号地址,count=30110001200030600000000000046DF011000120003200D010300120003A5CE0103060000000F002DD16B0110001200030600000000000046DF-一台表,读写40019号地址,count=101060012000029CF01060012000029CF010300120001240F0103020000B844问题:1.我这些表可以建几个块,count和addr相应如何设定2.为什么就报错一次就又好了3.0110001200030600000000000046DF这个0110的10是什么东西啊 1 如果ADDR在40000和50000之间,RW=1,COUNT=1则为功能6,COUNT1则为功能16功能6将一个数据字写入对方存储器,功能16用来写多个存储器字 2 0110的10是什么东西啊01是地址,10是16#10,是功能16.3建议你先学习一下MODBUS的基本结构。 怎么样才能把一个实数转换成四个字节的16进制数,并把这四个字节相加求和 悬赏分:10 - 解决时间:2010-1-2609:23 在上位机里输入一个实数,怎么样才能转化成16进制的四个字节给PLC,并在PLC里对这四个字节进行累加,求累加和.请教各位大侠. 问题补充:我的协议是普通的自由口协议,是一个仪表与PLC做自由口通讯,向仪表写数据时,需要向仪表发送7个字节的数据包,最后一个字节是通讯累加和,也就是需要把前6个16进制的字节相加,溢出位忽略.这个是我的数据包格式:第一字节从机地址号第二字节命令及数据号第三字节数据高字节第四字节数据次高字节第五字节数据次低字节第六字节数据低字节第七字节通讯累加和求累加和简单,关键是把实数转化为四个字节的十六进制数。要是仪表不识别S7格式的实数就不好办了。如果通讯的仪表定义BYTE3-BYTE4-BYTE5-BYTE6为一个有符号实数,且实数格式与S7200定义相同,那么直接转移就可以了:LSM0.0MOVDVD1000,VD2002/假设VD1000为人机中的实数值, /VB2002=BYTE3/VB2003=BYTE4/VB2004=BYTE5/VB2005=BYTE6累加和LDSM0.0MOVW0,VW400/累加和结果寄存器MOVW0,VW402/数据暂存器/累加和次数为有效字节数减去3,即不计算字头字尾和校验和字节MOVD&VB2000,VD410/地址指针FORVW406,+1,VW404/循环累加和MOVB*VD410,VB403/数据放到VW402+IVW402,VW400/累加ANDW16#FF,VW400/低字节有效INCDVD410/指针指向下一个字节NEXTMOVBVB401,*VD410/保存校验和 s7-200PLC与modbus仪表如何通讯 悬赏分:20 问题为何被关闭 我想将modbus仪表采集的温度值送入s7-200PLC中,再送到wincc软件里显示,采集。可以用什么办法?主要是modbus仪表采集的温度值送入s7-200PLC这一步。有一些例子,但不详细,可否详细但说明一下具体方法。谢谢! 问题补充:如何接线?如何编程?请具体些。谢谢!直接调用MODBUS主站库指令就可以。 回答者: H.L - 初级工程师第9级 2010-1-1622:12 有“Modbus、“USS”、“PPI”、“自由通讯”(可以自己定义通讯协议)等通讯协议,加EM277可以现“MPI”、“DP”通讯协议,加CP243-1模块可以现“以太网通信”,加EM241调制解调器模块可以实现以“PPI”和“ModbusRTU”通讯协议的远程通讯。要从你的仪表支持什么通讯,就用什么通讯,这是最简单和方便的。如果以上固定的通讯方式都不支持,就只能用“自由通讯”协议,就是要知道仪表自己的通讯协议(这个仪表厂商应该有),用S7200的自通讯协议来编相应的通讯协议与仪表的通讯协议对应,这就是编程麻烦一点!S7-200PLC与智能仪表通讯一般采用MODBUS协议。请见,相关资料ModbusRTU协议在S7-200中的应用:下载/autooo/wuxiantongxun/jishu/2008-01-18/48388_2.html 直接调用MODBUS主站库程序,按仪表要求写入对应数据地址。具体要查看仪表的通讯手册定义的数据接触器地址。 如何用S7-200实现Modbus通信?9推荐说明:用下面的例程你可以在 S7-200 CPU 之间建立一个简单的 Modbus 主从通讯。这个例子是关于 Modbus 功能码 6 的(写从站保持寄存器), 也可以作为其他所支持的功能码的基本参数设置步骤:1, 2, 3, 4, 5, 15 和16 。 要求:要使用 Modbus 协议必须先获得并在 STEP 7 Micro/Win 中安装指令库。Modbus 主站协议只被 STEP 7 Micro/Win V4.0 SP5 及其以上版本支持。 1. 硬件设置 2. 参数匹配 3. 指令库的存储地址 4. 保持寄存器变量传输1. 硬件设置例程中的 Modbus 通讯是在两个 S7-200 CPU 的 0 号通讯口间进行的(最好每个 CPU 都有两个通讯口)。在主站侧也可以用相应库文件 MBUS_CTRL_P1 和 MBUS_MSG_P1通过1号通讯口通信。通讯口 1 用 Micro/WIN 与 PG 或 PC 建立连接,两个 CPU 的通讯口 0 通过 Profibus 缆进行连接(电缆的针脚 连接为3,3,8,8 - 见图 01)。 另外,需要确定逻辑地M相连 。 2. 参数匹配对于 MODBUS 通讯,主站侧需要程序库 MBUS_CTRL 和 MBUS_MSG,从站侧需要程序库 MBUS_INIT and MBUS_SLAVE。在 Micro/WIN 中您需要为主站和从站新建一个项目,程序与参数设置见图.02。必须要保证主站与从站的“Baud”和 “Parity” 的参数设置要一致,并且程序块 MBUS_MSG 中的 Slave 地址要与程序块 MBUS_INIT 中的 Addr 所设置的一致 (见图. 02)。在 Micro/WIN“系统块”中设置的通讯口 0 的波特率与 MODBUS 协议无关 (Mode = 1)。 下面的表格列出了程序块各个参数选项及其含义。主站MBUS_CTRL1) 参看 STEP 7 Micro/WIN帮助:MODBUS 主站执行MBUS_MSG 时的错误代码 。MBUS_MSG1)参看 STEP 7 Micro/WIN 帮助:MODBUS 主站执行 MBUS_MSG 时的错误代码 从站MBUS_INIT2) 最大的地址取决于所用 CPU的 类型及其最大值。3)参看 STEP 7 Micro/WIN 帮助:“MODBUS从站协议的错误代码”。 MBUS_SLAVE3)参看 STEP 7 Micro/WIN 帮助: “MODBUS从站协议的错误代码” 。 3. 库的存储地址项目完成后必须要在 Micro/WIN 中定义库的存储地址,当定义完存储区后, 要保证在任何情况下不能再被其它程序所使用 (主站侧: DataPtr + Count 从站侧:HoldStart + MaxHold)。 4. 保持寄存器值的传输将程序下载到相应的 CPU 后,可以在状态表中给主站侧的 V 存储区赋值,然后从站侧监视数值的变化。当主站的 I0.0 使能后,VW2 中的内容就被发送到从站并写入从站的 VW2 。保持寄存器值的传输见图. 04。指针 DataPtr 代表了被读的 V 区起始地址。参数 Count 指定了被写入地址 Addr = 4xxxx (保持寄存器)字的个数。相应 V 存储区的变量将被写到保持寄存器启始地址 Addr = 40002 (RW = 1)中。保持寄存器是以字为单位传输的,它与从站的 V 区地址对应。指针 HoldStart 指定了与保持寄存器起始地址 40001 相对应的V存储区的初始地址。可以按下面公式计算从站的V区目标指针:2 * (Addr - 40001) + HoldStart = 2 * (40002 - 40001) + &VB0 = &VB2 另外,要保证主站侧所要写入的数据区包含在 MaxHold 定义的数据区内:MaxHold = Addr - 40001 + Count = 40002 - 40001 + 1 = 2 关于 STEP 7 Micro/WIN MOBDUS 库的更多信息可以参看 S7-200 系统手册 和 STEP 7 Micro/WIN 帮助。modbus地址问题 悬赏分:20 - 解决时间:2009-9-310:18 Modus地址问题 由公式Modus地址=40000+(T/2+1)得VD8的Modus地址为:40005对吗?foxplc,您好,您使用的公式是正确的。不过在MODBUS中保持寄存器的单位是字,而不是双字,如果您定义的保持保持寄存器的起始地址从VB0开始,那么VW8对应的地址是40005。Modbus RTU协议在S7-200中的应用作者:发布时间:2008-01-17 14:33:15来源:繁体版 访问数: 4036 1 引言 工业控制已从单机控制走向集中监控、集散控制,如今已进入网络集约制造时代。工业控制器连网也为网络管理提供了方便。Modbus就是工业控制器的网络协议中的一种。Modbus协议是应用于电子控制器上的一1 引言 工业控制已从单机控制走向集中监控、集散控制,如今已进入网络集约制造时代。工业控制器连网也为网络管理提供了方便。Modbus就是工业控制器的网络协议中的一种。Modbus协议是应用于电子控制器上的一种通讯约规。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为主流的工业标准之一。他为符合Modbus协议的不同厂商生产的控制设备可以连成工业网络,进行集中监控。 2 Modbus RTU协议在S7-200中的应用原理 2.1 Modbus RTU协议与S7-200相互关系简介 S7-200 CPU上的通讯口Port0可以支持Modbus RTU协议,成为Modbus RTU从站。此功能是通过S7-200的自由口通讯模式实现,因此可以通过无线数据电台等慢速通讯设备传输。 如果想在S7-200 CPU与其他支持Modbus RTU的设备使用Modbus RTU协议通讯,需要由有S7-200 CPU做Modbus主站。S7-200 CPU做主站必须由用户自己用自由口模式,按相关协议编程。 在S7-200控制系统应用中,Modbus RTU从站指令库只支持CPU上的通讯0口(Port0)。要实现Modbus RTU通讯,需要Step7-Micro/WIN32 V3.2以上版本的编程软件,而且须安装Step7-Micro/WIN32 V3.2 Instruction Library(指令库)。Modbus RTU功能是通过指令库中预先编好的程序功能块实现的。 2.2 Modbus RTU协议在S7-200中应用的基本过程 (1) 首先检查S7-200控制系统中所用Micro/WIN的软件版本,应当是Step7-Micro/WIN V3.2以上版本。 (2) 检查Micro/WIN的指令树中是否存在Modbus RTU从站指令库(图1),库中应当包括MBUS_INIT和MBUS_SLAVE两个子程序。如果没有,须安装Micro/WIN32 V3.2 Instruction Library(指令库)软件包,如图1所示。图1 指令树中的库指令 (3) 编程时使用SM0.1调用子程序MBUS_INIT进行初始化,使用SM0.0调用研究MBUS_SLAVE,并指定相应参数。关于参数的详细说明,可在子程序的局部变量表中找到。示例参见图2:点击看原图 图2 调用MODBUS通讯指令库 图2中参数意义如下: 模式选择:启动/停止MODBUS,1=启动;0=停止; 从站地址:MODBUS从站地址,取值1247; 波特率:可选1200,2400,4800,9600,19200,38400,57600; 奇偶校验:0=无校验;1=奇校验;2=偶校验; 延时:附加字符间延时,缺省值为0; 最大I/Q位:参与通讯的最大I/O点数,S7-200的I/O映像区为128/128,缺省值为128; Modbus RTU协议在S7-200中的应用作者:发布时间:2008-01-17 14:33:15来源:繁体版 访问数: 4036 1 引言 工业控制已从单机控制走向集中监控、集散控制,如今已进入网络集约制造时代。工业控制器连网也为网络管理提供了方便。Modbus就是工业控制器的网络协议中的一种。Modbus协议是应用于电子控制器上的一 最大AI字数:参与通讯的最大AI通道数,可为16或32; 最大保持寄存器区:参与通讯的V存储区字(VW); 保持寄存器区起始地址:以&VBx指定(间接寻址方式); 初始化完成标志:成功初始化后置1; 初始化错误代码; MODBUS执行:通讯中时置1; 错误代码:0=无错误。 (4) 注意的问题 调用Step7-Mciro/WIN32 V3.2 Instruction Library(指令库)需要分配库指令数据区(Library Memory)。库指令数据区是相应库的子程序和中断程序所要用到的变量存储空间。如果在编程时不分配库指令数据区,编译时会产生许多相同的错误。 由子程序参数HoldStart和MaxHold指定的保持寄存器区,是在S7-200 CPU的V数据存储区中分配,此数据区不能和库指令数据区有任何重叠,否则在运行时会产生错误,不能正常通讯。注意Modbus 中的保持寄存器
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全生产课件公司名称
- 安全员技能培训课件模板
- 火车安全教育课件下载
- 家具安全课件
- 2025年系统架构设计师 真题
- 北海市银海区直属国有企业招聘考试真题及答案2022
- 安全生产风险分级管控清单编制安全技能提升试卷
- 2月份大药房店员网上试卷(3)试题及答案
- 市场营销策略与市场风险控制专项训练试卷
- 《计算机应用基础》第六章在线测试试题及答案
- 以诺书999中英对照
- TCCEAS001-2022建设项目工程总承包计价规范
- 土方开挖、基坑支护施工方案
- 小学信息化培训:AI赋能教学与教师能力提升
- 接触网全参数激光测量仪进行接触网基础数据测量作业62课件
- 学前教育就业前景及方向
- 中国电解石行业市场运行现状及投资战略研究报告
- 旅游景区管理制度大全
- 中考语文说明文阅读训练练习(含答案)
- 房地产开发质量管理职责与规范
- 电力设备维护服务企业的市场定位与营销策略
评论
0/150
提交评论