《面向对象的测控系统软件设计》课件第9章_第1页
《面向对象的测控系统软件设计》课件第9章_第2页
《面向对象的测控系统软件设计》课件第9章_第3页
《面向对象的测控系统软件设计》课件第9章_第4页
《面向对象的测控系统软件设计》课件第9章_第5页
已阅读5页,还剩144页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第9章可编程序控制器的通信和网络9.1PLC的基本结构

9.2西门子PLC工业自动化通信网络体系

9.3S7系列PLC与其他计算机的通信9.4计算机与PLC串行通信的软件实现9.5Prodave通信软件在点对点通信中的应用

9.1PLC的基本结构

9.1.1PLC的基本概念

可编程序控制器(ProgrammableLogicController)简称PLC,是综合了计算机技术、自动控制技术和通信技术的一种通用自动控制装置。PLC控制技术的最终目标是应用于实践,提高生产力。

PLC是一种专为在工业环境下应用而设计的计算机。它采用可编程序的存储器,用来在其内部存储执行逻辑运算、顺序控制、定时、计数和算术运算等操作的指令,并通过数字式、模拟式的输入和输出,控制各种类型的机械或生产过程。可编程序控制器及其有关设备,都应按易于使工业控制系统形成一个整体,易于扩充其功能的原则设计。9.1.2模块式PLC的基本结构

模块式PLC主要由机架、CPU模块、输入模块、输出模块、电源模块和各种功能模块组成,如图9-1所示。各个模块功能是独立的,外形尺寸是统一的,安装时将这些模块插在框架上或基板上即可。它们由系统自动进行寻址连接。插入什么模块可根据需要进行配置。大、中型PLC多采用模块式结构形式。

PLC的特殊功能模块用来完成某些特殊的任务。图9-1PLC控制系统示意图

1.CPU模块

CPU模块主要由微处理器(CPU芯片)和存储器组成。在PLC控制系统中,CPU模块相当于人的大脑和心脏,它不断地采集输入信号,执行用户程序,刷新系统的输出;存储器用来存储程序和数据。

2.I/O模块

I/O模块是系统联系外部现场设备和CPU模块的桥梁。开关量输入模块用来接收从按钮、选择开关、压力继电器等来的开关量输入信号;模拟量输入模块用来接收电位器、测速发电机和各种变送器提供的连续变化的模拟量电流电压信号。开关量输出模块用来控制接触器、电磁阀、指示灯、数字显示装置和报警装置等输出设备;模拟量输出模块用来控制调节阀、变频器等执行装置。在I/O模块中,用光耦合器、光控晶闸管、小型继电器等器件来隔离PLC的内部电路和外部的I/O电路。I/O模块除了传递信号外,还有电平转换与隔离的作用。

3.编程器

编程器用来生成用户程序,并用它进行编辑、检查、修改和监视用户程序的执行情况。手持式编程器不能直接输入和编辑梯形图,很不方便,现在的发展趋势是用编程软件取代手持式编程器。使用编程软件可以在计算机屏幕上直接生成和编辑梯形图或指令表程序,并且可以实现不同编程语言之间的相互转换。程序被编译后下载到PLC,也可以将PLC中的程序上传到计算机。程序可以存盘或打印,通过网络,还可以实现远程编程和传送。例如西门子PLC的S7-200的编程软件STEP7。

4.电源

PLC一般使用AC200V电源或DC24V电源。内部的开关电源为各模块提供不同电压等级的直流电源。小型PLC可以为输入电路和外部的电子传感器(例如接近开关)提供

DC24V电源,驱动PLC负载的直流电源一般由用户提供。

PLC的模块式基本结构,使其组成灵活,适用于多种规模的控制。其I/O模块和I/O点数可调整,用户可以充分地利用硬件提供的这种功能特点,在故障发生时,将故障部件及其对应I/O模块立即隔离,而不影响整个控制系统的工作。PLC的这种模块式结构,也利于插件的扩充,形成功能较复杂的结构,所以能够适应各种工业现场控制。

PLC通常有以下特点:

(1)编程方法简单、易学。

(2)功能强,性能价格比高。

(3)硬件配套齐全,用户使用方便,适应性强。

(4)可靠性高,抗干扰能力强。

(5)系统的设计、安装、调试工作量小。

(6)维修工作量小,维修方便。

(7)体积小,能耗低。如今的PLC通常向两个方向发展:一是向体积更小、速度更快、功能更强、价格更低的方向发展,使PLC的使用范围不断扩大;二是向大型化、网络化、多功能方向发展,功能不断提高,以便与现代网络相连接,组建大型的控制系统。9.1.3PLC的应用领域

在发达的工业国家,PLC已经广泛地应用在所有的工业部门,随着其性能价格比的不断提高,应用范围不断扩大,主要体现在以下几个方面。

1.数字量逻辑控制

PLC用“与”、“或”、“非”等逻辑指令实现触点和电路的串、并联,代替继电器进行组合逻辑控制、定时控制与顺序逻辑控制。数字量逻辑控制可以用于单台设备,也可以用于自动生产线,其应用领域已遍及各行各业,甚至深入到家庭。

2.运动控制

PLC使用专用的运动控制模块,对直线运动或圆周运动的位置、速度和加速度进行控制。运动控制功能广泛用于各种机械,如金属切削机床、金属成形机械、装配机械、机器人、电梯等场合。

3.闭环过程控制

闭环过程控制指对温度、压力、流量等连续变化的模拟量的闭环控制。其PID闭环控制功能已经广泛地应用于塑料挤压成形机、加热炉、热处理炉等设备,以及轻工、化工、机械、冶金、电力、建材等行业。

4.数据处理

现代的PLC具有数学运算、数据传送、转换、排序和查表、位操作等功能,可以完成数据的采集、分析和处理,这些数据可以与储存在存储器中的参考值比较,也可以用通信功能送到别的智能装置,或者将它们打印制表。

5.通信联网

PLC的通信包括主机与远程I/O之间的通信、多台PLC之间的通信、PLC与其他智能控制设备(例如计算机、变频器、数控装置)之间的通信。PLC与其他智能控制设备一起,可以组成“集中管理、分散控制”的分布式控制系统。

