• 6ES7331-7KB02-0AB0型号介绍
  • 6ES7331-7KB02-0AB0型号介绍
  • 6ES7331-7KB02-0AB0型号介绍

产品描述

产品规格模块式包装说明全新品牌西门子

6ES7331-7KB02-0AB0型号介绍


该设计中CPU选用的是Atmel公司的一款8位AVR内核结构的微处理器AT90CAN128。AT90CAN128是一款基于AVR增强型RISC结构、低功耗、采用高密度非易失存储器技的单片机。芯片执行单时钟周期的指令,高达1MIPS/MHz的数据吞吐率,有效地优化了系统在处理速度和功耗之间的矛盾[1]。
AT90CAN128芯片内的ISP Flash,可以通过SPI接口多次编程。一个引导程序使用任何接口,下载用户程序到应用Flash存储器,实现用户程序的多次编程,这为嵌入式软PLC运行系统的设计应用提供了灵活且的解决方案。设计中,在嵌入式微处理器上的系统应用程序只需要移植一次,就可以在不同的用户环境中正确执行。即使当硬件平台发生变化时,只需要对用户程序进行编辑移植就可,而系统应用程序则不需要任何改变。这样有效保护了系统应用程序资源,提高了系统开发效率,增加了应用程序的复用率。
3Boot Loader的原理
在嵌入式应用软件平台上,Boot Loader的作用其实同我们使用的PC上的BIOS类似,通过这段程序,我们可以对运行系统上的主要硬件进行初始化、建立内存空间映射等工作,为应用系统的启动准备环境。我们使用Boot Loader可以在目标板上实时下载更新梯形图文件,因此一个功能强大的Boot Loader已经相当于一个微型操作系统了。
一般来讲,在嵌入式系统中Boot Loader的设计是严重依赖于其硬件的,要想建立一个通用的Boot Loader几乎是无法实现的。不同的硬件体系结构都对应于不同的Boot Loader。Boot Loader的设计还依赖于嵌入式微处理器的配置应用,所以论文中对AT90CAN128上的Boot Loader需要专门设计。PC硬件平台上,硬件通过BIOS启动的。在嵌入式平台上,AT90CAN128中没有像BIOS那样的固件程序,Boot Loader是硬件上执行的**段代码,因此整个系统的加载启动任务就完全是由Boot Loader来完成。当引导程序完成任务后,将控制权交至应用程序进行执行代码。
论文中基于AT90CAN128的Boot Loader编程设计采用交叉编译方法,使用C语言内嵌汇编方式编写,具有可移植性强、阅读方便理解、代码内存小等优点。Boot Loader的设计是实现梯形图实时更新下载的关键,论文中设计的嵌入式软PLC与PC机之间的通信和交换数据是通过RS232串口实现, Boot Loader设计要点主要有对于进入和切换Boot Loader和应用程序区的方式的设计。
4AT90CAN128的Boot Loader程序设计
论文中运用AT90CAN128单片机的Boot Loader程序设计,用户可以方便地利用PC机对嵌入式软PLC控制分站进行应用程序远程升级。我们只需要在单片机中加入一个Boot Loader程序,当需要更新梯形图程序时,上位机编辑好梯形图程序后通过RS232串口下载,即可以实现用户对PLC控制分站梯形图的自编程更新。而在嵌入式微处理器上的梯形图程序解释只需要在开始时移植一次,就可以实现梯形图的不断更新,解决了现场工作人员对计算机系统程序知识缺乏的问题,提高了的工作效率。
AT90CAN128片内具有128K字节的Flash,Flash程序存储器被分成了两个区:引导程序区和应用程序区。嵌入式软PLC运行系统的软件设计主要分为两部分:加载更新梯形图的引导程序区Boot Loader程序设计、梯形图解释执行的应用程序区程序设计
对运行系统中的软件进行设计时,编辑环境是使用Image Craft的ICCAVR编译器,下载器采用AVR Studio4,编辑语言采用C语言程序设计。ICCAVR是一种使用符合ANSI标准的C语言来开发微控制器程序的一个工具,它综合了编辑器和工程管理器的集成工作环境(IDE)。这个工程管理器可以直接生成我们希望得到的可以直接使用的INbbb HEX格式文件,INbbb HEX格式文件被大多数编程器所支持,包含了程序的机器代码,用于下载程序到芯片中去。AVR Studio4是一个完整的开发工具,包括了编辑、功能,我们可以编辑源代码,并将源代码下载到AVR器件上运行。
4.1Boot Loader程序进入方式的选择
为了实现从应用程序区到Boot Loader区的跳转,在基于AT90CAN128单片机的软件设计中,我们使用中断信号触发、运行系统上电复位和通过调用跳转函数这3种方式,都可以进入Boot Loader区。
通过中断信号触发进入到Boot Loader区,其实就是由一些触发信号启动,例如在程序运行过程中,串行端口中断被触发接收到一些相关的字节命令,运行系统即进入到中断操作中。在程序运行中,上位机通过向UART端口发送远程控制命令时,程序进入UART中断运行程序,论文中程序设计为当微处理器的USART1接受到串口0xFF信号时进入中断。此方法在应用程序区中的软件的编程比较简单,只需要在程序中加入一条中断指令。当运行系统在运行时,若监测到UART1中断被触发时,论文中软件设计判断触发信号是否为0xFF字符,若是此信息则执行复位发生,使得程序运行从应用程序区跳到Boot Loader区。如果是别的字符命令,则根据软件定义进行相应的操作。
#pragma interrupt_handler uart1_rx_isr:31
void uart1_rx_isr(void)
{
char pflag;
pflag = UDR1;
if(pflag == 0xff)
while(1);
}
第二种方法即上电复位更加直接,因为Boot Loader是在系统加电后就立即运行的**段代码,我们可以通过编程引导复位熔丝位,使得复位向量指向引导Flash区的起始地址,而Boot Loader通常放置在不易丢失的存储器的开始地址,这样运行系统断电上电就等于发生了一个复位操作,Boot Loader就被启动了。因为单片机本身不会改变熔丝位的设置,所以当我们通过软件上将复位熔丝位编程后,这就意味着复位向量会一直指向Boot Loader的起始地址。熔丝位可以通过串行或并行编程的方法来改变,完成Boot Loader加载用户程序代码后,程序开始执行应用程序代码。
第三种方法通过调用跳转函数的方式进入到Boot Loader区也比较简单,当需要进入到Boot Loader区时,只需要加入一个跳转函数。论文中通过AVR Studio4设置嵌入式软PLC的Boot Loader区大小配置为4096字节,Boot Loader区复位地址(Boot Loader起始地址)为0xf000。结合汇编语言,这样一个简单的通过跳转指令进入引导程序C编程代码如下所示:
void appl_boot(void)
{
MCUCR = 0x00;
MCUCR = 0x01; //中断向量表迁移到Boot区头部
RAMPZ = 0x01; //RAMPZ初始化
asm("jmp 0xf000\n");//跳转到Flash的0xf000处,执行引导加载程序
}
这样等待用户梯形图程序更新完成,加载了梯形图应用代码后,会自动进入用户应用程序,MCU开始执行应用程序代码。执行更新完程序后从Boot Loader区跳出自动运行用户应用程序,是通过下面语句实现的。
void boot_appl (void)
{
MCUCR = 0x01;
MCUCR = 0x00;    //中断向量表迁移到应用程序区头部
RAMPZ = 0x00;     //RAMPZ清零初始化
asm("jmp 0x0000\n"); //跳转到Flash的0x0000处,执行用户应用程序
}
完成了以上工作,接下来就可以进行实际的C程序设计了。
4.2Boot Loader程序设计
Boot Loader有两种不同的操作模式:“启动加载”和“下载”模式。
启动加载是Boot Loader的正常工作模式,Boot Loader从单片机的固态存储器上将操作系统加载到RAM中运行等,整个过程没有用户的介入。下载模式是指Boot Loader通过串口连接或者网络连接等通信手段从主机下载文件。
论文为实现梯形图的可在线下载更新,设计的Boot Loader支持这两种模式,而且允许在这两种工作模式之间切换[2]。

