实验报告6自由口通信

2024-04-11

实验报告6自由口通信(共2篇)

篇1:实验报告6自由口通信

西门子s7-200自由口通信总结

西门子S7-200CPU的通信口可以设置为自由口模式。选择自由口模式后,用户程序就可以完全控制通信端口的操作,通信协议也完全受用户程序控制。

S7-200CPU上的通信口在电气上是标准的RS-485半双工串行通信口。此串行字符通信的格式可以包括:

一个起始位

7或8位字符(数据字节)

一个奇/偶校验位,或者没有校验位

一个停止位

自由口通信速波特率可以设置为1200、2400、4800、9600、19200、38400、57600或112500。

凡是符合这些格式的串行通信设备,理论上都可以和S7-200CPU通信。

自由口模式可以灵活应用。Micro/WIN的两个指令库(USS和ModbusRTU)就是使用自由口模式编程实现的。

在进行自由口通信程序调试时,可以使用PC/PPI电缆(设置到自由口通信模式)连接PC和CPU,在PC上运行串口调试软件(或者Windows的HyperTerminal-超级终端)调试自由口程序。

USB/PPI电缆和CP卡不支持自由口调试。

自由口通信要点

应用自由口通信首先要把通信口定义为自由口模式,同时设置相应的通信波特率和上述通信格式。用户程序通过特殊存储器SMB30(对端口0)、SMB130(对端口1)控制通信口的工作模式。详见下图

CPU通信口工作在自由口模式时,通信口就不支持其他通信协议(比如PPI),此通信口不能再与编程软件Micro/WIN通信。CPU停止时,自由口不能工作,Micro/WIN就可以与CPU通信。

通信口的工作模式,是可以在运行过程中由用户程序重复定义的。

如果调试时需要在自由口模式与PPI模式之间切换,可以使用SM0.7的状态决定通信口的模式;而SM0.7的状态反映的是CPU运行状态开关的位置(在RUN时SM0.7=“1”,在STOP时SM0.7=“0”)

自由口通信的核心指令是发送(XMT)和接收(RCV)指令。在自由口通信常用的中断有“接收指令结束中断”、“发送指令结束中断”,以及通信端口缓冲区接收中断。

与网络读写指令(NetR/NetW)类似,用户程序不能直接控制通信芯片而必须通过操作系统。用户程序使用通信数据缓冲区和特殊存储器与操作系统交换相关的信息。

XMT和RCV指令的数据缓冲区类似,起始字节为需要发送的或接收的字符个数,随后是数据字节本身。如果接收的消息中包括了起始或结束字符,则它们也算数据字节。

调用XMT和RCV指令时只需要指定通信口和数据缓冲区的起始字节地址。

XMT和RCV指令与NetW/NetR指令不同的是,它们与网络上通信对象的“地址”无关,而仅对本地的通信端口操作。如果网络上有多个设备,消息中必然包含地址信息;这些包含地址信息的消息才是XMT和RCV指令的处理对象。

由于S7-200的通信端口是半双工RS-485芯片,XMT指令和RCV指令不能同时有效。

XMT和RCV指令

XMT(发送)指令的使用比较简单。RCV(接收)指令所需要的控制稍多一些。

RCV指令的基本工作过程为:

在逻辑条件满足时,启动(一次)RCV指令,进入接收等待状态

监视通信端口,等待设置的消息起始条件满足,然后进入消息接收状态

如果满足了设置的消息结束条件,则结束消息,然后退出接收状态

所以,RCV指令启动后并不一定就接收消息,如果没有让它开始消息接收的条件,就一直处于等待接收的状态;如果消息始终没有开始或者结束,通信口就一直处于接收状态。这时如果尝试执行XMT指令,就不会发送任何消息。

所以确保不同时执行XMT和RCV非常重要,可以使用发送完成中断和接收完成中断功能,在中断程序中启动另一个指令。

在《S7-200系统手册》和Micro/WIN在线帮助中关于XMT和RCV指令的使用有一个例子。这个例子非常经典,强烈建议学习自由口通信时先做通这个例子。例程,见下图

字符接收中断

S7-200CPU提供了通信口字符接收中断功能,通信口接收到字符时会产生一个中断,接收到的字符暂存在特殊存储器SMB2中。通信口Port0和Port1共用SMB2,但两个口的字符接收中断号不同。

每接收到一个字符,就会产生一次中断。对于连续发送消息,需要在中断服务程序中将单个的字符排列到用户规定的消息保存区域中。实现这个功能可能使用间接寻址比较好。

对于高通信速率来说,字符中断接受方式需要中断程序的执行速度足够快。