9.2西门子PLC工业自动化通信网络体系

9.2.1工业以太网

SIMATICNET的顶层为工业以太网,如图9-2所示。它是基于国际标准IEEE802.3的开放式网络。以太网可以实现管理—控制网络的一体化,可以集成到互联网,为全球联网提供了条件。以太网在局域网(LAN)领域中的市场占有率高达80%,通过广域网(例如ISDN或Internet)可以实现全球性的远程通信。网络规模可达1024站,距离可达1.5km(电气网络)或200km(光纤网络)。符合IEEE802.3u标准的100Mb/s的高速以太网发送信息显著加快,占用总线的时间极短。图9-2西门子的工业自动化网络工业以太网将控制网络集成到信息技术(IT)中;可以与使用TCP/IP协议的计算机传输数据;使用E-mail和Web技术,允许用户在工业以太网的Socket接口上编制自己的协议;可以在网络中的任何一点进行设备启动和故障检查;使用冗余网络可以构成冗余系统。

西门子提供以太网通信模块或通信处理器。远程访问路由器用于在广域网连接的两个以太网之间实现远程通信。9.2.2现场总线PROFIBUS

西门子通信网络的中间层为工业现场总线PROFIBUS。它是一种用于工厂自动化车间级监控和现场设备层数据通信与控制的现场总线技术。它的传输速率最大为12Mb/s,响应时间的典型值为1ms,使用屏蔽双绞线电缆(最长9.6km)或光缆(最长90km),最多可以接127个从站。

PROFIBUS是不依赖于生产厂家的、开放式的现场总线,各种各样的自动化设备均可通过同样的接口交换信息。它是目前最成功的现场总线之一,得到了广泛的应用。代表全世界1200多家会员公司的PROFIBUS国际组织宣布,截止2003年底,工厂自动化和流程自动化应用系统所安装的PROFIBUS节点设备已突破了1000万个。PROFIBUS已被纳入现场总线的国际标准IEC61158和EN50170,并于2001年被定为我国机械行业的国家标准(JB/T10308.3—2001)。

SIMATICS7通过PROFIBUS现场总线构成的系统,是一个很好的工厂自动化解决方案。它具有以下优点:PLC、I/O模块、智能化现场设备可通过现场总线来连接;I/O模块能安装在传感器和执行机构的附近;过程信号能就地处理;编程仍旧采用传统的组态方式。

PROFIBUS由3部分组成,即PROFIBUS-FMS(FieldbusMessageSpecification,现场总线报文规范)、PROFIBUS-DP(DecentralizedPeriphery,分布式外部设备)和PROFIBUS-PA(ProcessAutomation,过程自动化)。

1.PROFIBUS-FMS

PROFIBUS-FMS定义了主站与主站之间的通信模型,它使用OSI7层模型的第1层、第2层和第7层。应用层(第7层)包括现场总线报文规范FMS和低层接口LLI(LowerLayerInterface)。LLI协调不同的通信关系,并提供不依赖于设备的第2层访问接口。第2层(总线数据链路层)提供总线存取控制和保证数据的可靠性。

PROFIBUS-FMS主要用于系统级和车间级的不同供应商的自动化系统之间的数据传输及处理单元级(PLC和PC)的多主站数据通信。它为解决复杂的通信任务提供了很大的灵

活性。

2.PROFIBUS-DP

PROFIBUS-DP用于自动化系统中单元级控制设备与分布式I/O的通信。使用它可代替4~20mA的模拟信号传输。

PROFIBUS-DP使用第1层、第2层和用户接口层,第3~7层未使用,这种精简的结构确保了高速数据传输。直接数据链路映像(DDLM)程序提供对第2层的访问。用户接口规定了设备的应用功能、PROFIBUS-DP系统和设备的行为特性。PROFIBUS-DP和PROFIBUS-FMS的协议结构见图9-3。这两种结构采用相同的介质存取协议(第2层)和传输技术(第1层)。图9-3PROFIBUS-DP和PROFIBUS-FMS的协议结构

PROFIBUS的物理层(第1层)按照EIARS485标准制定。它使用双绞线,屏蔽可选择。电缆和连接器的插脚定义见图9-4。图9-4PROFIBUS-DP和PROFIBUS-FMS的接线

PROFIBUS的数据链路层(第2层)提供了介质存取控制功能、数据的完整性检查以及传输执行的协议,即现场总线数据链路层(FDL)。介质存取控制(MAC)控制数据的传输。MAC必须保证在任一个时刻只能有一个站点发送数据。

PROFIBUS协议中有两种基本的介质存取控制:

(1)主站之间的数据传输。由于站点拥有相同的总线控制权,因此必须保证在事先定义的时间间隔中任何一个点都有充足的时间完成通信任务。

(2)主站与从站之间的交换数据。要求尽可能快并且简单地完成数据的实时传输。

PROFIBUS介质存取协议包括主站之间的令牌环方式和主站从站之间的主-从方式。两种混合的系统称为混合介质存取,如图9-5所示。图9-5PROFIBUS混合介质存取控制令牌方式使得得到令牌的站点可在一个事先规定的时间段内得到总线控制权。令牌是一条特殊的报文,它在主站之间传递总线控制权。令牌在所有主站中循环一周的最长时间是事先规定的。在PROFIBUS中,令牌仅在主站之间按地址升序传递。

主-从方式允许主站在得到总线控制权时可以与从站通信。每一个主站均可向从站发送及索取信息。利用PROFIBUS的混合介质存取方式可以实现:纯主-从系统(单主站)、纯主站系统(多主站)和混合系统(多主-多从)。图9-5即为一个由三个主站和七个从站构成的PROFIBUS系统的结构。三个主站构成逻辑令牌环。当某主站得到令牌后,允许这个主站在一定时间内执行主站工作。它可依照从站的关系表与所有的从站通信,也可以依照主站的关系表与所有的主站通信。令牌环的意思是所有的主站按照它们的地址构成逻辑环,在这个环中,令牌即总线控制权在规定的时间内按照地址的升序在主站中依次传递。在总线系统建立初期,主站MAC的任务是决定总线上的站点分配并建立逻辑环。在总线运行期间,断电或损坏的主站必须从环中排除,新上电的主站必须加入逻辑环。MAC其他的功能是:检测传输截止及收发器是否损坏,检查站点地址是否出错(如地址相同)以及令牌错误(如多个令牌或令牌丢失)。第2层的另一个重要的作用是保证数据的完整性。它按照国际标准IEC870-5-1制定的使用特殊起始和结束定界符、无间距的字节异步传输以及每个字节的奇偶校验来保证。

