• 西门子6ES7235-0KD22-0XA8代理订购
  • 西门子6ES7235-0KD22-0XA8代理订购
  • 西门子6ES7235-0KD22-0XA8代理订购

产品描述

产品规格模块式包装说明全新

西门子6ES7235-0KD22-0XA8代理订购

目前国内啤酒灌装生产线不管是引进生产线,还是国产生产线,单机采
用现场总线技术已比较普遍,但还未有整条生产线采用现场总线联网。现场总线是连接现场智能设备和自动化控制系统之间的数字化、双向传输和多分支结构的通讯网络。现场总线能够代替传统的现场设备与控制系统之间的方式;可以通过其诊断功能,设备上的大量数据,及时判断故障点所在,以降低故障发生时间;可以远程监控现场的实时数据。要实现企业的信息集成,要实施综合自动化,实现底层现场设备之间、以及自动化与外界的信息交换,就采用现场总线。与传统的设备间一对一的接线方式相比,现场总线可以节省大量电缆、槽架及相应的接口设备,同时,由于所有的连线都变得简单明了,系统设计、安装、维护的工作量也随之大大减少,以后还可与ERP系统方便地连接,实现企业测、控、管一体化。
1. Modbus plus总线
Modbus plus(即MB+)总线协议是由美国Modicon Inc.(该公司已被施
耐德电气公司收购)开发设计的一种工业数据总线,适用于建立工业实时控制局域网。典型的应用包括过程控制、数据监测、程序上传/下载、远程编程、连接操作员接口及主计算机数据采集。
Modbus plus总线协议是一种异步半双工通讯的对等网络协议,遵循IEEE802.4局域网标准,物理接口是RS485,通讯介质采用屏蔽双绞线或光纤,大节点数64个,通讯速率1Mbps。
作为一个判定性高速令牌循环式现场总线,Modbus plus总线网络以1Mbps的速率进行通讯,可以快速存取过程数据,它的实力表现在它的控制实时控制装置如I/O装置的能力,不会由于加载或通讯量的原因而性能有所下降。由于Modbus plus综合高速、对等通讯和易于安装等特点,使得计算机、可编程逻辑控制器(PLC)和其它数据源,通过使用的双绞线电缆或光纤电缆在整个网络上作为同位体进行通信。
2. INTTERBUS总线
INTERBUS现场总线由德国Phoenix Contact 公司开发,INTERBUS Club俱乐部支持。INTERBUS在有1000多家总线设备生产商,提供2500多种产品,到目前为止,INTERBUS在自动化领域已有50多万套应用系统得到广泛应用。
INTERBUS现场总线是一种开放的串行总线,可以构成各种拓扑形式,并允许有16级嵌套连接方式。该总线多可挂512个现场设备,设备之间的大距离400米,中继器网络的大距离为12.8公里。INTERBUS总线包括远程总线和本地总线,远程总线用于远距离传送数据,采用RS-485传输,网络本身不供电,通信速率为500Kbps和2Mbps。INTERBUS有自己特的环路结构,环路使用标准电缆同时传送数据和电源。环路可以连接模拟、数字设备甚至复杂的传感器/执行器,也允许直接接入智能终端仪表。
INTERBUS总线有很强的监视诊断功能,总线监控功能监视整个网络系统的运行状态,同时也提供总线网络的变结构功能,能及时根据设计要求,关断和连接总线的某个子总线段。监控功能是现场安装、调试、诊断和维护的有力工具。具体功能是识别和确定安装错误和部件错误,现场总线模块具有输入/输出的状态显示,在调试时可设置输出状态,以及可以保存某些智能设备的参数。
3. Modbus总线
Modbus 现场总线协议是由美国Modicon Inc.(该公司已被施耐德电气公司收购)于20世纪70年代提出的一种通讯协议,它是一种开放的协议,目前上有无数自动化和仪表厂商采用该种协议。Modbus 协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。
Modbus总线协议采用主站查询从站的方式,物理接口可以是RS232、RS485、RS422、RJ45,通讯介质采用屏蔽双绞线或光纤,采用RS232接口用
双绞线作介质时不带中继器的大距离为15m,大节点数247个,通讯速率19.2Kbps。
4. 基于Modbus plus总线、INTTERBUS及MODBUS现场总线的控制系统设计
我公司2004年安装一条3.6万啤酒灌装生产线,除酒机、标机、纸箱机为进口设备外,其它机台包括输送带全为国产设备,国产机台控制系统采用INTTERBUS及Modbus现场总线技术,而且将整条生产线所台的PLC也联结成MB+网, 整条生产线以后还能扩展上位机。
4.1. 网络构成
整个控制系统是一个双层网络,上层采用MB+网作为数据及信息管
理层,用于与现场设备的快速、循环的数据交换,可挂32个节点;下层采用INTERBUS网,串接Momentum分布式I/O模块。

