现场总线与网络化仪表实验报告要求最新.docx
《现场总线与网络化仪表实验报告要求最新.docx》由会员分享,可在线阅读,更多相关《现场总线与网络化仪表实验报告要求最新.docx(45页珍藏版)》请在冰豆网上搜索。
![现场总线与网络化仪表实验报告要求最新.docx](https://file1.bdocx.com/fileroot1/2023-6/2/7ff3d807-afad-4617-a412-856abf31cd14/7ff3d807-afad-4617-a412-856abf31cd141.gif)
现场总线与网络化仪表实验报告要求最新
第一轮实验:
实验一、六、七
第二轮实验:
实验二、四、五、八、九
不用看实验三
现场总线与网络化仪表
实验指导书
东北大学秦皇岛分校
前言
《现场总线与网络化仪表》是一门实践性的专业技术课程,因此必须在课堂教学的基础上配合以足够的实践性教学环节,以理论联系实际,使学生深入理解课堂知识,加强学生动手能力和分析问题解决问题的能力。
本实验指导书是《工业网络技术》一书的配套教材。
该实验指导书紧密结合教材内容,以西门子S7-200及PC机作为实验硬件,深入浅出地介绍MODBUS通信。
全书共分两部分。
第一部分基础篇,包括利用西门子S7-200库指令实现PC机与PLC之间的MODBUS通信,CRC校验的程序编写调试的实现等。
第二部分提升篇,利用自由口通信方式实现PC机与PLC之间的通信,MODBUS主从站库指令的剖析实现及调试。
对于每一个实验都给出了实验目的、实验内容、预习要求、报告要求、实验提示等。
实验提示部分我们仅给出部分文字提示或者实验程序,以作为学生自己编程时参考。
我们主张学生做实验前,充分预习准备,依靠自己在实验前编出的程序,经过实验调试改正程序,得出正确的实验结果。
这样的实验才能真正有收获,才能真正提高分析解决问题的能力。
由于编者水平有限,书中不妥之处或者错误之处在所难免,欢迎大家在使用中提出宝贵意见。
编者
实验须知
1、预习要求
1.实验前认真阅读实验教材中有关内容,明确实验目的、内容和实验任务。
2.每次实验前做好充分的预习,对所需预备知识做到心中有数。
3.实验前应编好程序,并对调试过程、实验结果进行预测。
2、实验要求
1.实验课请勿迟到、缺席。
2.爱护实验设备,保持清洁,不要随意更换设备。
3.认真完成各项实验任务。
4.做硬件实验时,严禁带电操作,即所有的接线、改线及拆线操作均应在不带电的状态下进行。
5.发生事故时应立即切断电源并马上告知实验老师,检查原因,吸取教训。
6.实验完毕后,请整理好实验设备,班级组织同学打扫实验室卫生。
3、报告要求
每次实验后,应提交一份实验报告,报告应包括以下内容:
1.实验名称、实验人名字、班级学号、实验时间、所用设备号。
2.实验目的、任务。
3.完整的电气连接图、程序流程图。
4.实验调试过程,包括实验过程中遇到的问题及解决办法、实验结果分析等并附上最终的程序清单(带适当的注释)
5.总结实验中的心得体会,提出对实验内容的建议或设想等
实验一CRC校验实验
一实验目的
1.熟悉西门子S7-200编程软件SETP7-Micro/WINSP6的编程和调试方法。
2.掌握CRC校验的原理和在S7-200PLC中的实现方法。
二实验设备
计算机、西门子S7-200PLC、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校验码。
7、实验源程序(CRC-16)
Network1
LDSM0.0
MOVWVW301,VW400//被传输数据高16位送入16位寄存器
MOVW16#8005,VW100//VW100中存入生成多项式
MOVD&VB303,AC1//被传输数据下一个字节的地址存入AC1
MOVB*AC1,VB20//VB303中的被传输数据第3个字节存入VB20
MOVBVB300,VB10//VB300中被传输数据流的字节数送入VB10
Network2
LDSM0.0
FORVW2,1,VW9//外循环次数为被传输数据的字节数VB10
Network3
LDSM0.0
FORVW0,1,8//内循环次数为8位
Network4
LDSM0.0
SHRBV20.7,V401.0,16//将V303.7移入V401.0
Network5
LDSM1.1
XORWVW100,VW400
Network6
LDSM0.0
SLBVB20,1//将VB20左移一位
Network7
NEXT
Network8
LDSM0.0
INCBAC1
MOVB*AC1,VB20
Network9
NEXT
实验二自由口通信实验
一实验目的
1.掌握S7-200的发送指令(XMT)和接收指令(RCV)的使用,包括指令的编程、状态字、控制字和工作原理。
2.掌握发送完成中断和接收完成中断程序的编写,熟悉S7-200编程的中断调用指令。
3.掌握串口调试助手软件的使用。
二实验设备
计算机、西门子S7-200、RS485编程下载线。
三实验原理
(一)自由口通信
S7-200CPU的通信口可以设置为自由口模式,选择自由口模式后,用户程序可以完全控制通信端口的操作,通信协议也完全受用户程序控制。
CPU通信口工作在自由口模式时,就不支持其他通信协议(如PPI),此通信口不能再与编程软件通信。
CPU处于停止模式时,自由口不能工作,编程软件才可以与CPU通信。
自由口通信的核心指令是发送(XMT)和接收(RCV)指令,分别实现数据的发送和接收。
发送指令是把缓冲区的数据通过通信口发送出去;接收指令是从通信口把数据接收到缓冲区里。
发送缓冲区的格式如图所示:
计数
起始字符
M
E
S
S
A
G
E
结束字符
信息字符
发送/接收字节个数
缓冲区的起始字节地址存放的是发送或者接收字节的个数,信息字符从首地址的下一个地址开始存放。
(二)发送指令(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进行设置:
p
p
d
b
b
b
m
m
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.6K
mm:
协议选择
00=PPI/从站模式;01=自由口模式;10=PPI/主站模式;11=保留
(2)接收指令的状态字和控制字
在使用接收指令(RCV)时需要对一些系统存储区的字节获取或设置,即接收指令的状态字和控制字。
1、SMB86/SMB186
SMB86/SMB186是接收信息的状态字节,是只读的,在程序中,可以通过获取该状态,来判断接收状态是否完成,SMB86/SMB186的具体状态格式如下:
n
r
e
0
0
t
c
p
n:
1=接收信息功能终止:
用户发送禁止命令
r:
1=接收信息功能终止:
输入参数错误或无起始或结束条件
e:
1=收到结束字符
t:
1=接收信息功能终止:
超时
c:
1=接收信息功能终止:
超出最大字符数
p:
1=接收信息功能终止:
奇偶校验错误
当通信协议包含有结束字符时,可获取SMB86/SMB186的状态,当为16#20时,即e位为1时,可认为接收到结束字符,接收信息成功。
但本实验的通信协议为ModbusRTU模式,无结束字符,可判断SMB86/SMB186是否等于4,即t位等于1。
若t为等于1,可认为接收超时,信息接收结束。
超时的时间在SMW92/SMW192中设置。
2、SMB87/SMB187
SMB87/SMB187是接收信息的控制字节,具体模式为:
en
sc
ec
il
c/m
tmr
bk
0
en:
0=禁止接收信息功能;1=允许接收信息功能
sc:
0=忽略SMB88或SMB188(分别对应端口0和端口1,下同);
1=使用SMB88或SMB188的值检测起始信息
ec:
0=忽略SMB89或SMB189;1=使用SMB89或SMB189的值检测结束信息
il:
0=忽略SMW90或SMW190;1=使用SMW90或SMW190值检测空闲状态
c/m:
0=定时器是内部字符定时器;1=定时器是信息定时器
tmr:
0=忽略SMW92或SMW192;
1=当SMW92或SMW192中的定时时间超出时终止接收
bk:
0=忽略中断条件;1=用中断条件作为信息检测的开始
3、其他控制字节的状态如下表示:
SMB88/SMB188
信息字符的开始
SMB89/SMB189
信息字符的结束
SMW90/SMW190
空闲线时间设定,按毫秒设定,空闲线时间溢出后接受的第一个字符是新的信息开始字符,SMB90是最高有效字节,SMB91是最低有效字节
SMW92/SMW192
中间字符/信息定时器溢出值,按毫秒设定,若超出这个时间段,则终止接收信息,SMB92是最高有效字节,SMB93是最低有效字节
SMB94/SMW194
接收的最大字符数(1到255字节)
(四)字符格式
每个字符包括1个起始位(逻辑0)、8个数据位(首先发送最低有效位)、1个奇偶校验位和一个停止位(逻辑1)。
起始
1
2
3
4
5
6
7
8
校验
停止
四、实验内容
1.编写S7-200PLC的Port1自由口通讯发送程序,并使用串口调试软件测试成功;
2.编写S7-200PLC的Port1自由口通讯接收程序,并使用串口调试软件测试成功;
3.制作RS485通讯电缆,连接相邻的两台S7-200PLC的Port0端口,完成数据通讯。
两终端节点的接头开关应打到ON状态,中间节点的接头开关应打到OFF状态。
4.通讯参数设置:
波特率9600bps,1位起始位,8位数据位,1位停止位,无奇偶校验位。
接收起始条件为空闲线时间大于3.5个字符,停止条件为信息定时器时间大于50个字符。
五、实验步骤
(请自行补充完整)
关键步骤提示---S7-200控制器作为从站时与串口通信软件的调试步骤:
1.在与串口调试软件连接调试时,首先要将S7-200控制器打到STOP模式,此时,控制器COM1以PPI协议与PC机进行通信,然后将程序下载到S7-200控制器中,保持该控制器为STOP模式。
2.关闭S7-200编程软件,释放该软件所占用的PC机串口COM1。
3.打开串口调试软件,选择PC机串口COM1,选择16进制(Hex)发送/显示数据。
4.将S7-200控制器打到RUN模式,此时,控制器COM1以自由口协议与PC机进行通信。
5.将拟发送的数据写入串口调试软件的发送区,点击手动发送。
六、实验结果
1.编写并调试S7-200主站程序、从站程序,并对其进行详细注释。
2.写出S7-200与串口调试软件的通信结果。
3.写出两台S7-200控制器通信结果。
实验三Modbus指令库调用实验
一、实验目的
1.学习Modbus指令库的用法,掌握指令库各输入输出端口的意义。
2.学习Modbus指令库的编程,应用指令库实现两台S7-200PLC的主从模式通信,实现不同功能。
3.结合实验二,分析Modbus指令库的通信原理和编程方法。
二、实验设备
计算机、两台西门子S7-200PLC、RS485接头、线缆。
三、实验原理
西门子公司专门为ModbusRTU通信开发了指令库,极大地简化了ModbusRTU通信的开发,以便于快速实现相关应用。
ModbusRTU指令库包括主站指令库和从站指令库,通过ModbusRTU主站指令库,S7-200PLCCPU可作为Modbus主站,实现与ModbusRTU从站的通信任务;ModbusRTU从站指令库,使得S7-200可作为ModbusRTU中的从站设备集成到Modbus网络中,以实现与Modbus主站设备的通信。
使用Modbus指令库需要注意以下几点:
1.使用指令库前,需要将其安装到STEP7-Micro/WIN中。
2.目前只出了针对端口0和端口1的ModbusRTU主站指令库ModbusMasterPort0和ModbusMasterPort1、以及针对端口0的ModbusRTU从站指令库,因此只能利用指令库实现端口0的ModbusRTU主/从站通信,本实验的指令库都是针对端口0操作。
3.一旦CPU端口被用于ModbusRTU主/从站协议通信时,该端口就无法用于任何其他用途,包括与STEP7-Micro/WIN通信。
下面介绍ModbusRTU指令库的具体用法。
(1)Modbus主站指令库
Modbus主站指令库包括两台指令:
MBUS_CTRL指令和MBUS_MSG指令。
MBUS_CTRL指令用于初始化主站通信,MBUS_MSG指令用于启动对Modbus从站的请求并处理应答。
1.MBUS_CTRL指令
MBUS_CTRL指令用于S7-200端口0,可初始化、监视或禁用Modbus通讯。
在使用MBUS_MSG指令之前,必须正确执行MBUS_CTRL指令。
指令完成后立即设定“完成”为,才能继续执行下一条指令。
MBUS_CTRL指令在每次扫描且EN输入打开时执行。
该指令必须在每次扫描时被调用,以允许监视随MBUS_MSG指令启动的任何突出消息的进程。
除非每次调用MBUS_CTRL,否则Modbus主设备协议将不能正确运行。
MBUS_CTRL指令的编程图如图3-1示,各个输入输出端口的意义如下:
EN使能:
必须保证每一扫描周期都被使能(使用SM0.0)
Mode模式参数:
为1时,使用Modbus协议功能;为0时恢复为系统PPI协议
Baud波特率参数:
支持的通讯波特率为1200,2400,4800,9600,19200,38400,57600,115200
Parity奇偶校验参数:
该参数设为与从站奇偶校验相匹配
校验方式选:
0=无校验;1=奇校验;2=偶校验
图3-1
Timeout超时参数:
主站等待从站响应的时间,以毫秒为单位,典型的设置值为1000毫秒(1秒),允许设置的范围为1-32767,该参数应该设置的足够大,以便从站有时间进行应答
Done完成位:
MBUS_CTRL指令完成时,该位输出为1。
可以用该位启动MBUS_MSG读写操作
Error错误输出代码:
该位由反应执行该指令的结果的特定数字构成(只有在Done位为1时有效)
输出代码含义:
0=无错误;1=奇偶校验选择非法;
2=波特率选择非法;3=超时选择非法;4=模式选择非法
2.MBUS_MSG指令
MBUS_MSG指令用于启动对Modbus从站的请求并处理应答,当EN输入和First输入都为1时,MBUS_MSG指令启动对从站的请求。
发送请求、等待应答并处理应答通常需要多次扫描,EN输入必须打开已启用请求的发送,并应该保持打开直到“完成”位被置位。
一次只能激活一条MBUS_MSG指令。
如果启用多条MBUS_MSG指令,则将处理所执行的首条指令,之后所有的指令将中止并产生错误代码6。
MBUS_MSG指令的编程图如图3-2示,各输入输出端口意义如下:
EN使能:
同一时刻只能有一个读写功能(即MBUS_MSG)
使能,建议每一个读写功能(即MBUS_MSG)都用上一个MBUS_MSG指令的Done完成位来激活,以保证所有读写指令循环进行
First读写请求位:
每一个新的读写请求必须使用脉冲触发
Slave从站地址位:
选择从站地址,允许范围是1到247
RW读写参数:
指定是否要读取或写入消息,开关量输出和图3-2
保持寄存器支持读和写功能,开关量输入和模拟量输入只支持读功能
0=读;1=写
Addr读写从站的数据地址,选择读写的数据类型:
00001至09999——离散量输出(线圈)
10001至19999——离散量输入(触点)
30001至39999——模拟量输入(输入寄存器)
40001至49999——保持寄存器
Count计数参数:
指定在请求中读取或写入的数据元素的数目(位或字的个数),每一个MBUS_MSG指令可读/写的最大数据量为120个字
DataPtr数据指针:
1.如果是读指令,读回的数据放到这个数据区中
2.如果是写指令,要写出的数据放到这个数据区中
Done读写功能完成位:
该位在发送请求和接收应答时关闭,在应答完成或指令因错误而终止时打开
Error错误输出代码:
只有在Done位为1时,错误代码才有效
0=无错误;1=响应校验错误;
2=保留,暂未启用;3=接收超时(从站无响应);
4=请求参数错误(slaveaddress,Modbusaddress,count,RW);
5=Modbus自由口未使能;6=Modbus正在忙于其它请求;
7=响应错误(响应不是请求的操作);8=响应CRC校验和错误;
101=从站不支持请求的功能;102=从站不支持数据地址;
103=从站不支持此种数据类型;104=从站设备故障;
105=从站接受了信息,但是响应被延迟;106=从站忙,拒绝了该信息;
107=从站拒绝了信息;108=从站存储器奇偶错误
(1)Modbus从站指令库
西门子Modbus从站指令库包括两条指令:
MBUS_INIT指令和MBUS_SLAVE指令。
MBUS_INIT指令用于启用和初始化或禁止Modbus通信。
MBUS_SLAVE指令用于响应Modbus主设备发出的请求服务。
1.MBUS_INIT指令
MBUS_INIT指令可以启用、初始化或禁止Modbus从站通信。
在使用MBUS_SLAVE指令之前,必须正确执行MBUS_INIT指令,指令完成后立即设定“完成”位,才能继续执行下一条指令。
MBUS_INIT指令的编程图如图3-3示:
EN:
指令使能位
Mode模式选择:
启动/停止Modbus从站通信,0=停止,1=启动
Addr从站地址:
Modbus从站地址,取值范围1到247
Baud波特率:
可选择1200,2400,4800,9600,19200,38400,57600,115200
Parity奇偶校验:
0=无校验;1=奇校验;2=偶校验
Delay延时:
附加字符间延时,缺省值为0图3-3
MaxIQ最大I/Q位:
参与通信的最大I/O点数,S7-200的I/O映像区为128/128,缺省值为128
MaxHold设定共Modbus地址4xxxx使用的V存储器中的字保持寄存器数目,可为16或32
HoldStart保持寄存器区起始地址:
以&VBx指定(间接寻址方式)
Done初始化完成标志位:
成功初始化后置1
Error初始化错误代码,具体含义如下:
0=无错误;1=内存范围错误;2=波特率或奇偶校验非法;
3=从属地址非法;4=Modbus参数值非法;
5=保持寄存器与Modbus从属符号重叠;6=收到奇偶校验错误;
7=收到CRC错误;8=功能请求非法/功能不受支持;
9=请求中的内存地址非法;10=从属功能未启用
2.MBUS_SLAVE指令
MBUS_SLAVE指令被用于为Modbus主设备发出的请求服务,并且必须