一般情况下,使用结束字符作为RCV指令的结束条件比较可靠。如果通信对象的消息帧中以一个不定的字符(字节)结束(如校验码等),就应当规定消息或字符超时作为结束RCV指令的条件。但是往往通信对象未必具有严格的协议规定、工作也未必可靠,这就可能造成RCV指令不能正常结束。这种情况下可以使用字符接收中断功能。如下图

篇2:实验报告6自由口通信

P L C作为一种稳定可靠、控制程序灵活可变的控制器, 在工业控制系统中已经得到了广泛的应用。随着计算机网络技术的发展, 传统控制系统不断向多级分布式控制方向发展, 要求P L C应具有通信和网络功能。但是由于中小型PLC的人机接口功能不够完善, 无法提供给用户一个美观又易于操作的交互界面。如果将P L C与工控PC机结合起来, 就能弥补P L C的不足, 实现对控制参数的在线调整及系统运动状态的跟踪与监控。本文通过串行通信技术实现单片机与S7-20O系列PLC之间的自由口通信方法进行了研究, 达到了预期的效果。

2 系统硬件设计

2.1 系统构成

系统上位机采用I P C, 下位机由9台西门子S 7-2 0 0 P L C和2台进口智能仪表组成, 组成结构如图1所示[1]。

其中PLC部分采用了3台CPU221, 1台CPU222和5台CPU224。上位机与PLC采用两线制的RS-485接口组成控制系统。整个控制系统采用主从方式构成工业监控网络, 网络中有一个主站和多个从站。各个从站点由唯一的地址码识别。这样, 上位机便能通过R S-485通信线对挂在上面的PLC和智能仪表进行控制, 避免信息传递的紊乱, 确保通信的准确可靠。

2.2 通信硬件实现

由于S7-200系列PLC的通信口是RS-485串行接口, 而计算机是R S-2 3 2串行接口, 所以计算机与P L C在通信时采用了MAX485CPA芯片进行RS-48 5/R S-232转换, 并加入光电隔离措施来提高系统的稳定性, 转换电路如图2所示。

3 S7-200PLC自由口通信

3.1 自由口通信方式

S7-200 PLC的通信口是标准的RS-485串行通信口, 支持PPI协议、MPI协议、PROFIBUS协议和自由口协议, 其中最具有特色的自由口协议通过用户程序定义通信端口, 实现PLC与任何已知协议的智能仪器设备通信。如打印机、调制解调器、变频器和上位PC机等。

考虑到在系统中所有的控制信号均为开关量信号, 工控PC机作为上位机仅仅实现实时显示数据、存储数据等监视和远程控制等功能, 不需要向PLC发送控制指令, 因而系统选择在启动通信时, PLC始终具有优先权, P L C作为下位机完成现场各种信号和数据的采集、运算和控制。

执行过程:P L C通过X M T发送指令, 将数据通过C O M口发至上位机, 然后延时等待上位机反馈信息;上位机接收到数据进行处理后, 将反馈信息或修改后的数据通过COM口传送到PLC的PORT0 (或PORT1) 口。PLC通过R C V接收指令接收数据并返回指令执行的状态信息, 至此完成一轮“一问一答”式通信。

3.2 自由口通讯工作模式的定义

在S7-200中通信的工作模式是通过通信控制字的组态设定的。自由口通讯在通信之前通过设置特殊存储区SMB30和SMB130, 分别对PLC的通信端口0 (port0) 和端口1 (port1) 设定通信模式、波特率、校验方式等通信参数, 其格式如图3所示[2]。

其中:

mm:00PPI从站模式, 01自由口模式, 10PPI主站模式

通信口的工作模式可以在运行过程中由用户程序重复定义的。自由口通信的核心指令是发送 (XMT) 和接收 (RCV) 指令。在自由口通信常用的中断有“接收指令结束中断”、“发送指令结束中断”, 以及通信端口缓冲区接收中断。如果调试时需要在自由口模式与PPI模式之间切换, 可以使用SM0.7的状态决定通信口的模式;而SM0.7的状态反映的是CPU运行状态开关的位置 (在RUN时SM0.7=�", 在STOP时SM0.7=”0") 。

3.3 S7-200PLC自由口通信程序设计

整个程序由主程序, 子程序和6个中断程序组成。主程序主要完成初始化操作, 调用子程序及其他的逻辑控制;子程序的工作是计算所提供的数据的CRC码, 因为系统对通信部分的要求较高, 所以通信数据采用CRC码进行校验;所有的中断程序都用来实现通信功能[3], 通信程序的流程图如图4所示。图中的中断事件8为每个接收字符到时的中断;中断事件10为时基中断0, 即通信线空闲等待时间中断;中断事件9为发送完数据中断。系统通信包括读写两种操作, 如果功能码不同, 那么数据地址及传递的数据字节数也不同, 此处我们选择灵活的自由口通信模式中字符中断控制方式来实现, 其中功能码=03时为读命令;功能码=06时为写命令[4]。