PROFIBUS第2层按照非连接的模式操作,它提供点对点及多点通信功能(广播及有选择地广播)。广播的意思是主站向所有的站点(主站和从站)发送信息,不要求回答,有选择地广播的意思是主站向一组站点(主站和从站)发送信息,不要求回答。

3.PROFIBUS-PA

PROFIBUS-PA用于过程自动化的现场传感器和执行器的低速数据传输。使用扩展的PROFIBUS-DP协议可描述现场设备行为的PA行规。由于PROFIBUS-PA在传输技术上采用了IEC1158-2标准,因此可以用于防爆区域的传感器和执行器与中央控制器系统的通信。使用分段式耦合器可以将PROFIBUS-PA设备很方便地集成到PROFIBUS-DP网络中。

PROFIBUS-PA使用屏蔽双绞线电缆,由总线提供电源。在危险区域,每个DP/PA链路可以连接15个现场设备;在非危险区域,每个DP/PA链路可以连接31个现场设备。

此外,基于PROFIBUS,还推出了用于运动控制的总线驱动技术PROFI-Drive和故障安全通信技术PROFI-Safe。

4.PROFIBUS-FMS和PROFIBUS-DP的混合操作

FMS和DP能在同一条线路上混合操作是PROFIBUS的一个主要优点。它用于对系统响应时间要求不高的应用场合。在同一台设备中同时执行FMS和DP的操作是可能的,这一类设备称为合成设备。这样的设备无论是对用户还是对厂家,其优点都是明显的,因为它能同时使用DP的高速循环发送功能及FMS多种多样的通信服务。例如,用户可以用FMS来完成系统的初始化,用DP进行数据的高速传输。9.2.3AS-i接口和EIB

西门子通信网络的底层包括AS-i和EIB。EIB是楼宇安装总线系统,符合国际标准CENTC247。

As-i是执行器-传感器接口(ActuatorSensor-Interface)的简称,是传感器和执行器通信的国际标准(EN50295和IEC62026-2),响应时间小于5ms,使用未屏蔽的双绞线,由总线提供电源,最长通信距离为300m,最多接62个从站。

As-i接口用两芯电缆连接现场的传感器和执行器。当前世界上主要的传感器和执行器生产厂家都支持As-i接口,其电气和技术规范对所有感兴趣的公司公开。As-i接口是单主站系统,西门子的SIMATIC系统提供通信处理器作为主站,控制过程或现场通信。采用DP/As-i链接模块可将As-i作为PROFIBUS-DP的子网。9.2.4用西门子PLC构成DP网络系统

1.PROFIBUS-DP的技术特性

PROFIBUS-DP用于传感器及驱动器级的高速数据传送。在这一级,控制器如PLC通过高速串行线与分散的外设交换数据。同这些分散的外设的数据交换是周期性的。中央控制器(主站)读取设备的输入信息并发回输出信息。保证总线循环时间大约为10ms。

PROFIBUS-DP的技术特性见表9-1。表9-1PROFIBUS-DP的技术特性对于一个成功的现场总线来说,仅仅提供一个高的数据传输能力是不够的。安装和维护的简易性、良好的诊断能力和无差错的传输,都是用户所要求的。PROFIBUS-DP为满足这些需要提供了一个优化的方式。

在一个总线系统中,各个站共享传输媒体,通道访问控制决定了站点什么时候接收访问传输媒体;PROFIBUS-DP使用了复合的访问方法,令牌环传递辅以更低级别的主从协议,响应方法可以区别主站和从站;当一个主站接收到令牌环时,就获得了对系统的控制权,在规定的时间过后,它把令牌环传递到网络的下一个主站;如果该主站不希望发送信息,就立刻传递令牌环到相邻的主站模块。从站不接收令牌,它们通过主站模块进行所安排地址的设定。

2.系统配置

PROFIBUS-DP允许构成单主站和多主站系统,使系统具有多种组态方式。同一总线上可连接最多126个站点(主站或从站)。

每个PROFIBUS-DP系统都包括不同类型的设备,这些设备按照不同的应用主要分为以下三种:

(1) DP主站(DPM1):指中心控制器,它在预定的周期内与从站交换信息。典型的设备是PLC、CNC、RC。

(2)DP主站(DPM2):指能对系统编程、组态或进行诊断的设备。在系统构成时用它进行系统组态。西门子PLC系列中能够连接到PROFIBUS-DP中的主站有:

①使用内置的PROFIBUS-DP接口,或采用IF964或CP342-5DP接口模块的S7-300/400、M7-300/400的自动化系统,最大波特率为1.5Mb/s。

②使用IM308-C或降低了响应时间的CP5430/5431的S5-115U/H、S5-135U、S5-155U/H可编程序控制器和S5-95U/DP主站机,最大波特率为1.5Mb/s。

③带有主机模块或接口的其他厂商的可编程序控制器。④带有内置接口的编程装置,如PG720/PG740/PG760,波特率为1.5Mb/s。

⑤使用CP5411/5412(A2)的PG730/PG740/PG750/PG760/PG770编程装置,最大波特率为12Mb/s。

⑥使用了CP5412(A2)的个人计算机,最大波特率为12Mb/s。

(3) DP从站:指那些进行输入或输出的外围设备(传感器或执行器)。典型的DP从站包括开关量输入设备、24V或230V电压输出设备、模拟量输入设备、模拟量输出设备、计时器等。目前大多数DP从站只有32Byte的输出数据(数据量的限制只是出于设计的原因)。西门子PLC系列中能够连接到PROFIBUS-DP中的从站有:

①分布式I/O系统中的ET200M/ET200L/ET200B/

ET200C/ET200U。

②使用IM308-C的S5-115U/S5-155U的可编程序控制器。

③从机S5-95U/DP,最大波特率为1.5Mb/s。

④ DP/AS-i收发器。

⑤人机接口MMI。

⑥现场设备,如其他制造厂商生产的驱动器、阀门、过程控制器、数控机床控制器等。在一个单主站系统中只有一个主站,这种组态提供了最短的总线周期。

在多主站组态当中,总线上有几个活动主站,它们或是与各自的从站构成相互独立的系统,或是作为网上附加的组态或诊断设备,如图9-6所示。任何一个主站均可读取输入和输出的映像,只有一个主站允许对DP从站写入输出数据,这个主站在系统组态时被指定。多主站系统的总线周期比单主站系统的要长一些。图9-6PROFIBUS-DP多主站系统表9-2给出了能连接到PROFIBUS-DP网上的西门子PLC系列的主机模块,以及它们所需的接口模块或通信模块,同时给出了配置和编程该模块所需要的软件。表9-2可以连接到PROFIBUS-DP上的西门子主机模块西门子PLC系列S5/S7产品组成的PROFIBUS2-DP网的优点如下:

(1)可进行集中和分布系统的编程。SIMATICS7/M7都用STEP7编程,在编程时不用考虑硬件配置。

(2)集中和分布的全系统性能。SIMATICS7/M7提供了有效的系统支持,包括软件参数化I/O,功能模块易于连接等。

(3)通过PROFIBUS-DP编程来测试启动。分布式的自动化结构便于分散进行系统的安装、使用和维修;使用STEP7进行现场集中控制编程、诊断、测试就像采用集中处理单元的集中编程接口时一样。

(4)集成的DP接口。DP主机接口已经集成在许多CPU中,为用户节省了一定量的槽位,并能对系统性能进行优化。

(5)为系统操作者提供控制和监视。在配置和实际操作中,SIMATICS7/M7和COROS操作盘可以相互配合使用;在网络中,站节点是连在集中编程接口(MPI)还是PROFIBUS-DP上并不重要。

图9-7给出了包括S7-300/400、S5、ET200的PROFIBUS-DP现场总线的示意图。图9-7采用光缆和双绞线的PROFIBUS-DPLAN网络

9.3S7系列PLC与其他计算机的通信

9.3.1CP340的工作原理

CP340通信处理器模块有一个RS232C串行通信接口,它使S7-300PLC能与通信伙伴以点到点通信方式进行数据交换。任何具有RS232C接口的设备都可以成为通信伙伴,这里一般地称为计算机。

CP340是PLC与计算机进行数据交换的桥梁和纽带,如图9-8所示。一方面,CP340的RS232C接口与计算机相连;另一方面,CP340通过背板总线与PLC的CPU相连。为减小通信时CPU模块的负担,CP340被设计成智能型的CP340模块上的处理器,既受控制又有自主性,它根据CPU模块的命令自主管理串行口的收发工作。图9-8CP340的连接

1.CPU模块与CP340

CP340模块上有接收缓冲存储器和发送缓冲存储器。依靠接收和发送缓冲存储器(缓冲区)可建立起CPU模块与CP340的联系。发送时,CPU模块只需要把发送的数据写入发送缓冲区,然后,由CP340把缓冲区中的数据逐个发送给计算机。CP340还负责从计算机接收数据,并把接收到的数据写入接收缓冲区。CPU模块以查询方式读接收缓冲区,如果缓冲区不空,则CPU得到接收数据。读写CP340上的缓冲区需要在用户程序中调用专用的功能块。写缓冲区的功能块称为发送功能块,读缓冲区的功能块称为接收功能块。CPU要发送的数据必须存储在数据块中,调用发送功能块可把数据块中的数据写入发送缓冲区。调用接收功能块可把接收缓冲区的数据读到数据块中。

2.CP340与计算机

CP340与计算机之间通过RS232C进行数据交换,数据交换根据双方约定的规则进行,这个规则称为通信协议。通信协议的要点包括波特率、字符格式、字符间隔、开始传输的条件以及如何保证传输信息完整等内容。

CP340上固化有两个标准通信协议,它们是3964(R)和ASCII(本节只讨论ASCII协议)。用STEP7中的专用组态工具可选择通信协议并确定协议的具体内容,组态数据存入CPU模块的系统数据块(SDB)中,该内容随PLC的其他组态数据被下载。当PLC启动时,有关的组态数据传入CP340,然后,CP340按照选定的通信协议传输数据。一般情况下,实施通信协议不需S7CPU参与。

CP340中的ASCII协议仅实现了OSI参考模型的第1层(物理层),而3964(R)还实现了第2层(数据链路层)。

3.CP340的启动及工作特性

CP340是智能模块,上电后其启动过程由上电初始化和参数设置两个阶段组成。CP340一旦上电就进行初始化,这时,CP340以出厂时的参数设置串行接口。然后,CP340以3964(R)协议默认参数自动启动。CPU由STOP转为RUN时,进行参数重置,CP340的默认参数被用户设置的参数覆盖后进入运行状态。

CP340有停止、重置和运行三种工作状态。如果发生故障,CP340就进入停止状态。若故障消除,则停止状态自动撤消。只有在运行状态下,CP340才能接收或发送信息帧。

在CP340的前面板有三个发光二极管(LED):红色为故障LED(SF)、绿色为发送LED(TxD)和接收LED(RxD)。串行接口收发数据时,由TxD或RxD发光二极管分别发光显示。SF在CP340故障和停止状态时发光,在启动阶段SF也发光显示。故障原因有硬件故障、固化的软件错误、参数非法和接收线断裂。接收线断裂时,SF和RxD都发光。通过设置诊断报警参数,可在CP340有严重故障时向CPU报警并触发中断请求,以便采取相应措施。如果故障发生,CP340通过背板总线向CPU提供诊断数据,数据被写入CPU的诊断缓冲区。为中断请求服务的是组织块OB82,OB82的变量给出了诊断数据,用户程序可根据变量数值采取应急措施。另外,诊断数据也可通过编程器查找。CP340能诊断出的严重故障有断线、参数非法、RAM故障、ROM故障和系统故障。9.3.2字符的串行传输

