实验报告7Modbus通信.doc_第1页
实验报告7Modbus通信.doc_第2页
实验报告7Modbus通信.doc_第3页
实验报告7Modbus通信.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Task Report1. Purpose实验目的1、学习Modbus通信协议的原理和使用方法2. Equipment实验设备 Hardware and firmware硬件及固件设备名称数量订货号224XP CPU DC/DC/DC SIMATIC S7-200, CPU26ES7 214-1AD23-0XB0SIMATIC S7-200, PC/PPI CABLE26ES7 901-3CB30-0XA0SITOP SMART POWER DC 24V-5A16EP1 333-2AA01-Q627FROFIBUS DP16XV1 830-0EH10Software and version软件及版本名称版本STEP7 Micro/WINV4.0 SP93. Process and emphases实验流程与重点难点 3.1 实验内容编程实现主站与从站之间的数据交换3.2 实验过程1) 电气连接如图1所示,将电源提供的24V电压分别于PLC的24V电源接入端口相连,并且将输入方向的M与1M端口短接。PPI CABLE端口与PLC 端口1(port1)相连,通过PPI电缆实现在线监控。PROFIBUS通讯电缆分别与两个PLC的port0相连(Modbus通讯使用的是port0)。用导线将输入端口IB0和IB1全部引出。图1 S7-200组成示意图2) 端口定义主站程序中,I0.0用于触发读写命令。从站程序中,将IB0和IB1输入状态传送给主站,在主站程序中通过状态表读出。从站接收主站发送的数值并且赋值给QB0和QB1,观察指示灯的变化。3) 程序设计数据寄存器的通讯实验(读写PLC V区数据的循环通讯)数据寄存器的Modbus地址为4000149999,要实现主站与从站之间的循环通讯,可以将V区的数据作为发送和接收的对象。主站给从站V区的某一范围内写入字节,由从站对接收的字节做处理(加、减变化)后再次由主站读取,实现循环通讯(在状态表中观察选中的V区数值是否能够递增或递减变化)。主站程序设计:Modbus RTU主站初始化与控制程序如图2所示,其中EN为使能信号,Mode为1时,相当于选中自由口通讯模式(与自由口通讯实验中给SMB30赋值的原理一样)。波特率选择9600bps,校验方式选择无校验,Timeout为主站等待从站响应时间,一般经三次握手后从站还没有响应,则通讯超时。初始化完成后Done信号跳变为1,一般可以用M0.0启动 MBUS_MSG 的读写操作。图2 Modbus RTU主站初始化与控制程序图Modbus读写程序如图3、图4所示,因为Modbus通信的读和写不能同时进行,因此每一个读写功能(MBUS_MSG)都用上一个 MBUS_MSG 指令的 Done 完成位来激活,以保证所有读写指令循环进行。RW为1时,主站将VB1000为首地址的1个字(count代表字节数)发送到从站40001地址对应的V区中,写指令完成后,M2.0为1,将M0.1和M2.1复位,断开写指令,同时触发读指令运行。RW为0时,主站将从站40001地址对应的V区数值写入VB1000为首地址的存储器中,读指令完成后,M2.1为1,将M2.0复位,断开读指令,同时触发写指令运行。以上过程可以充分确保通讯在同一时刻只能有一个读写功能。图3 主站写程序图4 主站读程序从站程序设计:从站主要负责对写入的V区数据执行INC_B指令。从站初始化指令如图5所示,MBUS_INIT指令被用于启用和初始化或禁止Modbus通讯。在使用MBUS_SLAVE指令之前,必须正确执行MBUS_INIT指令(该条指令只需触发接通一次,可用SM0.1)。Mode为1,代表选择自由口通讯模式;Addr代表设置的从站地址,与主站指令MBUS_MSG中的slave要一致;Baud为波特率;Parity为设置的校验位;Delay与主站指令MBUS_CTRL中Timeout不同,Delay代表延迟时间;MaxIQ为参与通信的最大I/O点数,S7-200的I/O映像区为128/128;MaxAI为参与通信的最大AI通道数,可为16或32(有些时候选择的PLC版本过低,MaxAI写入的数据位32时会报错);MaxHold为最大保持寄存器区,即参与通信的V存储区字(VW);HoldStart为保持寄存器区起始地址,以&VBx指定,例如主站中写入的地址为40001,从站Holdstart为VB1000,则V区读写首地址为VB1000;如果主站写入地址为40010,从站Holdstart为VB1000,则V区读写首地址为VB1018。因为主站设置读写的保持寄存器区地址为40010,而从站设定保持寄存器区的起始地址为VB1000,根据TT+2*(xxxx1)计算到从站V区对应的地址。其中T为Holdstart的值,xxxx为保持寄存器区的地址偏移量(400014xxxx)。图5 Modbus从站初始化指令从站完成初始化后,根据MBUS_SLAVE的完成信号,对接收到的字节加1,这样可以通过观察字节的变化判断通讯是否循环运行。4. What I have learned心得与体会1、 本次实验除了数据寄存器区的实验,也对数字量输入输出的实验进行了验证,但之后发现程序写的不对,我在主站中地址仍然写的是V区的地址(40001),只是在从站中将I0、I1口的数据赋值给VB1000、VB1001,实际这种还是通过读取数据寄存器的方法。下周有时间重新做下实验,使用区间0000109999和1000119999做次实验。2、 实验中我犯了个低级错误,在MBUS_MSG的Error指令输出口,我只用了中间寄存器MB0,但在其他位控制时,我仍然用M0.0和M0.1来控制,导致我程序执行不正常,后经检查才发现MB0混用。在以后编写程序中,要防止中间寄存器,VB的重复使用。3、 一般在用到置位、复位指令时,可以与上升沿指令|P|一起使用。4、 因为Modbus一般与第三方仪表进行通讯,所以40001区使用最多。Modbus只能有一个主站,当一个网络上有多个PLC时,只能有一个PLC为主站。5、 多个PLC或PLC与多个仪表在一个网络时,除了硬件连接,站地址不能重复冲突,波特率、奇偶校验位等必须一致。6、 自由口通讯没有主站,只有发送方和接收方,而Modbus有主从的说法。7、 在做Modbus通信实验时,有个库存储区的概念,如果占用或没有分配库存储区,程序在编译时会报错。一般在编程软件的左侧

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论