比如当系统上电后Boot Loader在启动时处于正常就启动加载模式,但是程序会延时等待1分钟(等待时间长短可以根据实际情况调整程序可变),设计中通过初始化PORTE2口控制LED的亮灭来观察系统的运行状态。如果在一分钟内如果UART1口接收到编程下载更新梯形图代码命令,则将切换到下载模式,进入梯形图代码更新状态,等待梯形图代码更新完毕后开始执行更新后的新应用程序。如果1分时间内没有收到编程下载更新梯形图代码命令,程序自动跳转到应用程序区,继续执行单片机内原有保存的PLC梯形图程

202202221739072455394.jpg202202221739073128824.jpg20220222173907216024.jpg


我们在设计小型的PLC控制系统时,常常会需要在外部改变PLC内部的数据,譬如Counter, Timer或者Data的值,以适应生产过程的需要。而且要求系统关机以后,这些数据还能够保存在PLC内部,当下次开机后,这些数据可以被调出继续使用。
    现在许多小型的PLC都或多或少地提供了掉电保持寄存器,以便在PLC断电的时候,保存用户想要保存的数据。但大多数时候,PLC制造厂商为了节约成本,不可能提供足够数量的掉电保持寄存器供系统设计人员使用,所以当被调整的数据项目超过PLC内部的掉电保持寄存器的数目的时候,我们不得不减少被调整的数据项目(固定或不用)或者购买具有更多掉电保持寄存器数目的PLC,这样的话,就使得生产机械缺乏灵活性和适应性,从而降低产品档次或增加成本。
    本人在设计服装厂用热风缝合机时就遇到了这种情况,下面就介绍解决这种问题的一种方法,以便大家设计时参考。
    所用PLC:松下FP0-C16T,被调整数据:16个,PLC内部掉电保持寄存器数目:10个『8个数据寄存器(DT1652-DT1659:8个各16Bit)和2个字的内部继电器(WR61、WR62:2个各16Bit)』。如果按常规的一个被调整数据占用一个数据寄存器的方法,这显然不能调整16个被调整数据,而只能调整10个被调整数据。为此,本人专门分析了16个被调整数据的数据调整范围,发现多数数据的调整范围只需要从0~255,即0~28-1;而掉电保持数据寄存器DT1652等内部的数据大小为216-1,即256×256-1;所以我们可以将一个被调整的数据只用到数据寄存器的低8位,那么该数据寄存器的高8位就可以来存储另一个被调整数据。
    下面就列出该部分的程序:
    1、开机时,分开掉电保持寄存器中高8位和低8位至另外两个数据寄存器:
其中,R9013是松下FP0系列PLC内部所规定的、在PLC从program状态到run状态时只动作一个PLC扫描周期的脉冲继电器。
    指令F65是一个字与指令,它的作用就是将掉电保持数据寄存器DT1655内的数据与十六进制数FF进行字与,然后将结果送到一般数据寄存器DT0,这样就可以分离出掉电保持数据寄存器DT1655内数据的低8位;
同样第二行的字与指令可以分离出掉电保持数据寄存器DT1655内数据的高8位。
指令F120是一个不带进位右移指令,即:对数据字进行右移时,对高位进行补零。K8表示右移8位。
指令F0是一个字传送指令,就是将一般数据寄存器DT10内的数据传送到一般数据寄存器DT1。
上述程序段的目的就是在开机时将掉电保持数据寄存器DT1655内的数据分成两个被调整数据。

    2、开机之后,将另外两个数据寄存器的数据合并至掉电保持寄存器的高8位和低8位:
    R9014是松下FP0系列PLC内部所规定的、在PLC从program状态到run状态时、第二个PLC扫描周期开始动作的脉冲继电器。
指令F121是一个不带进位左移指令,K8即左移8位。
    指令F66是一个字或指令,将一般数据寄存器DT20内的数据与一般数据寄存器DT0内的数据进行字或,结果送掉电保持寄存器DT1655。 
    由上可以看出,在PLC运行的时候,可以任意改变一般数据寄存器DT0和DT1中的数据,而这些改变也同时送到了掉电保持寄存器DT1655,这样,当PLC掉电时,所被调整的数据也就被保存了。
    通过同样的方法,我们可以视被调整数据的大小,灵活的使用掉电保持寄存器的每一个Bit位,从而使我们在不增加成本的情况下,提高小型PLC控制系统的性能。

一、 总体分析 
1 系统分析
依据控制系统所需完成的控制任务,对被控对象的工艺过程、工作特点以及控制系统的控制过程、控制规律、功能和特征进行详细分析,明确输入、输出物理量是开关量还是模拟量,明确划分控制的各个阶段及其特点,阶段之间的转换条件,画出完整的工作流程图和各执行元件的动作节拍表。
 
2 看主电路
 
进一步了解工艺流程及其对应的执行装置和元器件。
 
3 看PLC控制系统的I/O配置和PLC的I/O接线
 
 了解输入信号和对应输入继电器的配置、输出继电器的配置及其所接的对应负载。
 
在没有给出输入/输出设备定义和PLC的I/O配置的情况下,应根据PLC的I/O接线图或梯形图和指令语句表,做出输入/输出设备定义和PLC的I/O配置。
 
4 通过PLC的I/O接线图了解梯形图
 