在串行通信中,每个字节被逐位按一定顺序发出。对于异步串行通信,为保证收发双方同步,不仅应使收发双方传输速率(波特率)相同,还要在每个数据字节的前后附加一些辅助位:起始位、校验位和停止位。其中,校验位用于判断字符传输错误。

字符格式由数据字节(数据位,Databit)和辅助位组成。CP340中的字符格式如表9-3所示。表9-3CP340中的字符格式形成字符格式或从字符格式中分解出数据由CP340完成。

由许多字符组成的信息帧中的字符被逐个连续发出,正常情况下,字符与字符的发送时间间隔很小,如果发现字符间隔超出允许值,可认为信息帧结束或传输异常。9.3.3ASCII通信协议

1.信息帧格式与字符透明性

为了适应不同的应用情况,ASCII协议有三种类型的信息帧格式供选择,即有结束标志的信息帧格式、定长度信息帧格式和自由信息帧格式。有结束标志的信息帧用一个或两个特定字符作为判断信息帧结束的依据。对于定长信息帧接收方收到约定个数的字符即认为信息帧结束。自由信息帧格式既无特定结束标志又无确定长度,接收方以在约定的时间(字符间隔时间)内收不到新字符作为信息帧结束依据(超时结束)。三种格式的信息帧长度均不能超过1024Byte。对于有结束标志的信息帧格式,不允许在正文中出现与结束标志相同的字符,以避免接收方错误认为信息帧结束。定长信息帧和自由信息帧是完全透明的,任何字符都可用在信息帧中。

2.CP340为发送方

以ASCII协议发送时,CP340把CPU模块写入发送缓冲区的数据逐个发出。发送字符个数由发送功能块中的长度参数决定。CP340发送信息帧长度可与CP340接收长度不同。当两个自由信息帧连续发送时,CP340会在两个信息帧之间插入延时时间,该时间大于允许字符间隔时间。也就是说,CP340允许CPU模块随时提出发送请求,但请求不一定能立即得到响应。

3.CP340为接收方

当CP340为接收方时,它边接收边监测信息帧是否结束。如果在接收过程中发现字符校验错等错误,则CP340将继续接收直到信息帧结束。如果接收的是定长信息帧或者结束标志信息帧,且发生了字符间隔超时错误,则本次信息传输结束。

4.握手序列与流控制

握手序列控制通信双方之间的数据流,避免数据传输时丢失。握手序列分硬握手和软握手两类,用信号线(如TES/CTS)的电平变化实现的称为硬握手,通过向对方发送特定字符(如XON/XOFF)实现的是软握手。一旦CP340在允许流控制方式下,就自动向对方发出字符XON(或使输出信号RTS为逻辑“1”),表示可以接收数据。如果信息帧收完或接收缓冲区(1024Byte)距溢出差50Byte,CP340发出字符XOFF(或使RTS为逻辑“0”),则表示不能接收数据。如果发送方继续发送造成缓冲区溢出,则生成出错信息并丢掉后面信息帧的接收数据。一旦CPU模块取走信息帧或接收缓冲区可用,CP340又发XON(或使RTS为逻辑“1”),就表示可以接收数据。

CP340收到XON(或输入信号CTS为逻辑“1”)才能发送数据。在发送过程中,若收到XOFF(或CTS变为逻辑“0”),CP340就暂时停止发送。如果在预定的时间内收不到XON(或CTS始终为逻辑“0”),CP340就终止发送状态并产生一个相关的错误信息。

选择软握手控制数据流时,不允许在信息帧中出现字符XON和XOFF。使用硬握手信号时,应将RTS/CTS信号与对方接通。使用控制数据流有助于信息帧的完整,在实际中可根据具体情况选择使用或不使用。

5.CP340的接收缓冲区

CP340的接收缓冲区为1024Byte,可以把它分成最多250块的环形队列,这样接收缓冲区就能同时存放先后收到的250个信息帧。CPU模块从缓冲区取信息帧时,取走的总是最先收到的信息帧。

如果实际情况要求CPU模块读取最新的信息帧,就只能把缓冲区块数设置为1,并且允许新信息帧覆盖(重写)先收到的信息帧。

6.参数设置

表9-4给出了ASCII通信协议的主要设置参数,由于有三种信息帧格式以及数据流控制等内容,因此,ASCII协议的参数较多。这些参数与分类相关,不用某功能,则相关参数不必设置。例如,不使用数据流控制,则与流控制相关的参数就不必设置。表9-4ASCII通信协议的主要参数续表9.3.4通信功能块

专用通信功能块是CPU模块与CP340的软接口,它们建立及控制CPU和CP340的数据交换。专用通信功能块有四个:发送功能块FB3(P_SEND)、接收功能块FB2(P_RCV)、读RS232C接口信号状态功能块FC5(V24_STAT)和接口信号状态设置功能块FC6(V24_SET)。

这些功能块与CP340的组态工具等需要专门安装。安装完成后,功能块在STEP7的CP340库(Library)中,使用时,需要将用到的功能块拷贝到用户程序中。

1.发送功能块FB3

发送功能块FB3有两个功能:一是将数据块中的数据写入CP340的发送缓冲区;二是监测CP340发送并返回CP340的发送情况。FB3的运行特性类似于定时器指令,完成一次发送需要多个扫描周期(调用多次)。因此,必须连续在每个扫描周期中调用FB3,使其在每个循环周期得到扫描,以避免一个信息帧的发送过程中断。

表9-5给出了发送功能块FB3的用法及参数说明,表中P_SEND为FB3的符号名,FB3需要大小为40Byte的背景数据块,I_SEND是背景数据块符号名。表9-5发送功能块FB3的用法及参数说明续表

FB3P_SEND只能将数据块中连续存放的数据传给CP340,为此,需要在传送时说明数据块号(DB_NO)、数据在数据块中的起始字节号(DBB_NO)和数据字节长度(LEN)。图9-9是FB3P_SEND的时序图。图9-9FB3P_SEND的时序图