4.2. 系统各部分功能
在整线共设有7个PLC现场控制站,分别是卸箱机现场站、输箱系统现场站、装箱机现场站、洗瓶机现场站、输瓶系统现场站、机现场站、CIP现场站。作为控制的,现场控制站负责完成数据的采集和控制指令的发送,现场控制站由施耐德Momentum模块化PLC组成,其通信适配器和处理器适配器只需插到I/O基板上就能按功能模件工作,I/O基板安装在DIN导轨上,用INTERBUS通讯电缆将所有I/O模块连接起来。现场控制站的主要硬件有:CPU(171CCS76000),MB+选项适配器(172PNN21022)、INTERBUS-S通讯适配器(170INT11000)、分布式I/O模块(170ADI35000、170ADO35000、170AAI52040、170AAO92100)。
在主控室设有18个远程I/O节点,由Momentum的一个MB+通信适配器(170PNT11020)和一个I/O模块(输入模块170ADI35000或输出模块170ADO35000)组成,负责完成主控室有关数据的采集和输出。
中间信息处理部分采用施耐德Quantum硬双机热备系统,正常时主机执行相应程序,转换现场控制站与主控室远程I/O节点之间的数据,当主机电源、CPU、NOM、CRP失效时,在50ms之内,自动切换到备机工作。其硬件组成如下:
电源模块(140CPS11100)为机架上的模块提供总线电流和工作电压。
CPU(140CPU11302)含有Modbus及MB+两个通讯端口。
MB+通讯模块(140NOM21100)为Quantum系统提供扩展通讯能力。
模块(140CHS21000)含有两个光纤通讯端口(发送和接收)。
远程I/O处理模块(140CRP93100)采用同轴电缆网络互相连接。
通讯网络采用开放的MB+网,用MB+站分支电缆(9针D型节点电缆)、MB+分支器(干缆分支器)、MB+网线电缆将所有MB+通讯模块连接起来,主网上可连接32个节点,通过MB+通讯模块(140NOM21100)还可扩展32个节点。
每个现场控制站都配有一个触摸屏作为操作员站,触摸屏与Moment CPU自带的Modbus口相连,用来监控各机台的情况,采用组态软件,通过图表、图形、动画等直观方式,对各机台的状态进行查询和监控。
以后可在主控室扩展上位机,作为MB+的一个节点,用来监控整条生产线的情况,采用组态软件,通过图表、图形、动画等直观方式,对生产线上各台设备状态进行查询和监控。
4.3. 控制程序设计
本设计中采用Concept编程软件,它是一款获奖的软件,它支持多种语言编程,包括梯形图、语句表、功能块、顺序图等。它使用对所有编辑器通用的标准菜单如File、bbbbbbs和Help,所有bbbbbbs标准,如打印机安装打印命令,可无任何修改地使用,菜单命令简化到相关功能唾手可得的状态。Concept的一个大的优点在于它可以很方便地在线监控程序的运行,并且在不中断生产的情况下修改程序,大限度地保证了生产的正常运行。Concept提供了大量的标准控制功能块,编程人员可从在线帮助手册了解功能块的应用范围,还可利用这些块制作出新的功能块,并且相互间可以调用。
为使系统形成一个的整体,实现通讯功能,需要对硬件进行组态。,通过拔动每个通讯模块的两个拔动开关为每一节点设置的MB+网络地址;然后在Concept软件中为各现场控制站及双机热备系统建立一个项目,在主菜单Project的菜单命令PLC type中为项目选定相应的CPU型号,在主菜单Configuration的菜单命令I/O map中为项目输入相应的输入输出模块参数。
网络节点之间数据交换的方式和数据交换量的设定是由Concept软件的PLC Configuration菜单下的Peer Cop功能菜单完成的。Modbus plus总线的Peer cop数据传送方式允许在局域网上节点之间全局地或直接地进行寄存器数据传送,在区域Go To选择局部总线节点(0=CPU,1=槽号X,2=槽号Y),通过输入其它总线节点地址以及通过设置传输数据的源地址和目标地址就可接收和发送全局信息或直接信息。
现场控制站的控制程序为啤酒灌装各设备的标准功能,用Concept软件的几种编程语言都能编写。