PLC的I/O接线是连接主电路和PLC梯形图的纽带。
 
 1) 根据用电器(如电动机、电磁阀、电加热器等)主电路控制电器(接触器、继电器)主触点的文字符号,在PLC的I/O接线图中找出相应编程元件的线圈,便可得知控制该控制电器的输出继电器,再在梯形图或语句表中找到该输出继电器的程序段,并做出标记和说明。〖JP〗
 
 2) 根据PLC的 I/O接线图的输入设备及其相应的输入继电器,在梯形图(或语句表)中找出输入继电器的动合触点、动断触点,并做出相应标记和说明。
 
二、 梯形图的结构分析
 
1 PLC控制系统梯形图的特点
 
(1) PLC控制系统的输入信号和输出负载
 
继电器电路图中的交流接触器和电磁阀等执行机构用PLC的输出继电器来控制,它们的线圈接在PLC的输出端。按钮、控制开关、限位开关、接近开关等用来给PLC提供控制命令和反馈信号,它们的触点接在PLC的输入端。
 
(2) 继电器电路图中的中间继电器和时间继电器的处理
 
继电器电路图中的中间继电器和时间继电器的功能用PLC内部的辅助继电器和定时器来完成,它们与PLC的输入继电器和输出继电器无关。
 
(3) 设置中间单元
 
在梯形图中,若多个线圈都受某一触点串/并联电路的控制,为了简化电路,在梯形图中可设置用该电路控制的辅助继电器,辅助继电器类似于继电器电路中的中间继电器。
 
(4) 时间继电器瞬动触点的处理
 
时间继电器除了延时动作的触点外,还有在线圈得电或失电时立即动作的瞬动触点。对于有瞬动触点的时间继电器,可以在梯形图中对应的定时器的线圈两端并联辅助继电器,后者的触点相当于时间继电器的瞬动触点。
 
(5) 外部联锁电路的设立
 
为了防止控制正/反转的两个接触器同时动作,造成三相电源短路,除了在梯形图中设置与它们对应的输出继电器的线圈串联的动断触点组成的软互锁电路外,还应在PLC外部设置硬互锁电路。
 
2 梯形图的结构分析
 
采用一般编程方法还是采用顺序功能图编程方法;采用顺序功能图的单序列结构还是选择序列结构、并行序列结构,使用启/保/停电路、步进顺控指令进行编程还是用置位/复位指令进行编程。这部分内容见第四章和第五章。
 
梯形图的分解由操作主令电路(如按钮)开始,查线追踪到主电路控制电器(如接触器)动作,中间要经过许多编程元件及电路,查找起来比较困难。
 
无论多么复杂的梯形图,都是由一些基本单元构成的。按主电路的构成情况,利用逆读溯源法,把梯形图和指令语句表分解成与主电路的用电器(如电动机)相对应的几个基本单元,然后一个环节、一个环节地分析,较后再利用顺读跟踪法把各环节串起来。
 
(1) 按钮、行程开关、转换开关的配置情况及作用
 
在PLC的I/O接线图中有许多行程开关和转换开关,以及压力继电器、温度继电器等,这些电器元件没有吸引线圈,它们的触点的动作是依靠外力或其他因素实现的,因此必须先把引起这些触点动作的外力或因素找到。其中行程开关由机械联动机构来触压或松开,而转换开关一般由手工操作,从而使这些行程开关、转换开关的触点在设备运行过程中便处于不同的工作状态,即触点的闭合、断开情况不同,以满足不同的控制要求,这是看图过程中的一个关键。
 
这些行程开关、转换开关的触点的不同工作状态单凭看电路图难以搞清楚,必须结合设备说明书、电器元件明细表,明确该行程开关、转换开关的用途,操纵行程开关的机械联动机构,触点在不同的闭合或断开状态下电路的工作状态等。
 
(2) 采用逆读溯源法将多负载(如多电动机电路)分解为单负载(如单电动机)电路
 
根据主电路中控制负载的控制电器的主触点文字符号,在PLC的I/O接线图中找出控制该负载的接触器线圈的输出继电器,再在梯形图和指令语句表中找出控制该输出继电器的线圈及其相关电路,这就是控制该负载的局部电路。
 
在梯形图和指令语句表中,很找到该输出继电器的线圈电路及其得电、失电条件,但引起该线圈的得电、失电及其相关电路就不找到,可采用逆读溯源法去寻找:
 
 1) 在输出继电器线圈电路中串、并联的其他编程元件触点的闭合、断开就是该输出继电器得电、失电的条件。
 
 2) 由这些触点再找出它们的线圈电路及其相关电路,在这些线圈电路中还会有其他接触器、继电器的触点……
 
 3) 如此找下去,直到找到输入继电器(主令电器)为止。
 
值得注意的是:当某编程元件得电吸合或失电释放后,应该把该编程元件的所有触点所带动的前、后级编程元件的作用状态全部找出,不得遗漏。
 