FB3P_SEND有闲置和发送两种状态。如果输入REQ有上升沿,FB3P_SEND就由闲置转入发送,开始向CP340传送数据,并由CP340将数据发送给接收方。数据量和通信线路(CP340与计算机间的线路)的质量决定发送的持续时间。在发送期间,REQ不必始终为“1”。

CP340发送过程结束后,FB3P_SEND从发送转为闲置状态。通过FB3P_SEND输出信号可得到发送完成情况。完成情况分正确完成和错误完成两种。正确完成时,输出DONE为“1”,输出STATUS的值为“0”;否则,输出ERROR为“1”,输出STATUS的值表示错误细节。在发送期间,如果输入R为“1”,则放弃发送并且将FB3P_SEND置为初始状态(复位)。但是,已经传入CP340的数据将继续发送。无错发完,输出DONE返回“1”;有错发完,输出ERROR返回“1”。

2.接收功能块FB2

接收功能块FB2有两个功能:一是将CP340接收缓冲区中的数据读回存入数据块;二是返回CP340的接收情况。FB2的运行特性类似于FB3,完成读数也需要多个扫描周期(调用多次)。

表9-6给出了接收功能块FB2的用法及参数说明,表中P_RCV为FB2的符号名,FB2需要40Byte的背景数据块,I_RCV是背景数据块符号名。

FB2P_RCV将CP340接收缓冲区的数据存放在数据块中,为此,需要说明数据块号(DB_NO)、数据存在数据块中的起始字节号(DBB_NO)。图9-10是FB2P_RCV的时序图。

FB2P_RCV有闲置、查询和接收三种状态。如果输入EN_R为“1”,就由闲置转入查询,查询CP340接收缓冲区。如果缓冲区中有数据转入接收状态,数据量就决定接收持续时间。读完CP340的接收缓冲区后,FB2P_RCV从接收转为查询状态。通过FB2P_RCV输出信号可得知读回的数据是否完整,如果数据完整,输出NDR为“1”,输出LEN的数值表示数据长度,输出STATUS的值表示错误细节。在查询和接收期间,EN_R必须始终为“1”。EN_R为“0”将使FB_RCV转为闲置状态。若EN_R变“0”时中断了正在进行的接收,则ERROR为“1”并由STATUS给出错误细节。表9-6接收功能块FB2的用法及参数说明续表图9-10FB2P_RCV的时序图若输入R为“1”,则将FB2P_RCV置为初始状态(复位),接收请求被终止。若R重新变为“0”,则从头开始接收。

3.读取和控制RS232C信号状态

在用户程序中需要用到RS232C信号状态,可通过调用功能FC5(符号名V24_STAT)读取。这些信号与功能FC5参数的对应关系见表9-7。表9-7FC5V24_STAT参数及RS232C信号的对应关系通过调用功能FC6(符号名V24_SET),可在用户程序中置位或复位RS232C的输出信号RTS/DTR。

4.通信错误信息

通过发送/接收功能块的STATUS参数,可以得到通信错误的细节。通信错误也称为通信异常事件,CP340将诊断出的异常事件分类编号。STATUS参数由16位二进制数组成,其中,位8到位12表示异常事件类型,位0到位7表示异常事件号,位13到位15不用(通常为0)。表9-8给出了事件号与异常事件的对应关系及排除方法。表9-8事件号与异常事件的对应关系及排除方法

续表

9.4计算机与PLC串行通信的软件实现

9.4.1通信方式与通信原理

如图9-11所示,通过PC/PPI电缆可以实现计算机与S7-200PLC之间的单主站通信。在该通信网络中,计算机为单一主站,S7-200PLC作为从站。图9-11系统硬件连接

PC/PPI电缆支持的波特率为9.6kb/s、19.2kb/s、187.5kb/s,支持的协议为PPI协议,即点对点协议。PPI协议是一个主从协议,网络上计算机作为主站,PLC作为从站。S7-200CPU通信端口采用RS485信号标准的连接接口,PC/PPI电缆将S7-200PLC与计算机连接起来,通过使用接收中断、发送中断和字符中断等指令,自由端口通信可以控制S7-200PLC通信端口的操作模式。本实例采用自由端口模式,允许在CPU处于RUN模式时,通信端口0使用自由端口模式,通过设定SMB30的值选择波特率、奇偶校验、每个字符的数据位和协议。CPU处于STOP时,停止自由端口通信,通信端口强制转换成PPI协议模式,此时,就可以向CPU中输入PLC程序,实现编程软件对PLC的编程和控制功能。9.4.2自由端口模式

通过编程,用户可以选择自由端口模式来控制S7-200的串行通信口。当选择了自由端口模式时,用户程序通过使用接收中断、发送中断、发送指令和接收指令来控制通信端口的操作。当处于自由端口模式时,通信协议完全由梯形图程序控制。SMB30(对应于端口0)和SMB130(对应于端口1)被用于选择波特率和检验类型。通过将SMB30或SMB130的协议选择域(mm,见表9-9)置1,可以将通信端口设置为自由端口模式。处于该模式时,不能与编程设备通信。表9-9特殊存储器SMB30和SMB130说明9.4.3通信程序设计实例

本实例采用主从通信方式,计算机为主机,可主动向PLC发出报文,PLC接收到该报文后进行异或校验。若校验正确,返回收到的数据;若校验后发现有传送错误,将校验错误指示位Q1.0置位。

1.PLC下位机通信程序设计

本程序使用RCV指令和接收完成中断程序接收数据,报文格式如表9-10所示,CPU在接收时检测起始字符和结束字符。程序占用PLC寄存器的VB100~VB190,VB90存放CPU计算出的异或校验结果,VB91和VB99分别存放计算机发送来的校验码和数据区字节数。表9-10接收缓冲区的数据//主程序

LDSM0.7 //若转换到RUN模式

EU

OSM0.1 //或首次扫描

CALLSBR_0

//调用初始化子程序,进入自由端口模式LDNSM0.7 //若转换到TERM模式

