现场总线与网络化仪表实验报告要求最新.docx

上传人:b****4 文档编号:24929240 上传时间:2023-06-02 格式:DOCX 页数:45 大小:792.91KB
下载 相关 举报
现场总线与网络化仪表实验报告要求最新.docx_第1页
第1页 / 共45页
现场总线与网络化仪表实验报告要求最新.docx_第2页
第2页 / 共45页
现场总线与网络化仪表实验报告要求最新.docx_第3页
第3页 / 共45页
现场总线与网络化仪表实验报告要求最新.docx_第4页
第4页 / 共45页
现场总线与网络化仪表实验报告要求最新.docx_第5页
第5页 / 共45页
点击查看更多>>
下载资源
资源描述

现场总线与网络化仪表实验报告要求最新.docx

《现场总线与网络化仪表实验报告要求最新.docx》由会员分享,可在线阅读,更多相关《现场总线与网络化仪表实验报告要求最新.docx(45页珍藏版)》请在冰豆网上搜索。

现场总线与网络化仪表实验报告要求最新.docx

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

第一轮实验:

实验一、六、七

第二轮实验:

实验二、四、五、八、九

不用看实验三

 

现场总线与网络化仪表

实验指导书

 

东北大学秦皇岛分校

 

前言

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

本实验指导书是《工业网络技术》一书的配套教材。

该实验指导书紧密结合教材内容,以西门子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主设备发出的请求服务,并且必须

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 哲学历史

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1