西门子6ES7232-0HB22-0XA8现货包邮
近年来,随着工厂自动化系统的兴起,可编程控制器(PLC)和现场总线在工业控制中得到了广泛的应用。在工厂自动化系统中,一般利用PLC的高可靠性、模块化结构以及编程简单等特点,将其作为下位机完成实时采集和控制任务;利用现场总线系统的开放性、互用性以及系统结构的高度分散性来构筑自动化领域的开放互连系统。控制系统中的主从站结构是经常用到的通讯方式,以往的从站只能单纯的靠主站中存储的程序来运行,主站若发生故障,从站就不能继续工作,这样就使整个系统的连续工作能力下降,不利于企业效益的增长。要解决这一问题,可换用带CPU的智能化DP从站,它不仅能实现独立的PID控制,也能接收PROFIBUS的PLC主站或PC主站的控制数据,构成一个数字化、智能双向、多点的通信系统现场总线网络,实现优控制,DP从站具有可靠性高、抗扰能力强、、维护方便的特点,可以很好的解决上述问题。
1 通讯结构
CPU315-2DP是西门子生产的S7系列产品,它的CPU上集成有PROFIBUS-DP通讯接口。AriCon 211-DP是北京金自天正智能控制股份有限公司(以下简称金自天正公司)的产品,它的CPU上也集成有PROFIBUS-DP通讯接口。整个的连接结构如图1所示。
图1 系统通信结构连接框图
MPI:MPI(Multi Point Interface)数据线用来连接PC机的串口和CPU315-2DP的通讯口。它是通过一个西门子生产的PC适配器把PC机的串口转化为MPI协议的。
RS232C:RS232C(RS表示Recommended Standard,C代表RS232新定义的一个型号)是目前PC机与通信工业中应用广泛的一种串行接口。它被定义为连接数据终端设备(DTE)和数据电路设备(DCE)的电缆中的信号电特性,是一种在低速率串行通讯中增加通讯距离的单端标准,采取不平衡传输方式,即单端通讯。RS232C适用于近距离传输。连接方式如图2所示。
图2 RS232串行接口连接方式
PROFIBUS-DP(Process FieldBus):采用RS485传输技术通讯,波特率可选9.6Kbps~12Mbps,电缆的大长度就取决于所选用的波特率。线路的两端带有终端传输电阻,介质为带屏蔽的双绞电缆。在这一级,PLC通过高速串行线同分散的现场设备进行通讯。
2 硬件部分
2.1 CPU315-2 DP
其主存储器的大存储量为512KB,CPU能多处理82K语句,并提供大8192个标记,512个定时器和512个计数器。CPU可扩充到1024DI/DO或128AI/AO。它的强大功能也可用一个集成的PROFIBUS-DP接口达到,并可作为主设备或从设备设置。多可将125个PROFIBUS-DP站连接到主设备。数据传输率为12Mbps。分布式I/O以与中央I/O完全相同的方式(即用STEP 7)进行配置和编程。它的通信协议芯片SPC3集成了DP协议中的FDL层,可以承担通信部分的微处理器负载,实现DP从站通信处理。
2.2 AriCon 211-DP
可用符合IEC61131-3标准的AriOCS对其组态编程,具有高灵活性,可以连接32个功能模块(数字I/O、模拟I/O、脉冲计数、通讯等)。具有极快的扫描周期,可连接附加的外部存储器,无需MPI适配器。大传输率为12Mbps。组态好的数据要使用RS232C下装到模块的CPU中。
3 软件部分
由PROFIBUS总线构成的现场总线控制器的软件包括:PROFIBUS总线设备的配置软件、驱动软件、组态软件和应用程序等。它们具有以下功能:主站和远程从站的参数设定,主站对从站的数据读写、图形组态、数据库建立与维护、数据统计、报表打印、故障报警,应用程序的开发、调试、运行等。其中,配置软件和驱动软件由设备厂商提供,组态软件可采用STEP7等通用型软件。
本次实验所有的软件都基于Microsoft bbbbbbs NT系统,有良好的用户界面,其功能也都相当完善和实用,使用非常方便。
3.1 编程组态软件STEP7
STEP7是西门子开发的一套SIMATIC 工业软件。它功能非常强大,不仅对开关量有完善的指令,在处理模拟量时也有丰富的指令系统。可以使用任何一种编程语言,如STL(语句表)、FBD(功能块图)和LAD(梯形图),可随心所欲的从一种语言切换到另一种。硬件配置工具和试验工作方式的切换设备以及指令集(存有丰富的指令),是非常复杂的功能也能简便地编程。地址的分配和安装模块的组态是西门子STEP7管理器的一个功能,在这里,模块作为一个实际的PROFIBUS主站系统出现。完成的工程通过串口MPI传送给CPU。
3.2 组态软件AriOCS
AriOCS是金自天正公司开发的专用于IEC1131-3 AriCon CPU21x编程组态的软件,采用IEC标准规定的五种语言。它支持在线调试修改和离线仿真,调试功能非常丰富,具有在线帮助功能。它还附带了一个参数配置软件WinNCS。
3.3 GSD文件
PROFIBUS设备具有不同的性能特征,主要表现在现有功能(即I/O信号的数量和诊断信息)的不同或可能的总线参数,例如波特率和时间的监控不同。这些参数对每种设备类型和每家生产厂来说均有差别,为达到PROFIBUS简单的即插即用配置,这些特性均在电子数据单中具体说明,有时称为设备数据库文件(即GSD文件)。使用基于GSD的组态工具可将不同厂商生产的设备集成在一个总线系统中。GSD文件由生产厂商分别针对每一种设备并以设备数据库清单的形式提供给用户,此种文件格式便于读出任何一种PROFIBUS-DP设备的设备数据库文件,并且在组态总线系统时自动使用这些信息。
4 操作过程
将所有设备按照图1所示顺序连接好。
PROFIBUS通信协议将网络中通讯参与者分为主站和从站:主站要向从站发送通讯请求指令,从站根据请求指令中指定的内容向主站发回数据。一个主站可以向多个从站发送通讯请求,并利用从站地址(SLAVE ADDRESS)或从站识别码(SLAVE ID)来区分。
智能从站与普通从站的大区别就是带有自己的CPU,它除了处理来自主站的数据外,还要处理本身的I/O数据,并且必须确保两种数据不重叠。在给主站组态的也要给从站组态。
主站的CPU必须从FFh到00h记数,并且要先把来自智能从站的数据传送到主站的输出模块,主站再把自己的数据传送给智能从站。从站接收到的数据必须保存在CPU外围模块的输入区域,并且通过背板总线传送给输出模块。另一方面,智能从站要从00h到FFh记数。这些数据也必须被保存到从站CPU的输出区域,通过PROFIBUS传送到主站,主站再传给输出模块。以此做周期性循环。
这里对以下数据进行组态:
①主站:PROFIBUS地址 1
输入区域 从10开始 字节长度:2Byte
输出区域 从20开始 字节长度:4Byte
②智能从站:PROFIBUS地址 2
输入区域 从30开始 字节长度:4Byte
输出区域 从40开始 字节长度:2Byte
参数数据 从50开始 字节长度:24Byte(固定)
诊断数据 从60开始 字节长度:6Byte(固定)
状态数据 从100开始 字节长度:2Byte(固定)
组态好的PROFIBUS地址必须与CPU模块上拨码开关设定的地址一致。
输入输出区域中的数据是映射到对方CPU中的数据:主站的输入对应于从站的输出,它们的字节长度要相等;而主站的输出则对应于从站的输入,它们的字节长度也要相等。
用STEP7给主站CPU315-2 DP组态,组态好的数据通过MPI电缆下装到主站的CPU中。在STEP7中,为主站编程,梯形图如图3所示。
图3 主站编程梯形图
其中:M0.0为中间变量,Q1.0对应于主站所带的I/O模块地址,而Q20.0则为映射到智能从站的数据,它对应着智能从站的Q30.0。
智能从站的组态采用组态软件AriOCS,组态好的数据通过RS232C传送给AriCon 211-DP。在AriOCS中,为智能从站编程,梯形图如图4所示。
图4 从站编程梯形图
其中:I30.0为映射到主站的数据,而Q2.7则对应于智能从站所带的I/O模块地址。
PROFIBUS通信协议保障了通信的高可靠性,这要以硬件和软件设计为基础。在通信接口连接时,必须遵循一定的规范,如信号的隔离、总线接口与收发器间避免线路过长等。这样,主从站就可以实现数据的通讯了。
5 结语
本次实验主要是实现了PLC与智能从站之间的数据通讯。使用智能从站的大好处在于,当主站出现故障停止运行时,智能从站因自身带有CPU,组态的数据都存在自己的CPU中,能够继续运行,而不受主站的影响,极大的**了系统连续工作的能力,该方法值得推广应用。
SIEMENS PLC系统中热插拔功能的应用与说明我们建议您访问siemensA&D公司的技术支持网站:www4.ad.siemens.de 您可以在该网站的检索窗口中键入HotSwap关键字,获取相关信息:
步在IE浏览器中输入www4.ad.siemens.de路径,第二步选择English页面,第三步在搜索框中输入您产品或问题的关键字(英文),第四步用鼠标点击bbbbbb键;
在许多应用场合,我们需要PLC控制系统能够实现热插拔功能,所谓热插拔就是在系统通电运行状态下,进行硬件的更换和调整。
SIEMENS PLC控制系统关于热插拔功能的定义:
1.带电插拔模块时,确保不造成模块的硬件损坏;
2.带电插拔模块时,CPU不停机,并产生报警;
3.带电插拔模块时,该模块I/O通道的数值保持不变,而其他模块的运行不受影响;
4.带电插拔模块时,CPU中触发中断组织块或通过DP诊断程序块,得到模块拔出或插入的事件信息,在用户程序或中断组织块OB**中进行相应控制逻辑和I/O通道的处理
SIEMENS的PLC控制系统中:
ü S7-200系列PLC不支持热插拔功能;
ü S7-300CPU直接带I/O模块的方式不支持热插拔;
ü S7-300作为PROFIBUSDP主站下挂DP从站ET200M、ET200S、ET200iS,支持热插拔功能; (需要使用有源总线底板,如下说明)
ü S7-400作为PROFIBUSDP主站下挂DP从站ET200M、ET200S、ET200iS,支持热插拔功能; (需要使用有源总线底板,如下说明)
ü S7-400CPU直接带I/O模块的方式支持热插拔。
S7-400系统由于很好的电磁兼容性和抗冲击、耐震动性能,能大限度的满足各种工业标准,模板能够带电插、拔,当S7-400机架上插入或取出模板时,都会在CPU中产生一个中断信息,供客户在用户程序中对模板更换的动作进行相应的处理。
ET200M的有源总线底板配置与说明:
ET200M 是在工业现场经常使用的PROFIBUSDP分布式从站,一个ET200M从站一般由导轨(S7-300系列通用导轨)、IM153接口模块、若干块S7-300系列的模块(PS电源模块、I/O模块、CP通讯模块、FM功能模块)组成:这样的ET200M从站是不支持热插拔功能的。为了实现ET200M从站的热插拔功能,我们需要对ET200M的硬件配置进行一些调整,通用导轨更换成带有有源总线模板的导轨.PLC(可编程逻辑控制器)已经广泛应用于钢铁、石油、化工、电力、建材、机械制造、汽车、轻纺、交通运输、环保及文化娱乐等各个行业,它具有高可靠性、抗干扰能力强、功能强大、灵活,易学易用、体积小,重量轻,价格便宜的特点,在**计量方面也有着广泛的用途,在用于**累积时又有其编程的独特之处,下面进行详细的分析和论述,包括在西门子S7-200CPU上编程的例子。
**计输出的信号一般是脉冲信号或4-20mA电流信号,这两种信号输出的都是瞬时**(也有用继电器输出累积量信号,原理一样,不再赘述),我们的目的是在PLC中计算和显示瞬时**值和计算累积量值,当输入信号是脉冲信号是,在计算瞬时**的时候,必须按照一个严格的时间间隔计算才能保证瞬时**的准确性,计算瞬时**的时候必须用定时中断来进行,在PLC系统中只能运行这一个中断程序,不允许再产生其它中断(是低优先级的中断也不允许运行),以防止干扰定时中断的时间间隔的准确性,计算瞬时**就是将这个时间段的累计脉冲个数换算成累计**,再除以时间就是瞬时**,对于4-20mA输入只需按照其对应的量程进行换算就可以直接得到瞬时**,而累积**就是将每个时间段内的累积**累加起来就是累积**,在实际使用PLC编程的过程中必须注意以下几个问题:
1. 输入脉冲频率范围是否超出PLC接收的范围;
2.PLC高速计数器在达到大计数值时如何保证计算正确;
3. 如何保证定时中断不受干扰;
4. 如何避免计算累积量的误差;
5. 累积量的大累积位数;
6. 如何复位累积量;
下面就关键的2,4,6问题进行详细的叙述,以西门子S7-200CPU224为例,S7-200的CPU224具有6个单相大30kHz的高速计数器,但PLC内部没有提供相应的算法来计算频率,需要自己编程计算,这就需要在PLC高速计数器在达到大计数值时要保证计算的正确性,实际编程时,对高速计数器初始化以后就使之连续计数,不再对其进行任何干预,其高速计数器的初始化程序如下:
注意:此段程序应该放到PLC个扫描周期执行的程序中执行。
对于高速计数器是否达到大计数值时需要判断,S7-200CPU的高速计数器是可以周而复始的进行累计的,高位为符号位,小值为7FFFFFFF,由于计数器是一直累加的,不可能出现本次读取的的计数值小于上次的计数值,判断计数器当前值是否小于前一次的计数值,就可以判断计数是否达到大值的拐点(7FFFFFFF),如果达到,则执行特殊的计算以便消除计算错误,如下列程序所示,当当前计数值大于等于上次计数值时,两个计数值做差,就得到程序两次扫描时间间隔内的计数差值,将当前计数值赋值到上次计数值上;当当前计数值小于上次计数值时,计算上次计数值与7FFFFFFF之间的差值(用减法),以及当前计数值和7FFFFFFF之间的差值(用加法),将两个结果相加就是程序两次扫描时间间隔内的计数差值,从而实现对对累计计数值达到拐点时的正确计算。
注:此程序应放在定时中断子程序中执行。
实际上,在现场应用中定时中断子程序是采用250ms中断一次执行的,使用SMB34进行控制的,需要注意的是,系统中必须只保证这个中断是唯一存在的,不会受到其他中断的影响,否则可能会由于其他中断的影响使周期性中断不准时,从而影响精度。
通过以上计算就得到了250ms内**计发过来的脉冲个数,这个数值乘以脉冲当量就是250ms内的**值,再除以时间就是瞬时**,在250ms内再执行累加程序就可以计算累积**了,在计算累积**过程中需要避免累积过程的的计算误差,我们知道,**累积量是一直累积的一个数值,一般会累积到8位数,而PLC内部的浮点数的有效位数是6位,当累积量数值很大的时候就会造成一个大数和一个小数相加,势必导致小数的有效位数丢失,造成很大的累积误差,要避免大数和小数相加的情况出现,解决方法是采用多个**累积器,只允许同数量级的数值相加,从而避免数值有效位数损失,实际编程中采用了5个累积器,根据常用**情况下,在周期中断时间间隔(250ms)内流过的**乘以15作为个累积器的上限,当达到这个累积器的上限值后,将这个累积器的值累加到第2个累积器中,并把个累积器清零,对于第三个累积器也同样处理,第4个累积器用于保存累积量小数部分数值,第5个累积器用于保存累积量整数部分数值,这样在显示总累积量时只需显示整数部分和小树部分就可以了,整个过程充分避免了累积过程中大数与小数相加的情况出现,在实际工程中,需根据**的大小、周期中断的时间间隔来确定所用累积器的个数,而累积器的整数部分用双整数来表示,双整数的范围是-2,147,483,648到+2,147,483,647,可以使累积器的整数位数达到9位,这样,在显示累积量时就可以多显示9位整数的累积量和6位的小数累积量。总计15位,从而省略累积器倍乘系数,使读数更简便。
对累积器需要在一定条件下复位,累积到大数值或手动复位,在中断程序中判断累积量是否达到超过大位数,当超过大数值时,将各个累积器清零,清零的触发信号也可以是手动触发。