EU

RSM30.0,1 //设置为PPI协议(SM30.0=0)

DTCH23 //禁止各中断

DTCH9

DTCH10//初始化子程序SBR_0

LDSM0.0 //该位始终为1

MOVB5,SMB30

//19200b/s,8位数据,无校验,1位停止位

MOVB16#EC,SMB87

//允许接收,检测起始字符和结束字符,超时检测

MOVB0,SMB88//送报文起始字符0

MOVB16#FF,SMB89

//送报文结束字符十六进制数16#FF

MOVW+1000,SMW92//接收超时时间为1sMOVB100,SMB94//接收的最大字符数为100

ATCHINT_0,23

//接收完成事件连接到中断程序0

ATCHINT_1,9//发送完成事件连接到中断程序1

ENI//允许用户中断

RCVVB100,0

//端口0的接收缓冲区指针指向VB100//求异或校验码的子程序FCS

LDSM0.0

MOVB0,#XORC//异或值清0

BTI#NUMB,#NUMI//输入的字节数转换为整数

FOR#TEMP1,+1,#NUMILDSM0.0

XORB*#PNT,#XORC //异或运算

INCD#PNT //指针值加1

NEXT//接收完成中断程序INT_0

LDB<>SMB86,16#20//若是非正常接收结束

JMP1 //跳转到LBL1处

NOT //若接收到结束字符

MOVBVB102,VB99

//将接收到的数据字节数存放在VD96的最低字节

RV96.0,24 // VD96高位3字节清零MOVD&VB103,VD92

//接收报文数据区首地址送给指针VD92

+DVD96,VD92

//求校验码地址,VD96中为报文数据区字节数

MOVB*VD92,VB91//接收到的校验码送VB91

INCBVB99 //得到需要异或的字节数

CALLFCS,&VB102,VB99,VB90

//调用子程序FCS,计算校验码,结果送VB90LDB=VB90,VB91//如果校验正确

RQ1.0,1 //复位校验错误指示位

MOVB5,SMB34

//定时5ms以提供PPI电缆接收/发送模式切换时间

ATCHINT_2,10//启动定时中断

CRETI //中断返回

NOT //如果有校验错误

SQ1.0,1 //将校验错误指示位置1LBL1 //非正常接收结束时跳转到此处

LDSM0.0

RCVVB100,0 //启动新的接收

//发送完成中断程序INT_1

LDSM0.0

RCVVB100,0 //启动新的接收

//定时中断程序INT_2

LDSM0.0

DTCH10 //断开定时器中断

XMTVB100,0

//在端口0向计算机回送接收到的报文

用PC/PPI电缆连接计算机与PLC,将上面的程序下载至PLC中,将PLC置于RUN状态。可以使用VisualBasic编制上位机程序,计算机应接收到PLC返回的相同的数据。

2.基于VisualBasic的上位计算机通信程序设计

由于VisualBasic语言简单实用,下面将介绍使用VisualBasic实现计算机与PLC之间的串行通信的方法。

MSComm控件的属性集和使用方法在第8章中已经介绍过,这里只讨论通过MSComm控件具体实现这个通信程序代码的编写问题。前面已提到过MSComm控件提供的两种处理接收信息方式:

(1)事件驱动方式:RThreshold属性非0时,收到字符或传输线发生变化时就会产生串口事件OnComm。通过查询CommEvent属性可以捕获并处理这些通信事件。

(2)查询方式:通过查询InBufferCount(接收缓冲区的字节数)属性值,处理接收到的信息。

由于查询方式占用CPU的时间太多,下面采用事件驱动方式。通信的界面如图9-12所示,采用主从方式通信,计算机作主机,PLC作从机。点击“发送”按钮,计算机发送数组Array中的数据。计算机接收到PLC返回的数据后存放在数组rev中。图9-12通信的界面

1)串口及通信参数初始化

Dimrevlenth

‘定义模块级变量——接收字符的数组下标

Dimrev()AsByte’定义接收字符的动态数组

PrivateSubForm_Load()

WithMSComm1

.CommPort=1

‘根据用户具体情况选择串口,在此使用串口1

.Settings=“19200,n,8,1”

’19.2kb/s,无校验,8位数据位,1位停止位

.InputMode=comInputModeBinary

'以二进制格式读取接收缓冲区.RThreshold=1

'接收到的字符数大于等于1就会产生接收事件

.InputLen=0'读出接收缓冲区中的所有内容

.OutBufferCount=0'清空发送缓冲区

.InBufferCount=0'清空接收缓冲区

EndWith

IfNotMSComm1.PortOpenThen'打开串口

MSComm1.PortOpen=True

EndIf

EndSub

2)发送程序

要发送的报文的格式为:约定起始字符为0,结束字符为十六进制数&HFF。校验码为报文中第二个字节与数据区内各字节的异或和。下面是发送程序的代码。PrivateSubSend_Click()‘发送数据

revlenth=-1’置接收字符的数组下标初值

sdata=Array(1,2,3)

‘待发送数据1、2、3,可以修改其个数和内容

DimnByte()AsByte

ReDimnByte(UBound(sdata)+4)AsByte

'定义发送报文的数组

nByte(0)=0 '送起始字符

nByte(1)=UBound(sdata)+1'送数据区字节数

fcs=nByte(1) '校验码初始化

Fori=2ToUBound(sdata)+2

nByte(i)=sdata(i-2)

'待发送数据送报文数组的数据区

fcs=fcsXornByte(i) '异或运算,求校验码

Next

nByte(i)=fcs '送校验码

nByte(i+1)=&HFF '送结束字节

MSComm1.Output=nByte'发送报文

EndSub

3)接收数据

PLC只有在接收到计算机发送的信息后,才发送数据,故可以将发送完成后接收到的第一个字节作为接收报文的开始,直到串口无接收事件时认为报文结束。

下面是接收程序的代码。PrivateSubMSComm1_OnComm()‘OnComm事件

Dimrevtemp()AsByte

’定义存放每次接收的数据的暂存数组

ReDimPreserverev(100)AsByte

‘预设接收字符的数组rev(最大101字节)

