第一轮实验:实验一、六、七第二轮实验:实验二、四、五、八、九不用看实验三现场总线与网络化仪表实验指导书东北大学秦皇岛分校前言《现场总线与网络化仪表》是一门实践性的专业技术课程,因此必须在课堂教学的基础上配合以足够的实践性教学环节,以理论联系实际,使学生深入理解课堂知识,加强学生动手能力和分析问题解决问题的能力。
本实验指导书是《工业网络技术》一书的配套教材。
该实验指导书紧密结合教材内容,以西门子S7-200及PC机作为实验硬件,深入浅出地介绍MODBUS通信。
全书共分两部分。
第一部分基础篇,包括利用西门子S7-200库指令实现PC机与PLC之间的MODBUS通信,CRC校验的程序编写调试的实现等。
第二部分提升篇,利用自由口通信方式实现PC机与PLC之间的通信,MODBUS主从站库指令的剖析实现及调试。
对于每一个实验都给出了实验目的、实验内容、预习要求、报告要求、实验提示等。
实验提示部分我们仅给出部分文字提示或者实验程序,以作为学生自己编程时参考。
我们主张学生做实验前,充分预习准备,依靠自己在实验前编出的程序,经过实验调试改正程序,得出正确的实验结果。
这样的实验才能真正有收获,才能真正提高分析解决问题的能力。
由于编者水平有限,书中不妥之处或者错误之处在所难免,欢迎大家在使用中提出宝贵意见。
编者目录实验须知一、预习要求1.实验前认真阅读实验教材中有关内容,明确实验目的、内容和实验任务。
2.每次实验前做好充分的预习,对所需预备知识做到心中有数。
3.实验前应编好程序,并对调试过程、实验结果进行预测。
二、实验要求1.实验课请勿迟到、缺席。
2.爱护实验设备,保持清洁,不要随意更换设备。
3.认真完成各项实验任务。
4.做硬件实验时,严禁带电操作,即所有的接线、改线及拆线操作均应在不带电的状态下进行。
5.发生事故时应立即切断电源并马上告知实验老师,检查原因,吸取教训。
6.实验完毕后,请整理好实验设备,班级组织同学打扫实验室卫生。
三、报告要求每次实验后,应提交一份实验报告,报告应包括以下内容:1.实验名称、实验人名字、班级学号、实验时间、所用设备号。
2.实验目的、任务。
3.完整的电气连接图、程序流程图。
4.实验调试过程,包括实验过程中遇到的问题及解决办法、实验结果分析等并附上最终的程序清单(带适当的注释)5.总结实验中的心得体会,提出对实验内容的建议或设想等实验一CRC校验实验一实验目的1.熟悉西门子S7-200编程软件SETP7-Micro/WIN SP6的编程和调试方法。
2.掌握CRC校验的原理和在S7-200 PLC中的实现方法。
二实验设备计算机、西门子S7-200 PLC、RS485编程下载线。
三实验原理(一)CRC校验基本原理校验码的具体生成过程为:假设被传输的数据流为BYTE[n]BYTE[n-1].... BYTE[1]BYTE[0],将此数据流看成系数为0或1的多项式M(x)。
收发双方约定一个生成多项式G(x)。
本实验中,多项式设为G(x)= X8+X7+X2+1。
在发送端将M(x)所对应的位串左移8位后按模2除法除以G(x)所对应的位串,余数为8位,称为CRC校验码,将CRC校验码附加在被传输的数据流后边,则被传输的带校验码的数据流为BYTE[n]BYTE[n-1]....BYTE[1]BYTE[0]CRC。
在接收端,也进行同样的除法过程,如果接收端的除法结果不为0,则表明数据传输产生了差错,数据接收端自动请求重发,实现纠错。
(二)CRC校验码生成方法和步骤1. 要传输的数据内容和数据字节长度已知。
2.将被传输的数据流左移8位(共n+2个字节),高8位BYTE[n]放入一个长度为8的寄存器中。
3.将寄存器左移1位(寄存器的最低位从下一个字节最高位获得),如果移出位为1,将寄存器中的值与生成多项式G(x)的简记式进行异或运算,运算结果存回寄存器中。
G(x)对应的位串共9位,其最高位总是1,G(x)的简记式为其后8位,为10000101。
如果移出位为0,则仅将寄存器左移1位(寄存器的最低位从下一个字节获得)。
4.重复第3步,直到扩展后的数据流(n+2个字节)全部移入寄存器。
5.寄存器中的值则为CRC校验码。
四实验内容1.根据CRC校验码生成原理编写一段程序,调试并要求能够实现正确计算出任意长度数据串的CRC校验码。
2.要求用梯形图编程。
五实验步骤自行填写关键步骤提示:下载调试。
点击下载成功后,使PLC处于运行状态,点击工具框中的“状态表监控”按钮,在地址栏中输入需要监控的数据地址,并将格式设置为十六进制。
若需要对某一地址空间赋值,可在新值栏中输入数值,并单击工具栏中的“全部写入”按钮,新值就被赋予到相应的地址。
六实验结果1.分析《工业网络技术》P50的CRC校验码计算过程,并与CRC校验码的生成方法和步骤相对应,并将分析结果告知实验教师。
2.分析实验指导书给出的CRC-16校验源代码,并与CRC校验码的生成方法和步骤相对应,并将分析结果告知实验教师。
3.写出带有注释的CRC-8校验程序源代码和运行结果。
4.手算出相同的CRC校验码。
七、实验源程序(CRC-16)Network 1LD SM0.0MOVW VW301,VW400 //被传输数据高16位送入16位寄存器MOVW 16#8005,VW100 //VW100中存入生成多项式MOVD &VB303,AC1 //被传输数据下一个字节的地址存入AC1 MOVB *AC1,VB20 //VB303中的被传输数据第3个字节存入VB20 MOVB VB300,VB10 //VB300中被传输数据流的字节数送入VB10Network 2LD SM0.0FOR VW2,1,VW9 //外循环次数为被传输数据的字节数VB10Network 3LD SM0.0FOR VW0,1,8 //内循环次数为8位Network 4LD SM0.0SHRB V20.7,V401.0,16 //将V303.7移入V401.0Network 5LD SM1.1XORW VW100,VW400Network 6LD SM0.0SLB VB20,1 //将VB20左移一位Network 7NEXTNetwork 8LD SM0.0INCB AC1MOVB *AC1,VB20Network 9NEXT实验二自由口通信实验一实验目的1.掌握S7-200的发送指令(XMT)和接收指令(RCV)的使用,包括指令的编程、状态字、控制字和工作原理。
2.掌握发送完成中断和接收完成中断程序的编写,熟悉S7-200编程的中断调用指令。
3.掌握串口调试助手软件的使用。
二实验设备计算机、西门子S7-200、RS485编程下载线。
三实验原理(一)自由口通信S7-200 CPU的通信口可以设置为自由口模式,选择自由口模式后,用户程序可以完全控制通信端口的操作,通信协议也完全受用户程序控制。
CPU通信口工作在自由口模式时,就不支持其他通信协议(如PPI),此通信口不能再与编程软件通信。
CPU处于停止模式时,自由口不能工作,编程软件才可以与CPU 通信。
自由口通信的核心指令是发送(XMT)和接收(RCV)指令,分别实现数据的发送和接收。
发送指令是把缓冲区的数据通过通信口发送出去;接收指令是从通信口把数据接收到缓冲区里。
发送缓冲区的格式如图所示:缓冲区的起始字节地址存放的是发送或者接收字节的个数,信息字符从首地址的下一个地址开始存放。
(二)发送指令(XMT)和接收指令(RCV)的操作原理发送指令和接收指令可以在编程软件的指令库——通信指令中调用。
指令的梯形图结构如图所示:发送/接收指令使用边沿触发,TBL输入缓冲区首地址;PORT输入通信端口号。
发送指令激活后,会把缓冲区数据通过通信口发送出去;接收指令激活后,会进入接收等待状态,如果没有数据进来,会一直保持接收等待状态(监视通信口)。
如果有数据过来,且满足设置的消息起始条件,会进入消息接收状态。
如果满足设置的消息结束条件,则结束消息,然后退出接收状态。
在本实验中,S7-200CPU作为从站,使用PC机作为主站,借助串口调试助手软件向从站发送请求数据。
下面介绍S7-200自由口通信的编程方式:(1)S7-200CPU作为主站:1.根据协议内容定义好发送缓冲区;2.在首次扫描中设置相关通信参数;3.在首次扫描中连接“接收完成中断”和“发送完成中断”(对应端口0,这两个中断的中断号分别为23和9);4.启用发送指令(XMT),把缓冲区数据发送出去;5.在发送完成中断程序里,调用接收指令(RCV)。
(2)S7-200CPU作为从站:1.在首次扫描中设置相关通信参数;2.在首次扫描中连接“接收完成中断”和“发送完成中断”;3.启用接收指令(RCV),等待主站发送过来的请求;4.在接收完成中断子程序里,组织相应的数据到缓冲区里,调用发送指令(XMT)。
(三)实验用到的状态字和控制字下面介绍的发送/接收指令的状态字和控制字。
更多详细内容请查看《电气控制与PLC应用技术》P238。
(1)通信口参数控制字SMB30/SMB130:编程过程中,在使用接收指令和发送指令之前,需要对通信口的参数进行设置,来选择通信口的校验方式、波特率、工作模式等,通过SMB30进行设置:pp--校验选择:00=不校验;01=偶校验;10=不校验;11=奇校验d--每个字符的数据位:0=每个字符8位;1=每个字符7位bbb--自由口波特率:000=38400;001=19200;010=9600;011=4800;100=2400;101=1200;110=115.2K;111=57.6Kmm:协议选择00=PPI/从站模式;01=自由口模式;10=PPI /主站模式;11=保留(2)接收指令的状态字和控制字在使用接收指令(RCV)时需要对一些系统存储区的字节获取或设置,即接收指令的状态字和控制字。
1、SMB86/SMB186SMB86/SMB186是接收信息的状态字节,是只读的,在程序中,可以通过获取该状态,来判断接收状态是否完成,SMB86/SMB186的具体状态格式如下:n: 1=接收信息功能终止:用户发送禁止命令r: 1=接收信息功能终止:输入参数错误或无起始或结束条件e: 1=收到结束字符t: 1=接收信息功能终止:超时c: 1=接收信息功能终止:超出最大字符数p: 1=接收信息功能终止:奇偶校验错误当通信协议包含有结束字符时,可获取SMB86/SMB186的状态,当为16#20时,即e位为1时,可认为接收到结束字符,接收信息成功。
但本实验的通信协议为Modbus RTU模式,无结束字符,可判断SMB86/SMB186是否等于4,即t位等于1。