利用SM0.1初始化通讯参数执行过程:

(1) 定义通讯口接收格式SMB87 (口0) 或SMB187 (口1) 。包括启动信息接收 (第7位=1) , 是否有起始位 (第6位) , 是否有结束位 (第5位) 以及是否检测空闲状态 (第4位) 等。

(2) 设定起始位 (S M B 8 8或S M B 1 8 8) 或结束位 (SMB89或SMB189) 、空闲时间信息 (SMB90或SMB190) 及接收的最大字符数 (SMB94或SMB194) 。

(3) 一般还要利用SMB34定义一个定时中断, 来定时发送数据 (一般为50ms, 即间隔发送数据的时间) 。

(4) 发送完中断子程序的主要任务是发送完后断开SMB34定时中断, 并利用RCV指令准备接收数据;接收完中断子程序的任务是接收数据完成后重新连接SMB34的定时中断, 准备发送数据。

下面是部分设计程序[5,6]:

主程序:

M O V B 3, V B 3 0 2//功能码0 3, 发送P L C输入口信息

MOVB VB470, VB309//调用子程序后计算出的CRC校验码存放到VB308和VB309

子程序:

FOR VW450, 1, VW455//外层循环为求CRC值的字节个数

……

中断程序:CE2INT3//接收首字符程序

XMT VB99, 0//输出, 把上位机发送来的数据回送到上位机

……

4 人机交互界面

L a b V I E W是一种程序开发环境, 一个完整的Lab VIEW程序主要包括前面板和程序框图。前面板是交互式图形化用户界面, 用于设置输入数值和观察输出;框图是定义V I功能的图形化源代码, 可利用图形语言对前面板的控制量和指示量进行控制。Lab VIEW将繁琐复杂的文本语言简化成为以菜单提示方式选择功能, 为用户提供简明、直观的系统模拟界面[7]。

本文工控PC机端软件采用L a b V I E W图形语言进行编写, 实现登陆密码验证、通信设置、设定值、输出值显示和数据历史记录等功能, 程序流程图如图5所示, 图6和图7分别是程序执行过程中的部分VI程序框图和工控PC机端软件控制界面图[8]。

执行过程:首先进行密码验证, 当密码输入正确时, 将执行True帧, 并通过通信设置界面确定计算机成功地接收到PLC发送的数据, 包括波特率为9600bit/s, I/O口为COM1等;然后对数据进行存储并通过主界面可查看当前值, 同时用户也可以进行设定值。系统误差在0.2%以内。

5 结束语

通过实验室实验和在中国石油西南油气田分公司采油和输气控制设备上运行, 实际运行表明:该系统的各项指标都达到了预期的效果。系统具有良好的通信和网络功能, 控制界面好, 实时性强, 可靠性稳定性高, 克服了PLC的不足, 接口功能得到了大大提高, 同时智能化程度好, 方便地实现了对控制参数的在线调整及系统运动状态的跟踪与监控。

系统所设计的自由口通信协议和硬件R S 2 3 2/RS485转换电路, 可靠地实现了工控PC机与多台S7-200PLC之间的串行通信, 可以提供人机交互界面, 实现数据的存储和实时回显等监视功能, 只要发送相关的生产过程控制信息, PLC作为下位机可以对被控对象实时监控, 完成现场各种开关量和模拟量的采集、运算和控制。

系统的不足之处是有一定的局限性, 对于规模较大的控制系统, 采用监控组态软件来实现就更加具有优势。

参考文献

[1]丁莉君, 吴晓君.监控计算机与PLC数据通信的研究与应用[D].西安:西安建筑科技大学, 2007, (6) :18-22.

[2]高淑敏, 费玉华.PLC和PC实时通信方法的研究[J].自动化博览, 2003, (6) :62-64.

[3]陈建群, 郑丽珍.PC与多台S7-200PLC的自由口通信控制[J].2011, (4) :72-77.

[4]MEI DACHENG, HE ZHIMIN, GONG JIE.Re-search and Implementation of Building Distributed ControlSystem based on S7-200 PLC and PC[J].Computer andAutomation Engineering, Chengdu, 2010 (10) :297-300.

[5]余中正, 武玉, 夏永胜等.基于自由口模式的S7-200PLC与上位机的通信[J].网络与通信, 2011 (13) :42-44.

[6]乔旭兴, 李光亮, 马思乐.VC6.0下S7-200PLC的自由口通信[J].现场总线与工业以太网, 2010, (9) :76-80.

[7]ASAN GANI and M.J.E.SALAMI.A LabVIEWbased Data Acquisition System for Vibration Monitoringand Analysis[J].Student Conference on Research and De-velopment Proceedings, 2002, (2) :62-65.

上一篇:学生宿舍管理协议范本下一篇:java开发笔试题大全