Text1.Text=“”’清除文本框

SelectCaseMSComm1.CommEvent

CasecomEvReceive‘如果接收到字符

revtemp=MSComm1.Input

’将接收缓冲区的内容放入暂存数组revtemp

Fori=LBound(revtemp)ToUBound(revtemp)

revlenth=revlenth+1

rev(revlenth)=revtemp(i)

‘将接收到的各字节放入接收字节数组rev

Nexti

ReDimPreserverev(revlenth)AsByte

’得到接收字节数组的实际大小

EndSelect

Fori=LBound(rev)ToUBound(rev)

Text1.Text=Text1.Text&Str$(rev(i))

‘在文本框Text1中显示接收到的数据

Nexti

EndSub运行程序,计算机就能实现简单的发送和接收数据的功能了。程序设计时可以通过改变发送程序中函数Array的参数列表(即改变数据的个数和数值)来改变发送内容。编程者还可根据实际需要改变报文的输入和显示方式,制作更友好的用户通信界面,还可以在接收程序中检测报文的起始符和结束符,并对接收数据进行异或校验。

9.5Prodave通信软件在点对点

通信中的应用

9.5.1Prodave简介

PLC具有很高的可靠性,一般用来执行现场的控制任务,但是它的人机接口功能较差。在工业控制系统中,PC机与PLC之间的通信是最常见和最重要的通信之一。Prodave可以很好地解决以上不足。

Prodave是“ProcessDataTraffic”的缩写,它是用于PC与S7系列PLC之间的数据链接通信的工具箱。通过下列硬件,用户可以很方便地实现PLC与PC之间的数据通信。

(1)用于PC的MPI通信处理器,例如CP5511、CP5611和CP5612,通信速率可以达到12Mb/s;

(2)用于S7-300/400的PC/MPI适配器(PC-Adaptor);

(3)用于S7-200的PC/PPI编程电缆。

Prodave的动态链接库(DLL)提供了大量的基于Windows操作系统的DLL函数供用户解决PLC与PC之间的数据交换和数据处理问题。可以在VisualBasic中调用这些函数。Prodave的函数分为基本函数、数据处理函数和电话服务函数(TelServiceFunctions)。其中:基本函数用于建立、断开和激活PC与PLC之间的连接,以及读、写PLC中的各种数据;数据处理函数用于PC中用户数据的转换和处理,与PC和PLC之间的通信没有直接的关系;电话服务函数用于PC通过电话线与PLC建立连接。9.5.2PC机与PLC之间的建立与断开连接

通信之前,用户必须首先调用load_tool函数和unload_tool函数。load_tool函数主要用于建立PC机与PLC之间的连接,unload_tool函数主要用于在通信结束时断开PC与PLC的连接,否则会造成PC系统的异常状况。

VisualBasic在调用DLL函数之前,需要用Declare语句声明要使用的DLL函数,其声明必须放在模块级。声明DLL函数的主要作用是指明该函数所在的DLL库名及路径,以及该函数的参数说明,以便Windows能找到该函数,并正确地执行该函数。

在声明unload_tool函数之前,应首先声明它使用的用户自定义的数据类型plcadr:Typeplcadrtype

ADDRESSAsByte '站地址,默认值为2

SEGMENTIDAsByte '段标志符,固定为0

SLOTNOAsByte '槽的编号,默认值为2

RACKNOAsByte '机架号,固定为0

EndType然后声明程序中使用的函数:

DeclareFunctionload_toolLib“w95_s7.dll”(ByValnrAsByte,ByValdevAsString,adrAsplcadrtype)

‘AsLongnr是PC要激活的连接的个数(1~32个),dev是用户驱动设备的名称,对于 MPI

'驱动器,dev为"S7ONLINE",adr是连接的地址列表

DeclareFunctionunload_toolLib"w95_s7.dll"()AsLong9.5.3数据传输函数

数据传输函数主要负责实现PC与PLC之间的数据通信和传输。它包括以下几个函数:

1.读PLC字节的函数

DeclareFunctionX_field_readLib"w95_s7.dll"(ByValnoAsLong,ByValamountAsLong,valueAsByte)AsLong

X_field_read函数用于读取PLC的X地址区中从地址no开始的amount个字节的数据,并将其存放在PC的数组变量value中。其中的X可取e(输入I)、a(输出Q)和m(位存储

器M)。

2.写PLC字节的函数

DeclareFunctionX_field_writeLib"w95_s7.dll"(ByValnoAsLong,ByValamountAsLong,valueAsByte)AsLong

X_field_write函数用于将存放在PC的数组变量value中的数据写入PLC的X地址区从地址no开始的amount个字节中,X可取a和m。

3.读/写数据块中的字节的函数

DeclareFunctiond_field_readLib“w95_s7.dll”(ByValdbAsLong,ByValnoAsLong,ByValamountAsLong,valueAsByte)AsLong

DeclareFunctiond_field_writeLib“w95_s7.dll”(ByValdbAsLong,ByValnoAsLong,ByValamountAsLong,valueAsByte)AsLong

d_field_read函数用于读取PLC的db数据块中从地址no开始的amount个字节的数据,并将其存放在PC的变量value中。d_field_write函数用于将存放在PC的数组变量Value中的amount个字节的数据写入PLC的db数据块中从地址no开始的区域。

4.读定时器/计数器字的函数

DeclareFunctionX_field_readLib"w95_s7.dll"(ByValnoAsLong,ByValamountAsLong,valueAsByte)AsLong

X_field_read函数用于读取从PLC的地址no开始的amount个定时器或计数器的当前值,并将其存放在PC的数组变量value中。X可取t(定时器)和z(计数器)。

5.写计数器字的函数

DeclareFunctionX_field_writeLib"w95_s7.dll"(ByValnoAsLong,ByValamountAsLong,valueAsByte)AsLong

X_field_write函数用于将存放在PC的数组变量value中的amount个字的数据写入PLC从地址no开始的计数器区,改写的是计数器的当前值。

6.读/写数据块中的字的函数

DeclareFunctiondb_readLib“w95_s7.dll”(ByValdbAsLong

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论