找出某编程元件在其他电路中的动合触点、动断触点,这些触点为其他编程元件的得电、失电提供条件或者为互锁、联锁提供条件,引起其他电器元件动作,驱动执行电器。
 
(3) 将单负载电路进一步分解
 
 控制单负载的局部电路可能仍然很复杂,还需要进一步分解,直至分解为基本单元电路。
 
(4) 分解电路的注意事项
 
 1) 若电动机主轴接有速度继电器,则该电动机按速度控制原则组成停车制动电路。
 
 2) 若电动机主电路中接有整流器,表明该电动机采用能耗制动停车电路。
 
(5) 集零为整,综合分析
 
 把基本单元电路串起来,采用顺读跟踪法分析整个电路。
 
三、 识读梯形图的具体方法
 
 识读PLC梯形图和语句表的过程同PLC扫描用户过程一样,从左到右、自上而下,按程序段的顺序逐段识图。
 
值得指出的是:在程序的执行过程中,在同一周期内,的逻辑运算结果影响后面的触点,即执行的程序用到的较新中间运算结果。但在同一周其内,后面的逻辑运算结果不影响的逻辑关系。该扫描周期内除输入继电器以外的所有内部继电器的较终状态(线圈导通与否、触点通断与否)将影响下一个扫描周期各触点的通与断。
 
 由于许多读者对继电器接触器控制电路比较熟悉,因此建议沿用识读继电器接触器控制电路查线读图法,按下列步骤来看梯形图:
 
 1) 根据I/O设备及PLC的I/O分配表和梯形图,找出输入、输出继电器,并给出与继电器接触器控制电路相对应的文字代号。
 
 2) 将相应输入设备、输出设备的文字代号标注在梯形图编程元件线圈及其触点旁。
 
 3) 将梯形图分解成若干基本单元,每一个基本单元可以是梯形图的一个程序段(包含一个输出元件)或几个程序段(包含几个输出元件),而每个基本单元相当于继电器接触器控制
 
电路的一个分支电路。
 
 4) 可对每一梯级画出其对应的继电器接触器控制电路。
 
 5) 某编程元件得电,其所有动合触点均闭合、动断触点均断开。某编程元件失电,其所有已闭合的动合触点均断开(复位),所有已断开的动断触点均闭合(复位)。因此编程元件得电、失电后,要找出其所有的动合触点、动断触点,分析其对相应编程元件的影响。
 
 6) 一般来说,可从**个程序段的**自然行开始识读梯形图。**自然行为程序启动行。按启动按钮,接通某输入继电器,该输入继电器的所有动合触点均闭合,动断触点均断开。
 
再找出受该输入继电器动合触点闭合、动断触点断开影响的编程元件,并分析使这些编程元件产生什么动作,进而确定这些编程元件的功能。值得注意的是:这些编程元件有的可能立即得电动作,有的并不立即动作而只是为其得电动作做准备。
 
由PLC的工作原理可知,当输入端接动合触点,在PLC工作时,若输入端的动合触点闭合,则对应于该输入端子的输入继电器线圈得电,它的动合触点闭合、动断触点断开;当输入端接动断触点且在PLC工作时,若输入端的动断触点未动作,则对应于该输入端的输入继电器线圈得电,它的动合触点闭合、动断触点断开。如果该动断触点与输出继电器线圈串联,则输出继电器线圈不能得电。因而,用PLC控制电动机的启停,如果停止按钮用动断触点,则与控制电动机的接触器相接的PLC输出继电器线圈应与停止按钮相接的输入端子相对应的动合触点串联。在继电接触控制中,停止按钮和热继电器均用动断触点,为了与继电接触控制的控制电路相一致,在PLC梯形图中,同样也用动断触点,这样一来,与输入端相接的停止按钮和热继电器触点就必须用动合触点。在识读程序时必须注意这一点。
 
四、 识读PLC梯形图的示例
 
在分析PLC控制系统的功能时,可以将它想象成一个继电器控制系统中的控制箱,其外部接线图描述了这个控制箱的外部接线,梯形图或语句表是这个控制箱的内部"线路图",梯形图中的输入继电器和输出继电器是这个控制箱与外部世界联系的"接口继电器",这样就可以用分析继电器电路图的方法来分析PLC控制系统。在分析时可以将梯形图中输入继电器的触点想象成对应的外部输入器件的触点或电路,将输出继电器的线圈想象成对应的外部负载的线圈。外部负载的线圈除了受梯形图的控制外,还可能受外部触点的控制




http://zhangqueena.b2b168.com

产品推荐