1  引言


    在现代化工业控制中,由于被控对象、测控装置等物理设备的地域分散性,以及控制与监控等任务对实时性的要求,工业控制本质上需要一种分布式实时控制系统来实现任务的传送和控制。在分布式实时控制系统中,不同的计算机设备之间的交互式通过现场通行网络来进行信息传递的。典型的通信网络是现场总线,它是应用在工业现场,在微机化测量控制设备间实现双向串行多节点的数字通信系统,又称为开放式、数字化、多点通讯的现场控制网络,例如,FF, Profibus, WordFIP, P-NET, CAN和Lonwork等。尽管现场总现通信网络获得了成功的推广,然而现场总线这类实时通信网络具有成本高、速度低和应用有限等缺陷,以及总线通信的多样性使得不同总线产品间不能直接互连、互用和互操作等。其中,通信已成为关键,用户对统一的通信协议和网络的要求日益迫切。现今,如何把Ethernet应用到工业已成为工业控制和实时通信研究的热点。


2  Ethernet的通信过程与特点
    以太网,英文名为Ethernet,是当今世界上应用范围广的一种网络技术。它早起源于美国夏威夷大学。60年代末,该校的Norman Abramson及其同事为了将校内的IBM 360主机与分布在其它岛上的终端相连接而开发了一个无线电系统ALOHA。该系统是一个争用型网络,其上已经体现了以太网的设计思想,即信道共享和信道争用。

    以太网是广泛使用的网络标准(IEEE802.3),它采用介质访问控制协议()的通信标准,即(CSMA/CD)(载波多路访问冲突检测协议,图1是CSMA/CD通信过程。当网络上任一站点在传送数据前,先检测是否已有数据在介质上传送,若有则等待对方送完后才能送出。数据送出后,在传送的过程中不断检测是否与其他站点送出的数据发生碰撞,若发生碰撞,须等待一段时间后再重新发送。当在两个或多的节点间检测到冲突时,发送节点就会停止传送并等待一个随机的时间后重新尝试传送。由于介质访问负载轻,以太网使用一种简单的算法操作网络,在网络负载轻时几乎没有时延。与令牌环或令牌总线协议比,以太网访问信道不需要通信带宽。标准的以太网支持10Mbps的率,也支持1Gbps。


图1     CSMA/CD的传送数据过程



3  Ethernet实时性问题研究的现状
    在理论研究领域,对于以太网通信的延迟不确定性,国内外的学者提出了各种改进方法。这些方法可分为两类;硬实时改进方法和软实时改进方法。
(1) 硬实时方法
    是指通过设计适当的硬件电路,限制节点访问网络的时间和速率,来减少网络碰撞和排队延迟,以满足通信的实时性。但与目前广泛使用的以太网标准相比,这种方法大大增加了节点的硬件成本,不利于大面积推广应用。

(2) 软实时改进方法
    是指在不增加节点成本的同时,用软件调度策略对CSMA/CD和BEB机制进行改进,以提高通信的实时性。这种方法又可分为冲突避免和冲突解决两种。
·时分多路策略(TDMA)
    在冲突避免方面,直接的方法是采用时分多路策略(TDMA),事先给每个节点预先分配一定的带宽,节点只有在分配给它的固定时间内才能向网络上发送信息,从而保每个节点的确定发送时间。
·可预测CSMA-PCSMA
    由于TDMA不能反映每个节点的实际带宽需求,又产生了可预测CSMA-PCSMA,在定所有实时信息都是周期性的情况下,对信息的时态特征进行静态调度。上述方法都是以改变以太网结构为代价。

    由于以太网的介质访问控制协议采用的是CSMA/CD技术,这就会导致以太网在重负载的情况下,某些节点的数据可能会延迟很长时间才能发出去或根本无法传送,从而造成数据丢失。本文提出了以Modbus协议为应用层协议,与TCP/IP,Ethernet,的控制网络通信模型。

4  Modbus协议
    Modbus协议由美国的自动化设备制造商公司开发,是应用于自动控制器上的一种通用协议。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一种通用工业标准。Modbus协议是一种主从协议,网段的一个节点被为主节点,其他节点为从节点。为保证每个节点都会传送数据,主节点通常对从节点依次逐一的轮询,形成严格的周期性报文传输,它还允许一台主机和一个或多个从机通讯,以完成编程、数据传送及程序下载等功能。其查询—回应过程如图2所示:


图2     Modbus查询—回应过程示意图


5  控制网络通信模型
    Modbus+TCP/IP通信协议模型如图3所示。数据链路层协议和物理层协议就是以太网标准中规定的那些协议,如IEEE802.3。网络层采用IP协议,传输层采用TCP协议。TCP协议是面向连接的,它通过三次握手提供的数据报传送服务。在传输层中,还有另外一种协议,即UDP协议。该协议是非连接的,它不提供报文到达确认、排序以及流量控制等功能。由于省去了确认等功能,UDP协议适合传输实时性要求较高的数据。在实验中我们发现,Quantum系列PLC不支持UDP协议,因此我们开发的通信程序只针对TCP协议。应用层则采用Modbus协议。


图3    Modbus+TCP/IP通信协议模型

6  模型测试
    控网络模型提出以后,对此通信模型进行测试。实验建立由图4所示,1个主站与3个从站通过以太网连接,而且主站与从站之间的通信是不相关的。


图4     模型测试结构图


6.1  网络通信设计
    由于TCP/IP协议的复杂性,本程序用VB中的Winsock控件实现网络接口。Winsock是一种标准API(Application Programming Interface,应用程序编程接口),主要用于网络中的数据通信,它允许两个或者多个应用程序在同一台机器上或网络相互通信。使用Winsock编程接口,应用程序可通过普通网络协议如TCP/IP,或IPX(Internet Packet Exchange, Internet数据包交换)协议建立通信。
Modbus协议有两种传送模式,即ASCII(美准信息交换码)和RTU(远动终端模式)。本程序采用RTU模式,其典型的消息帧如表1所示:

表1   典型的RTU模式消息帧


6.2  部分通信程序
(1) 初始化程序
Private Sub bbbb_Load()
  aflag = True
  bflag = True
  outbuf(0) = &H0
  outbuf(1) = &H0
  outbuf(2) = &H0
  outbuf(3) = &H0
  outbuf(4) = &H0
  outbuf(5) = &H6
  outbuf(6) = &H0
  outbuf(7) = &H1 'Op-Code
  outbuf(8) = &H0 'Start-Hi
  outbuf(9) = &H0 'Start-Lo
  outbuf(10) = &H0 'Count-Hi
  outbuf(11) = &H1 'Count-Lo
End Sub
(2) 连接PLC
Private Sub connectbutton_Click()   
    Winsock.Close
    Winsock.LocalPort = 0
    Winsock.Connect 
End Sub
(3) 发送数据
Private Sub readbutton_Click()
  Winsock.SendData outbuf
End Sub
(4) 提取数据
Private Sub Winsock_DataArrival(ByVal bytesTotal
As Long)
  Dim inBuf(20) As Byte
  For i = 0 To bytesTotal-1
     Winsock.GetData inBuf(i)
  Next
  If coil.value = True Then
    value.Caption = Str(inBuf(9)) 
  //  提取0xxxxx中的数据
  Else
    value.Caption = Str(inBuf(9) * 256 + inBuf(10))   //提取4xxxxx中的数据
  bflag = Not bflag
  n = n + 1
  Winsock.Close
   Winsock.LocalPort = 0
   Winsock.Connect
End If
(5) 连续发送
Private Sub Winsock_Connect()
  Do While (n <= step And ((aflag Xor bflag) = True))
    Winsock.SendData outbuf
    aflag = bflag
  Loop
  If n > step Then
    status.Caption = “命令执行完毕,仍保持连接状态”
  End If 
End Sub
    aflag和bflag的数值类型为布尔型,它们是用来判断命令执行次数是否完成。outbuf数组按照Modbus的请求数据格式填写,outbuf(7)里的数据表示操作功能码(详细情况参见Modbus协议手册,可从www.下载),outbuf(8)和outbuf(9)里的数据表示起始寄存器的高位地址和低位地址,outbuf(10)和outbuf(11)里的数据表示寄存器的个数。此例中的数据格式表明上位机要读取000001寄存器中的数据。

6.3结果分析
    我们用上述程序进行了上位机与Quantum系列PLC的通信试验,记录了命令执行所花费的时间,具体结果见表2和表3。Modbus协议是主从介质访问协议,网段的一个节点被为主节点,其他节点为从节点。由主节点负责控制该网段上的所有通信连接。为保证每个节点都会传送数据,主节点通常对从节点逐一查询,形成严格的周期性报文传输,主节点不停地传送报文,并等待相应的从节点的应答报文。Modbus适合于一台主机和多个从设备的环境中,主机访问从设备的方法采用轮询的方法,即按照从设备1,从设备2,……从设备n的顺序依次访问,一次访问结束后,再从头开始。


循环时间 
式中:ti为站1从开始发送帧到全部发送完毕的时间;
    N为站的数量;
   W2是站1到站2的循环时间。
整个轮询系统的巡回时间L是各站的巡回时间的平均值wi之和
    
将式(1)两端求平均值,Ti为平均发送时间,得出平均循环时间Tc为
  

7  结束语
    从表2和表3的比较中,可以看出读1个寄存器的时间和读125个寄存器的时间基本一样,这就提示我们在读取数据时,在一条命令中应读取尽可能多的寄存器,这样就能提高数据传送效率,缩短轮询时间。

    通过计算分析,该网络通信模型速度快,执行一次读取命令的时间在7ms左右。若将该通信协议应用于工业自动化系统中,它满足通信时延要求。若在主站对从站的轮询中,采用算法的优化处理,将可以大大减少时间,满足工业需要。

    如果在工业以太网专题">工业以太网的应用层采用Modbus这样的确定性协议,即主设备需要和哪个从设备通信,该从设备才能响应主设备的请求,如果主设备没有请求,从设备是不会主动发送数据的。这样,任何时刻在工业以太网上只有一个节点发送数据,根本就不会出现节点冲突的现象。

    Modbus+TCP/IP协议适合于一台主机和多个从设备的环境中,主机访问从设备的方法采用轮询的方法,即按照从设备1,从设备2,……从设备n的顺序依次访问,一次访问结束后,再从头开始。有人认为这样做会降低效率,的确,这种轮询的方法不如Modbus Plus多主访问模式的效,但这种轮询的方式也有它的优点,那就是用上层协议的确定性了下层协议的不确定性,况且以太网的传输速率相当高,目前已达10Gbps,主机对所有从设备轮询一遍的时间可能都比Modbus Plus访问一个设备的时间短,那我们有什么理由不去应用Modbus/TCP这样的通信协议呢?

    本文利用公开的Modbus协议,配合TCP/IP协议,实现了Quantum系列PLC与上位机的以太网通信。试验结果表明,Modbus+TCP/IP+Ethernet网络通信模型,通信速度快,性高,配置方便,适宜在工控领域推广应用。另外,Web技术和Ethernet技术的结合,将实现生产过程的远程监控、远程设备管理、远程软件维护和远程设备诊断。由此可见,以太网是很有发展前景的一种现场控制网络

一、前言
CRC的计算方式是将欲传输的数据块视为一堆连续位所构成的整个数值,将此数值除以一个特定的除数,通常以二进制表示,此除数称为生成多项式(ANSI CRC-16的生成多项式为:x16 + x15 + x2 + 1)。目前较常用的CRC位数目有8和16以及32,在这里只讲述如何写CRC位数目为16的程序。CRC位数目越大,数据的错误检测率则越高,但多花一些时间进行数据的计算。
二、CRC-16计算步骤
CRC-16的计算方法有两种:查表法与计算法,在这里只讲述计算法。本人在2000年在江西亚东水泥公司上班时,在某电力仪表上的说明书中摘录下来的计算CRC-16步骤如下:
1、 Load a 16-bit register with FFFF hex. Call this the CRC register.
2、 Exclusive OR the first 8-bit byte of the message with the low-order byte of the 16-bit CRC, putting the result in the CRC register.
3、 Shift the CRC register one bit to the right (toward the LSB), zero-filling the MSB. Extract and Examine.
4、 If the LSB was 1: Exclusive OR the CRC register with polynomial value A001 hex. If the LSB was 0: Repeat step 3 (another shift).
5、 Repeat step 3 and 4 until 8 shifts have been perbbbbed. When this is done, a complete 8-bit byte will have been processed.
6、 Repeat step 2 through 5 for the next 8-bit byte of them message.
7、 The final content of the CRC register is the CRC value.
中文解释如下:
1、定义一个初始值为FFFF的16位的变量,该变量称为CRC寄存器。(想想在程序中,应该怎么表示16位的变量呢?)
2、把欲发送或接收消息的高8位和CRC寄存器的底8位作异或运算,并把结果在赋到CRC寄存器。
3、CRC寄存器右移1位(朝位),同时位添零。取出并检查位是否为1。(Visual Basic 里如何做移位的运算呢?)
4、如果为1,则CRC寄存器与多项式A001异或;如果为0,则重复3步的动作。(Visual Basic 里如何判断一个字节里某个位的值呢?)
5、重复3和4直到完成了8次移位。这样完整的8位字节将完成处理了。
6、对于下一个8位字节的处理就是重复2步到5步了
7、把所有的欲发送或接收消息这样处理后, CRC寄存器里的值就是我们终需要得到的CRC校验码。
如果你能正确回答我的问题,那么恭喜你,你自己可以用Visual Basic写数据采集卡的控制程序了。
三、Visual Basic程序实现
以江阴长江斯菲尔电力仪表公司CD194E系列多功能电力仪表的Modbus-RTU通讯协议的报文格式为例,该表通信报文格式使用的校验方式就是CRC-16。通过对地址01H、命令04H、数据地址005CH和数据长度0004H的CRC-16运算后得到主机请求数据报文的CRC16的校验码为31DBH。

在电力系统微机综合保护和自控装置以及其它工业自动化控制领域,微控制器的应用越来越广泛,其装置的复杂性也越来越高。为了解决其开发对象实时多任务性的要求,单CPU、单入开发的模式下在被多个、多类型CPU和多人协同开发的模式所代替。在这新的开发模式中,面临一个新问题——在实施信息交互的过程中如何将实现CPU之间信息交互的软硬件标准化,这是关系到该模式能否成功实施的关键。在众多的通信方式中,基于UART的RS-485串行通信模式以其连线简捷、性高和可带动多CPU、多设备级连的能力而被广泛采用。在软件通信协议的选择上,Modbus协议由于其通用、成熟的三方标准测试软件,为用户使用提供了诸多优势。因此,在开发新型电动机综合保护装置TH21-4M的过程中,采用RS-485串行通信方式和MODBUS通信协议,实现了多CPU之间的数据和控制命令的信息交互。为了增强串行通信的、协调性,笔者在通信机制的软硬件结构上采取了很多措施,并了很好的效果。在调试系统通信阶段,使用了各CPU模块先与MODBUS标准测试软件通信,之后再互相联调的方法,大大提高了协同开发的效率。实践证明,该设计思想简化了系统的结构,大大提高了装置的运行效率和性。本文将结合TH21-4M的设计思路,从硬件设计和软件规划两方面,介绍如何利用MODBUS通信协议,实现多CPU结构的协同开发。

1 TH21-4M电动机综合保护装置的特点

TH21-4M电动机综合保护装置综合保护功能以外,兼有测量、远动和通信的功能;大屏幕的汉字液晶显示,可以实现友好的人机界面;利用CAN总线,与监控主机进行通信,从而构成分级分散式的变电站综合自动化系统的子系统。

在设计上,由于装置需要实现多任务,为了优化系统功能,采用了多CPU的系统结构。其中一个CPU负责定时采样脉冲发送;主CPU模块负责数据处理、电量计算、故障判断和开关操作;而板模块上CPU负责人机交互,并实现与主保护模块和监控主机的通信任务。各个CPU模块有明确的任务分工,研制时也容易实现多人协同开发。在整个构成中,串行通信沟通了主CPU和面板CPU,使人机交互成为可能,因而点有重要的地位。建立合理的通信机制则是串行通信部分的的所在,它决定着通信的协调性和系统开发后期调试的效率。

2 通信机制介绍

2.1 通信机制硬件设计原理

本系统通信机制的提出以、为目的。RS-485为半双工结构,现场中比全双工往往接近于实用,在此采用只有2条信号线的简型连接。系统接口电路图由图1所示。主保护模块上的80C196单片机输出的TTL逻辑电平通过光电隔离后,由MAX485芯片转换为RS-495电平,再由面板模块上的MAX485芯片转换为TTL逻辑电平,由80C31单片机读取;以之亦然。在80C196单片机一侧,使用并行输入输出口2(IO_PORT2)的一位P2.7对MAX输入使能端RE、输出使能端DE进行控制。由图1可知,当P2.7输出高电平时,RE使能,单片机一侧接收数据;当P2.7输出低电平时,DE使能,单片机一侧发送数据。这样,避免了盲目发送造成的数据叠加丢失现象,通信质量高,通信速度也能得到保。

2.2 通信协议介绍

为了保证保护装置中两个模块之间能够正确地传递数据,有一套关于信息传输的模式、数据格式和内容等的规定,即规约[1]或通信协议。虽然保护装置内部的通信相对简单,两具模块之间传递的数据也不是很多,但是自定义内部通信协议的弊端是很明显的。,自定义通信协议很难在时序、任务的协调上配合得很好,数据传送的性也难以保证;,由于没有现成的较成熟的调试软件,主CPU模块基本是黑匣子,系统联调时的困难较多且难以克服。因此,采用了当前流行的Modbus通信协议,并结合本装置的特点加以简化,从而实现了模块间的通信,事实证明效果很好。

Modbus的通信方式为主从方式[2]。主方向从方发送通信请求指令,从方根据请求指令中的功能码向主方发回数据。每个从方都有自己立的地址。主方所发的请求帧和从方所发的应答帧都是以从方地址开头的。从方只读发给自己的指令,对以其他从方地址开头的报文不作应答。这种一问一答的通信模式,大大提高了通信的正确率。但对于微机保护来说,该主从方式也存在着弊端,即当保护主模块进行保护动作后,无法立刻向上位机传送故障信息,只能由上位机不断向保护主模块询问保护是否动作,若有,则再进一步要求具体故障信息。

Modbus有RTU(Remote Terminal Unit)和ASCII两种传送方式。为了保较高的通信速度,采用了RTU方式,数据字节无奇偶校验位,加上起始、终止位后字节长度为10bit,数据间隔在24bit以内,采用循环冗余检验方式对报文进行校验。

Modbus典型的报文格式如下:

    主方发报文:

从方地址功能码数据起始地址数据量冗余校验
BYTEBYTEMSBLSBMSBLSBMSLSB

从方正常时回答:

从方地址功能码字节量数据1数据n冗余校验
BYTEBYTEBYTEMSBLSBMSB LSBMSB LSB

一个通信报文的具体内容取决于该指令字符串的功能码,Modbus中定义的标准功能码如表1所示。

表1 Modbus协议中的标准功能码

功能码定    义
01
02
03
04
05
06
07
08
0F
10
  内取内部数字量保持线圈状态
  读取外部输入数字量线圈、继电器状态
  读取内部模拟量保持存储器内容
  读取外部输入模拟量存储器内容
  设置单一内部数字量保持线圈状态
  设置单一内部模拟量保持存储器内容
  读取内部特定线圈状态
  通信系统自诊测试
  设置一组内部数字量保持线圈状态
  设置一组部模拟量保持存储器内容

由功能码的定义可以看出,传送的报文对象主要分为模拟量和数字量两类,由报文头的功能码来确定报文的内容。在实际应用中,主要使用02、04、05和06这四种功能码,完成对数字量和模拟量的读取及设置。

数据起始地址和数据量是报文的主要内容。Modbus规定的数据量是从通信对象的器件中读取的数据或是往通对象的器件中写入的数据。每个通信对象器件都有自己的地址。在保护装置的内部通信中,各通信对象器件为主机板的RAM中保存的数字量和模拟量,以及EEPROM中设定的保护配置和定值。在处理通信报文时,由报文的数据起始地址和对应的数据量长度进行读取或发送任务。当传送数字量时,不同地址的数据值用报文中数据量不同的位来表示,这样就能传送多的数据信息,从而地利用通信报文。由于每帧数据不定长,方便灵活,因而避免了固定帧长造成的对CPU时间和内存空间的浪费。另外,MODBUS通信协议规定在通信字符串中的地址比实际地址小“1”,这对数组进行操作时是一个方便之处。

报文末的两个字节为校验字节。RTU方式通信采用CRC-16位循环码冗余校验,即将整个字符串(不包括后两个字节)按规定的方式进行位移并进行异或计算,计算结果存在字符串的后两个字节内,并由接收方按同样的计算方法进行校验是否一致。这种校验方法对随机或突发差错造成的帧破坏有很好的校验效果。

3 提高通信效率的措施

在确立硬件平台和通信协议后的软件设计过程中,笔者采用了很多方法提高通信的效率和性。

3.1 将通信分为接收和发送两个立的任务[3]

80C196单片机可以使用查询和中断两种方法通过串行口发送和接收数据。对于中断方式,80C196单片机提供了两种串口中断方式:种方式为一个单的串口中断,由中断屏蔽寄存器INT_MASK的D6位控制,对应中断向量200CH,串行口状态寄存器SP_STAT(11H)的D5(发送完标志TI)和D6(接收完标志RI)置位都将触发该中断;二种方式为接收、发送分别设置了中断号,使用INT_MASK1的D0位对应发送中断,中断向量2030H,TI置位触发该中断;INT_MASK1的D1位对应收中断,中断向量2032H,RI置位触发该中断。笔者采用了二种通信方式。这样每接收完或发送完一个字节后就触发相应的中断,直接进行下一轮的接收、发送任务,而不必判断串口控制/状态寄存器SP_CON/SP_STAT(11H),使得中断子程序为简练、。

3.2 尽量缩短中断时间

由于设计软件结构时使用了多个中断,为了保证程序的运行,减少不同不断间互冲突的机率,在编制软件时尽可能简练各种中断的任务,缩短中断执行时间。在通信中断子程序中,进入中断后执行必要的任务,如:清串行口状态寄存器SP_STAT中相应的状态位,将刚接收到的字符或需要发送的字符从缓冲区内读出或写入缓冲区,已接收或发送字符数增1等,之后便立即退出中断。其它任务如判断帧的有效性、对接收帧命令(遥测、遥控命令)的应答,准备发送帧等,都放在主程序中完成。

3.3 地判断帧结束,防止通信停滞

利用单的软件定时器,来判断一帧接收报文结束,可以防止若报文接收不完整,该帧通信任务无法结束而影响下一帧的接收。

由于一帧报文中字节与字节之间的时间间隔和帧与帧之间的时间间隔相比要小得多,因此每当接收一个新字节,就启动软件定时器开始计时,定时器的时间设定为帧与帧的小时间间隔。波特率不同,该时间间隔也不同。若不到预定的时间内又接收到下一个字节,则说明一帧报文未结束,定时器重新计时;若定时器顺利计数到预定时间,就会触发相应的中断号,在该定时器中断子程序中设定帧结束标志字节,表明一帧报文接收完毕。当主程序内检测到一帧报文接收完毕后,会通过核查从方地址及循环冗余校验字节是否正确来判断该帧的有效性。若确定接收到的是一帧发送给已方的正确报文,则会根据报文内的功能码对该帧命令进行相应的处理,并准备发送帧。

Modbus协议还规定了从方接收报文不正确时发回的出错帧。考虑到装置内部通信的过程不很复杂,在实际应用中如果从方收到的报文校验不正确,采取不作应答的方式。主方若在规定时间内未收到从方的应答报文时,将重发请求报文;若多次未收到从方应答报文,则报通讯故障。

3.4 通信速率的确定

由于所开的装置都在同一机箱内,模块与模块之间的间距很短,而Modbus是基于RS485的长距离通信,可以不考虑距离对通信波特率的影响,并且由于采用主从式通信模式,不会出现线路堵塞现象。因此,仅从通信效率来看,只要不过模块所使用芯片对波特率的限制,则设定的波特率越高,信息交互越快,通信效率也越高。但是,对于实时多任务系统,注意各任务的协调。MODBUS通信协议中只对各种通信报文格式作了规定,对通信波特率和奇偶校验等不作硬性规定。当一帧报文的长度较长,而波特率又很高,会导致CPU忙于处理通信而可能丢失其它实时性任务,如实时采样等。因此,选择通信波特率时注意与其它任务相协调,而不是越高越好。在实际应用中,将波将率设置到19200bps,系统调调运作。由于设定通信双方波特率一致,可以使接收端对每一个数据位的采样都发生在位周期的中点,实现通信。另外,在字符传送时不使用奇偶校验位,以此相对提高了有效字节传递的速率。

3.5 合理的调试方法

在开发初期,使用器等工具只能对单一CPU模块进行实时监测,而无法同时监测串行通信双方,难以确定问题所在,使调试效率受到很大影响。因此先将各CPU模块分别通过RS485/RS232数据转换模块与微机进行通信测试,成功后再进行模块间联调,大大提高了联调的效率。在调试各模块与微机通信的过程中,微机使用Modbus调试软件,模主方的通信过程,主动向从方(各CPU模块)索要信息。整个接收、发送过程都是透明、清晰的,使得模块中存在的绝大多数问题都能在与微机通信的过程发现并及时解决。CPU模块间联调时,可以利用总线软件,观察双方发送的数据。当遇到通信问题的时候,就能比较容易地确定是哪一个模块发送数据不正确,从而确定问题所在。采用这样的调试方法,大大增强了不同开发人员、不同CPU之间的协调性,提高了装置研发的效率和进度。




http://zhangqueena.b2b168.com

产品推荐