现场总线与网络化仪表实验报告要求最新 - 图文

更新时间:2023-11-05 03:04:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第一轮实验:实验一、六、七

第二轮实验:实验二、四、五、八、九

不用看实验三

现场总线与网络化仪表

实验指导书

东北大学秦皇岛分校

前 言

《现场总线与网络化仪表》是一门实践性的专业技术课程,因此必须在课堂教学的基础上配合以足够的实践性教学环节,以理论联系实际,使学生深入理解课堂知识,加强学生动手能力和分析问题解决问题的能力。本实验指导书是《工业网络技术》一书的配套教材。

该实验指导书紧密结合教材内容,以西门子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. 总结实验中的心得体会,提出对实验内容的建议或设想等

(二)发送指令(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时,可认为接收到结束字符,接收信息成功。但本实验的通信协议为Modbus RTU模式,无结束字符,可判断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个起始位(逻辑0)、8个数据位(首先发送最低有效位)、1个奇偶校验位和一个停止位(逻辑1)。 起始 1 2 3 4 5 6 7 8 校验 停止 接收的最大字符数(1到255字节) 四、实验内容

1.编写S7-200 PLC的Port1自由口通讯发送程序,并使用串口调试软件测试

成功;

2.编写S7-200 PLC的Port1自由口通讯接收程序,并使用串口调试软件测试成功;

3.制作RS485通讯电缆,连接相邻的两台S7-200 PLC的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控制器通信结果。

16 22 23

写多个寄存器 屏蔽写寄存器 读/写多个寄存器 将数值装入连续多个保持寄存器 用户不能对寄存器进行写操作 四、MODBUS传输模式

Modbus提供了两种串行传输模式——ASCII模式和RTU模式,用户选择想要的模式,包括串口通信参数(波特率、校验方式等),在配置每个控制器的时候,在一个Modbus网络上的所有设备都必须选择相同的传输模式和串口参数。 1、RTU(远程终端单元)模式

在RTU(Remote Terminal Unit-远程终端单元)模式下,一个报文中的每个字节包含两个4位的十六进制字符。这种模式的主要优点是:在同样的波特率下,它的高字符密度允许比 ASCII 方式传送更多的数据,具有比ASCII模式更高的吞吐率。图A-2所示为 RTU 模式字符中的位序列,表示传输数据每个字节的位格式。每个字符包括1个起始位(逻辑0)、8个数据位(首先发送最低有效位)、1个奇偶校验位和一个停止位(逻辑1)。其中,奇偶校验位默认为偶校验,为保证最大兼容性,也可选择奇校验或无校验。(用一个停止位填充)。 起始 1 2 3 4 5 6 7 8 校验 停止 图A-2 RTU 模式中的位序列

RTU 报文帧格式如图A-3所示,报文是通信网络交换和传输的数据单元,即站点发送请求或响应的数据块(注意:不要混淆报文帧序列和位序列)。典型的Modbus RTU报文帧没有起始位,也没有停止位,而是以至少3.5个字符时间的停顿间隔标志一帧的开始或结束。报文帧由地址域、功能域、数据域和CRC校验域构成。所有字符位由16进制0~9、A~F 组成。在 RTU 模式中,整个报文帧必须作为一个连续的数据流传输。如果在报文帧完成之前有超过1.5个字符时间的停顿间隔发生, 接收设备将刷新未完成的报文并假定下一个字节将是一个新报文的地址域。同样地,如果一个新报文在小于3.5个字符时间内紧跟前一个报文开始,接收设备将认为它是前一个报文的延续。这些都会导致传输的报文错误。

起始 地址码 8位 功能码 8位 数据段 N*8位 CRC校验 16位 结束 ≥3.5字符 ≥3.5字符 图A-3 RTU 报文帧格式

地址码指定从站的地址(0-255);功能码是向从站指示执行哪种操作;CRC校验包含两个字节,高字节在前,低字节在后;而Modbus RTU数据段的具体格式需要根据不同的通信功能来确定,常用的格式有以下几种:

(1)读数据请求报文 起始

地址码 8位 功能码 8位 数据段 N*8位 CRC校验 16位 结束 ≥3.5字符

≥3.5字符 起始地址(2字节) 数量(2字节) 以“字”为单位 图A-4 读数据请求报文

例如主站需要读取从站保持寄存器以0为起始地址的16个字,则发送一串报文:01、03、00、00、00、10、06、44(报文数据以十六进制表示),根据Modbus数据地址,实际读取的是从站地址40001开始的16个字。数据段的起始地址还需要根据功能码来确定是哪种数据地址(本例中功能码为03—读保持寄存器,起始地址0对应数据地址为40001。)

(2)读数据响应报文 起始

地址码 8位 功能码 8位 数据段 N*8位 CRC校验 16位 结束 ≥3.5字符

≥3.5字符 数量(1字节) 以“字节”为单位 响应的数据 图A-5 读数据响应报文

当从站成功接收主站发送的读数据请求指令后,需要向主站发送应答数据,数据段的格式如图A-5。从站回应的数据格式为:

01、03、20、????、CRC高位、CRC低位 32个字节应答数据

01是从站地址,03为功能码,20代表十进制32,即响应数据的数量为32字节。

(3)写数据请求报文 起始 地址码 8位 功能码 8位 数据段 N*8位 CRC校验 16位 结束 ≥3.5字符 起始地址 (2字节) ≥3.5字符 寄存器数量(2字节) 数据数量(1字节) 以“字”为单位 以“字节”为单位 写入的数据 图A-6 写数据请求报文

写数据请求是指主站向从站写数据的请求,比如需要修改从站寄存器的某些值。起始地址和数量的含义与读数据请求报文一样,写入的数据是主站需要写入从站的数据(修改的数据)。

(4)写数据响应报文 起始

地址码 8位 功能码 8位 数据段 N*8位 CRC校验 16位 结束 ≥3.5字符

≥3.5字符 起始地址(2字节) 数量(2字节) 以“字”为单位 图A-7 写数据响应报文

从站成功接收主站写数据请求后,数据修改完成,从站需要向主站发送响应,报文数据段先输入修改数据的起始地址,再输入修改数据的数量。 2、ASCII 模式

在ASCII模式中,用两个 ASCII 字符发送报文中的一个 8 位字节。报文中用特定的字符表示起始和结束。在本实验中,均采用RTU模式,故对ASCII模式不做过多介绍。ASCII报文帧格式如图A-8所示。 起始位 设备地址 功能码 数据 LRC校验 停止位 1个字符 2个字符 2个字符 0~252×2个字符 2个字符 2个字符CR、LF 图A-8 ASCII 报文帧格式

五、错误检测方法

标准的Modbus串行网络采用两种错误检测方法。第一种是奇偶校验,常用语对单个字符进行校验,第二种是帧检测,常用的有LRC和CRC两种,应用于整个消息帧。它们都是在消息发送前由主设备产生的,从设备在接收过程中检测每个字符和整个消息帧。用户要给主设备配置一预先定义的超时时间间隔,这个时间间隔要足够长,以使任何从设备都能作为正常反应。如果从设备测到一传输错误,消息将不会接收,也不会向主设备作出回应。这样超时事件将触发主设备来处理错误。发往不存在的从设备的地址也会产生超时。 1、奇偶校验

用户可以配置控制器是奇或偶校验,或无校验。这将决定了每个字符中的奇偶校验位是如何设置的。如果指定了奇或偶校验,“1”的位数将算到每个字符的位数中(ASCII模式7个数据位,RTU中8个数据位)。例如RTU字符帧中包含以下8个数据位:11000101,整个“1”的数目是4个。如果便用了偶校验,帧的奇偶校验位将是0,便得整个“1”的个数仍是4个。如果便用了奇校验,帧的奇偶校验位将是1,便得整个“1”的个数是5个。 如果没有指定奇偶校验位,传输时就没有校验位,也不进行校验检测。代替一附加的停止位填充至要传输的字符帧中。 2、LRC校验(纵向冗长检测)

使用ASCII模式,消息包括了一基于LRC方法的错误检测域。本实验均使用Modbus的RTU模式,LRC校验原理不作详细介绍。 3、CRC校验(循环冗长检测)

使用RTU模式,消息包括了一基于CRC方法的错误检测域。CRC域检测了整个消息的内容。 CRC域是两个字节,包含一16位的二进制值。它由传输设备计算后加入到消息中。接收设备重新计算收到消息的CRC,并与接收到的CRC域中的值比较,如果两值不同,则有误。

CRC是先调入一值是全“1”的16位寄存器,然后调用一过程将消息中连续的8位字节各当前寄存器中的值进行处理。仅每个字符中的8Bit数据对CRC有效,起始位和停止位以及奇偶校验位均无效。

CRC产生过程中,每个8位字符都单独和寄存器内容相或(OR),结果向最

低有效位方向移动,最高有效位以0填充。LSB被提取出来检测,如果LSB为1,寄存器单独和预置的值或一下,如果LSB为0,则不进行。整个过程要重复8次。在最后一位(第8位)完成后,下一个8位字节又单独和寄存器的当前值相或。最终寄存器中的值,是消息中所有的字节都执行之后的CRC值。 CRC添加到消息中时,低字节先加入,然后高字节。CRC校验的具体步骤请参看实验一。

本文来源:https://www.bwwdw.com/article/bta2.html

Top