spram是什么存储器(sp的作用是什么)
一、单片机RAM中***sp的作用是什么
SP指的是堆栈指针
详细解释如下:
堆栈是一种数据结构,和他相类似的有队列。
如果对数据结构有这样的要求:
先将数据放到该区内,先放的后出后放的先出。这种结构这是堆栈。也就是说堆栈的数据*作口只有一端。它常用到回朔等算法当中,说到数据结构,当然就要提到算法。而队列的*作正好与之相反。先放入的数据先出,后放的后出。它的数据*作是有两个口,一边只负责插入,一端只负责删除。所以对其算法是先入先出(FIFO,First input First Output).
而对于汇编来说,为了考虑这种结构,设置了两个寄存器,一个是SS,是一个段寄存器。用作开辟一个数据单元作为一个堆栈区,该SS中的内容是该段的首地址。而SP则作为指针用,它有汇编语言中的作用是为模块化等类似问题服务的!如果一个程序调用一个子程序,则进入该子程序前要先对主程序进行一个“现场保护”,以便子程序执行完毕后能顺利地返回地主程序中依次执行。所以在一般的子程序开始的部分,先对程序中所用到的寄存器进行保存,保存到堆栈区中,从子程序返回到主程序中时再对堆栈区中的内容进行释放还原。主程序还能进入到断点继续工作。正是这种原理,汇编编程时采用的是断点(也就是中断)的工作模式。也就是理解好堆栈就更好地理解了中断。
堆栈区的使用不仅仅如此,由于其原理。可以使用堆栈区进行子程序的参数传递。堆栈是一个很重要的内容,但学习它不好理解时建议你先看一下数据结构。会更有利于你的理解!
二、单片机上电时内部各个存储器状态
首先单片机复位也分别几种:掉电再通电,按复位按钮,程序复位,通过外部接口复位。
各芯片的复位电路大同小异,这里以51系列单片机为例,上电后,保持RST一段高电平时间,就能达到上电复位的*作目的。
常见的复位电路如下:
1.掉电再通电,这里就视为冷启动吧
这种情况下单片机的复位*作使单片机进入初始化状态,其中包括使程序计数器PC=0000H,这表明程序从0000H地址单元开始执行。单片机冷启动后,片内RAM为随机值,特殊功能寄存器复位后的状态为确定值,具体可参考相应单片机的说明书。
2.按复位按钮
这种情况下单片机的复位*作也会使程序计数器PC=0000H,程序重新从 0000H地址执行,但是与第1种情况不同的是,片内RAM为复位前的状态值,也就是说,运行中的复位*作不改变片内RAM区中的内容。而特殊功能寄存器复位后的状态为确定值,具体可参考相应单片机的说明书。
51单片机复位后特殊功能寄存器的初始值
特殊功能寄存器初始值特殊功能寄存器初始值
ACC 00H TCON 00H
B 00H TMOD 00H
PSW 00H TL0 00H
SP 07H TH0 00H
DPTR 0000H TL1 00H
P0~P3 FFH TH1 00H
PCON 0XXX 0000B T2CON 00H
AUXR XXX0 0XX0B T2MOD XXXX XX00B
AUXR1 XXXX XXX0B RCAP2L 00H
IE 0X00 0000B RCAP2H 00H
IP XX00 0000B TL2 00H
SCON 00H TH2 00H
SBUF XXXX XXXXXB WDTRST XXXX XXXXB
表中部分符号的含义如下:
PSW=00H:表明复位后自动选择第0组工作寄存器组为当前工作寄存器组
SP=07H:表明堆栈指针指向片内RAM07H单元,堆栈的压入*作为先加后压,所以第一个被压入的数据存放在08H单元中
P0~P3=FFH:表明各端口写入1,此时各端口既可作输入口,也可以作输出口
AUXR=XXX0 0XX0:表明ALE引脚在CPU不访问外部存储器期间有脉冲信号输出
AUXR1=XXXX XXX0:表明选择DPTR0作数据指针
IE=00H:表明各中断均关闭
TCON=00H:表明T0,T1均被停止
SCON=00H:表明串口处于方式0,允许发送,不允许接收
PCON=00H:表明SMOD=0,波特率不加倍。PD=0,IDL=0,单片机处于正常工作方式。
3.程序复位
这种情况下单片机的复位*作由程序内部控制,功能要视乎程序的编写。例如我们可以*作使程序计数器PC=0000H,同时
添加RAM初始化程序,清0或置1,同时设置某些特殊寄存器的值,或者其他*作,总之这是一种软件*控的复位,功能可灵活控制。
4.外部接口复位待研究。
P.S.
1.什么是冷启动?热启动呢?
冷启动就是在不加电的情况下启动系统,热启动就是在加电的情况下重启系统!
例子:
冷启动是之直接按下电源开关启动计算机。
热启动是之在已开机的状态下在开始菜单中选择重新启动计算机,这叫做热启动。
三、现在主流的PLC是什么的
西门子的s7-200,300,400之类的,学好它就可以了,国外好多都用的是西门子,以后学习其他的也容易,
祝你好运,以下是他的一些见介:
SIEMENS PLC在中国的产品,根据规模和性能的大小,主要有 S7-200 S7-300和S7-400三种,下面就简单介绍一下该三种产品的一些特性。
S7-200
针对低性能要求的摸块化小控制系统,它多可有7个模块的扩展能力,在模块中集成背板总线,它的网络联接有RS-485通讯接口和Profibus两种,可通过编程器PG访问所有模块,带有电源、CPU和I/O的一体化单元设备。
其中的扩展模块(EM)有以下几种:数字量输入模块(DI)——24VDC和 120/230VAC;数字量输出(DO)——24VDC和继电器;模拟量输入模块(AI)——电压、电流、电阻和热电偶;模拟量输出模块——电压和电流。还有一个比较特殊的模块-通讯处理器(CP)——该块的功能是可以把S7-200作为主站连接到AS-接口(传感器和执行器接口),通过AS-接口的从站可以控制多达248个设备,这样就可以显著的扩展S7-200的输入和输出点数。
CPU设计
有3种手动选择*作模式:STOP——停机模式,不执行程序;TERM——运行程序,可以通过编程器进行读/写访问;RUN——运行程序,通过编程器仅能进行读*作。
状态指示器(LED):SF——系统错误或(和)CPU内部错误;RUN——运行模式,绿灯;STOP——停机模式,黄灯;DP——分布式I/O(仅对CPU-215)。
存储器卡——用来在没电的情况下不需要电池就可以保存用户程序。PPI口用来连接编程设备、文本显示器或其他CPU。
S7-300
相比较S7-200,S7-300针对的是中小系统,他的模块可以扩展多达32个模块,背板总线也在模块内集成,它的网络连接已比较成熟和流行,有MPI(多点接口)、Profibus和工业以太网,使通讯和编程变的简单和多选性,并可以借助于HWConfig工具可以进行组态和设置参数。
S7-300的模块稍微多一点,除了信号模块(SM)和200的EM模块同类型之外,它还有接口模块(IM)——用来进行多层组态,把总线从一层传到另一层;占位模块(DM)——为没有设置参数的信号模块保留一个插槽或为以后安装的接口模块保留一个插槽;功能模块(FM)——执行特殊功能,如计数、定位、闭环控制相当于对CPU功能的一个扩展或补充;通讯处理器(CP)——提供点对点连接、Profibus和工业以太网。
CPU设计
模式选择器有:MRES=模块复位功能;STOP=停止模式,程序不执行;RUN=程序执行,编程器只读*作;RUN-P=程序执行,编程器可读写*作。
状态指示器:SF,BATF=电池故障;DC5V=内部5 V DC电压指示;FRCE=表示至少有一个输入或输出被强制;RUN=当CPU启动时闪烁,在运行模式下常亮;STOP=在停止模式下常亮,有存储器复位请求时慢速闪烁,正在执行复位时快速闪烁。
MPI接口用来连接到编程设备或其他设备,DP接口用来直接连接到分布式I/O。
S7-400
同300的区别主要?--*婺:托阅苌细�看螅�舳�嘈陀欣淦舳�–RST)和热启动(WRST)之分,其他基本一样。哦,它还有一个外部的电池电源接口,当**更换电池时可以向RAM提供后备电源。
编程设备
编程设备主要有PG720 PG740 PG760——可以理解成装有编程软件的手提电脑;也可以直接用安装有STEP7(SIEMENS的编程软件)的PC来完成。而实现通讯(要编程首先要和 PLC的CPU通讯上)的要求主要在于接口:1.可以在PC上装CP5611卡——上面有MPI口,可用电缆直接连接。2.加个PC适配器,把MPI口转换成RS-232口后接到PC上。3.PLC加CP343卡,使它具有以太网口。
一个工程的建立
项目管理
每个自动化过程都是由许多较小的部分和子过程组成,所以工程建立的第一个任务是分解子任务。而每个子任务定义了自动化系统要完成的硬件和软件要求。其中硬件包括输入/输出数目和类型,对应模块序号和类型,所用机架号,CPU型号和容量,HMI(人机界面)系统,网络系统。软件方面主要是程序结构,自动化过程中的数据管理,组态数据、通讯数据及程序和项目文档。在SIEMENS的S7中,上述工作都在项目管理(SIMATIC管理器),包括必须的硬件(+组态),网络(+组态),所有程序和自动化解决方案的数据管理。 F1**帮助。
SIMATIC管理器管理STEP 7项目,编写 STEP 7用户程序的工具,有梯形图LAD,语句表STL,和功能块图FBD,编程语言。利用编程器或外部编程器可以把用户程序保存到EPROM卡上。
SIMATIC管理器是一个**/离线编辑S7对象的图形化用户界面,这些对象包括项目、用户程序、快、硬件站和工具。此管理器的用户界面中工具条和WINDOWS差不多,就是多了几个PLC菜单——显示访问节点、存储器卡、**、仿真模块。
注::由于目前主流系统是S7-300,所以下面的*作基本以S7-300为主,而实际过程由于配置的不同可能会有所不同。
STEP 7项目结构:项目中,数据以对象形式存储,按树型结构组织。
第一级:包含项目图表,每个项目代表和项目存储有关的一个数据结构。
第二级:站(如S7-300)用于存放硬件组态和模块参数等信息,站是组态硬件的起点。
S7程序文件夹是编写程序的起点,所有S7系列的软件均放在S7程序文件夹下,它包含程序块文件和源文件夹。
SIMATIC的网络图表(MPI、Profibus、工业以太网)
第三级和其他级:和上级对象类型有关。
编程器可离线/**查看项目——OFFLINE:编程器硬盘上的内容;ONLINE:通过网线从PLC读到的内容。
菜单选项:在OPTIONS-CUSTOMIZE设置语言、助记符、常用特性(存储位置、系统信息显示)。
创建一个项目:FILE NEW NEW PROJECT
插入 S7程序块:INSERT PROGRAM S7 PROGRAM
插入 S7块: INSERT S7 BLOCK然后可选:1:组织块(OB)被*作系统调用,他们是*作系统和用户程序的接口。 2:功能FC和功能块FB是实际的用户程序利用他们可以把复杂的程序分解成小的,易于调试的单元。3:数据块存储用户的数据。选择所需块类型后,会打开一个属性对话框,其中可输入块序号和要使用的编程语言,及其他设置。
补充一下:
1、内存总清——MRES=MEMORY RESET,经过MRES的模块相当于一个新模块,所以请务必谨慎。方法是:放在MRES足够时间,到STOP指示灯闪2下;弹回到STOP再迅速放到 MRES,此时STOP快速闪6下——内存清空,将删除所有用户程序数据,硬件测试和初始化,如果此时装有EPROM卡,把卡内容COPY到内部RAM区。
2、SIEMENS的信号模块(SM)结构设计,接线非常方便,更换摸板无需接线(可拔下来)。固定方式有弹簧和螺钉连接两种。
3、对于软件的授权:在光盘安装后以后,一定要用软盘(权盘)授权,对于重装系统或软件的,一定要先”收回“权到软盘以后,才进行,以便重装以后再次授权,否则只能联系西门子了。
硬件组态和存储器概念
S7-300的存储器概念:
装载存储器是一个可编程模块,它包括建立在编程设备上的装载对象(逻辑块、数据块和其他信息),它可以是存储器卡或内部集成的RAM。存储器卡一般有两种,其中,当采用RAM存储器卡时,系统必须配备电池,当采用Flash EPROM存储器卡时,则断电不会丢失,但内部RAM中的数据仍需电池保持。工作存储器仅包含和运行时间使用的程序和数据,RAM工作存储器集成在CPU中,通过后备电池保持。系统存储器包括过程映象输入和输出表(PII,PIQ),位存储器,定时器,计数器和局部堆践。保持存储器是非挥发的RAM,即使没有安装后备电池也可用来保持某些数据,设置CPU参数时要指定保持的区域。
从上述概念可知,假如我们**修改程序,被修改的块存放在工作存储器中,当把程序上载到编程器时,就从工作存储器传到编程器。由于断电会导致RAM数据的丢失,所以假如要安全保存被修改的程序,就必须保存在FEPROM或硬盘上。
硬件组态和参数分配
一些概念:组态就是指在硬件组态的站窗口中分配机架、块可分布式I/O,可从硬件目录中选择部件;参数分配就是建立可分配参数模块的特性,例如启动特性、保持区等;设定组态就是设定好的硬件组态和参数分配;实际组态指已存在的实际组态和参数分配,一般是在已装配的系统中,从PLC的CPU中读出来的。
组态过程:
启动硬件组态:新建一个项目(PROJECT),选择该项目,并插入(INSERT)一个站(STATION),在SIMATIC管理器中选择硬件站(HARDWARE)双击OPEN即可,我们同时可以打开硬件目录——VIEW-CATALOG,如果选择标准硬件目录库,它会提供所有的机架、模块和接口模块。
产生硬件组态:主要选择机架,指定模块如何在机架摆放。具体是:
1、在硬件目录中打开一个SIMATIC300站的RACK-300(例如是300),双击或拖到左边窗口。这样在左边的窗口中就出现两个机架表:上面的部分显示一个简表,下面的部分显示带有定货号、MPI地址和I/O地址的详细信息。
2、电源:双击或拖拉目录中的“PS-300”模块,放到表中的一号槽位上。
3、 CPU:从CPU-300的目录中选择你所配置的CPU,列入2号槽位。
4、 3号槽—一般接口模块保留(用于多层组态),在实际配置中,如果这个位置要保留以后安装接口模块,在安装时就必须插入一个占位模块。
5、信号模块:从4号槽位开始多可以插入八块信号模块(SM卡),包括通讯处理器(CP)和功能模块(FM)。
CPU——属性包括通用属性General(主要提供模块的类型,位置和MPI地址—如果要把几个PLC通过MPI接口组成网络,每个CPU分配不同的MPI地址);启动项目START.UP(主要选择三种启动方式,HOT—从断电时的语句,也就是程序断电处开始,WARM—从头,也就是程序第一步开始, COLD—冷启动;监视时间包括从模块读准备的信息时间和传递参数到模块的时间;可保存数量Retentive Memory:用来指定当出现断电或从STOP到RUN切换时需要保持的存储器区域;循环/时钟存储器;保护功能(设定钥匙权限和各种级别及口令);诊断/时钟。
保存**及上传:经过上述设置以后,我们就可以保存、编译、一致性检查后,把设定组态**到PLC中。当然,对实际运行的PLC,我们也可以通过上传(Upload Station)把实际组态读到编程器。
硬件诊断及组态中可能出现的问题:在SIMATIC管理器中可以用PLC-Diagnose Hardware来获得PLC的诊断状态。在实际组态过程中可能出现的问题是以下几点:
1、在S7-300中,组态中有空位置,此时组态不能编译通过;
2、不正确的CPU(例如:是CPU 315-2DP,不是CPU 314)此时组态不能**;
3、模拟量模块分配到不正确的槽位置,此时CPU会因为参数分配错误进入STOP模式;
4、模拟量模块不正确的测量范围,导致模拟量模块组态错误。
块的编辑
STEP 7编程语言:LAD梯形图/FBD功能块图/STL语句表,更加丰富,更加灵活,但对初学者比较难以理解,当然某些语言不能用LAD表达。
块编辑的启动:选择所需编程语言,双击打开需编辑的块,如OB1或FC1等。当采用LAD或FBD编程语言时,可用工具条来插入简单的程序文件,当采用STL,则可用**帮助得到有关语言的语法和功能——HELP-Help on STL。
编程器组成:声明表:属于块,为块声明变量和参数;代码区:包含程序本身;编程元件:可选打开或关闭,内容依赖于所选择的编程语言,双击插入或拖拉插入。
VIEW菜单:可切换到另一种语言,并可实现LAD/FBD/STL之间的转换,要知道,LAD/FBD转换成STL的,在语句表中可能不是有效程序。而STL转换成其他则不一定行,转换不了的仍用语句表示,转换过程绝不会丢失程序。
其他菜单由于篇幅较大,请好结合教材及软件自己熟悉。
在讨论调用块前先介绍一下OB1块——主循环块,绝对不能改名或删除,它是由*作系统循环调用,可以访问其他的S7程序块,它包括自身程序和其他块的调用。所以,当我们编辑好一个块以后,如FC1,为了让新块集成在CPU中的循环程序中,必须在OB1中调用。即在OB1中CALL F1。子程序(新块FC 1)执行的条件有以下三个:已经**到PLC中,必须在OB1调用,PLC处于运行状态。**到实际的PLC时,我们可以选择所有块或其中的一个或几个,再Download到PLC中。
程序的执行过程:当PLC得电或从STOP切换到RUN模式,CPU会执行一次全启动(使用OB100)在全启动期间,*作系统清除非保持位存储器、定时器和计数器,删除中断堆笺和块堆笺,复位所有保存的硬件中断,并启动扫描循环监视时间。
CPU的循环*作包括三个主要部分:CPU检查输入信号的状态并刷新过程影象输入表(PII..);执行用户程序,也就是OB1中的程序及一些**(中断等);把过程输出影象输出表(PIQ)写到输出模块。上面所提到的PII/PIQ是CPU中特定的存储器,用来保存输入模块/输出模块的信号,在用户程序中检查时,可以保证在一个扫描周期内为同样的信号状态。
程序结构:上面曾经提到过,一个比较简单的程序,我们可以不用各种子程序块(如FC.FB),而是直接把整个程序直接写在一个块上(通常是OB1主块上),CPU逐条的处理指令,我们称这种叫线形编程;而对稍微有点复杂的程序,我们可以把它分成几个块,每块包含处理一部分任务的程序,在每一个块中可以进一步分解、成几个段,可以为相同类型的段生成段模块,组织块OB1包含按顺序调用其他块的指令,我们把这种方法叫分块编程;另外,对可重复使用的功能装入单个块中,OB1(或其他块)调用这些块并传递相关参数,这种方法叫结构化编程。用户块(程序块)包括程序代码和用户数据,在结构化程序中,一些块循环调用处理,一些块需要时才调用。程序块共有组织块(OB)、功能块(FB)、功能(FC)、系统功能块(SFB)和系统功能(FC)5种,其中系统块是在CPU*作系统中预先定义好的功能和功能块,这些块不占用用户程序空间。
在下节讨论位指令前先讨论一下SIEMENS的模块地址:在不带DP口的S7-300和不组态的S7-400采用固定槽位编址,使用带DP口的S7-300和S7-400,可以分配模块的起始地址。但要注意,由于CPU存储器复位后,参数和地址会丢失,这就意味着所有地址都回到和槽位有关的地址或是缺省地址。我们还是以S7-300为例,在S7-300中,机架上的插槽号简化了模块地址,模块的第一个地址由机架上的模块地址决定。一般槽1给电源,槽2是CPU,槽3为IM(接口模板)所用,4~11为I/O卡、CP卡和FM卡。他们的固定地址就是为每个槽位保留4个字节——就是说,槽4(第一块I/O卡),地址为 0.0~3.7(共32位),槽5(第二块I/O卡)地址为4.0~7.7,假设第一卡是DI,那么他们的地址就是I0.0、I0.1、、、I3.7,若第二卡为DO卡,地址为Q4.0、Q4.1、、、、Q7.7,请注意,当使用16通道的DI/DO模块时,每个槽位就会失去两个字节(16位)。
基本逻辑指令
与%26(FBD) A(STL)(AND指令)
或%26gt;=1(FBD) O(STL)(OR指令)
异或 XOR(FBD) X(STL)(XOR指令)
注意:异或*作是指:当两个信号中仅有一个满足时,输出状态才是“1”,这个指令不能使用于多个地址的异或逻辑*作(N个中有一个1时才是1),所以三个及三个以上的异或指令,旧的RLO(逻辑*作结果)和另一个输入作异或运算。
赋值语句=
置位 S光是置位,一直保持到它被另一个指令复位为止。
复位 R光是复位,一直保持到它被另一个指令置位为止。
触发器的置位复位:同时有置位输入和复位输入,如果两个输入端同时出现RLO=1,根据优先级。在LAD/FBD中,分别有置位优先和复位优先的不同符号,在STL中,后编写的指令具有高优先权。
注意:如果用置位命令把输出置位,当CPU全启动时它被复位,但如果声明保持,则当CPU全启动时,它就一直保持置位状态。
连接器:M0.0(#),为中间赋值元件,它把当前RLO保存到指定地址,当它和其他元件串联时,连接器指令和触点一样插入。
注意连接器不能:
直接连接到电源母线
直接跟一个分支;
用在分支末尾。
但连接器可以用“NOT”元件对它进行取反*作。
影响RLO的指令:
NOT=取反;CLR=复位(仅用在STL中);SET=置位(仅用在STL中);S**E=把RLO保存到状态寄存器中的“BR”;BR=用来重新检查保存的RLO。
主控继电器功能 MCR:是一个用来接通或断开电流的逻辑主开关。如果MCR条件不满足:0分配给输出线圈,置位线圈和复位线圈指令不改变当前值,MOVE指令把0传到目的地址。MCRA指令启动主控继电器功能/MCRD指令取消MCR功能,直到另一个MCRA指令起作用。
无条件转移(不依赖于RLO) JMP
在LAD/FBD中,**圈符号上面输入作为表示的标号或符号,如NEW1,NEW2等,标号多有4个字符,第一个字符必须使用字母或“_”。
跳转规则:可以向前或向后跳转,跳转指令和跳转目的必须在同一个块中(大跳转长度为64K字节);在一个块中跳转目的只能出现一次;跳转指令可以用在FB、FC和OB中。
条件跳转:有两个:JC——当RLO=1时,JC才执行,当RLO=0时,不跳转,继续执行下面的程序,但置RLO=1。 JCN——当RLO=0时,JCN才执行,当RLO=1时,不跳转。
边沿检测:RLO-边沿检测和信号-边沿检测。
RLO-边沿检测:当逻辑*作结果变化时,产生RLO边沿。检测正边沿FP——RLO从“0”变化到“1”,“FP”检查指令产生一个“扫描周期”的信号“1”;检测负边沿FN,则RLO从“1”变化到“0”,“FN”检查指令产生一个“扫描周期”的信号“1”。上述两个结果保存在“FP(FN)”位存储器中或数据位中,如M 1.0…,同时,可以输出在其他线圈。
信号-边沿检测:同上面的RLO指令类似,当信号变化时,产生信号边沿,也有正/负边沿之分:POS/NEG。
上述各种指令,好请结合实际软件,掌握其方法、特性和不同之处,其他复杂指令请参考各种高级编程手册。
数字指令
在讨论数字指令前先了解一下各种数据格式,关于二进制、十进制及其他数的表示方法,在其他地方都有介绍,这里就不再重复。
一、数据格式(16位):数据类型INT是整数(16位),其中符号(位15)表示是正数或是负数(“0”=正数,“1”=负数),16位整数的数值范围是- 32768~+32767。在二进制格式中,整数的负数形式用正数的二进制补码表示。(二进制补码利用取反加1得到)负数的位格式,对零的位置加权求和,再加1,然后在前面放一个负号。
BCD码:十进制的每一位用四个二进制数表示,因为大为9,所以需要四位二进制才能表示出来(十进制的9=1001二进制),要注意,从0~9的十进制数的BCD码表示与二进制数表示相同,但BCD码一般用作显示,并非二进制。上面的INT(整数)主要是用来运算。
如BCD码W#16#296,在CPU中表现为0000,0010,1001,0110(直接为+,2,9,6=+296);而整数+296则表示为0000, 0001,0010,1000(即28+25+23=296),再例如整数-413表示为1111,1110,0110,0011(因为是负数,所以用补码,取反加1,所以上面的二进制数=-(28+27+24+23+22+1)=“-413”,而在BCD码该数(W#16#F413)则可以简单的表示为 1111,0100,0001,0011。
二、数据格式(32位):DINT类型的数据——带符号位的32-位整数,定义为“双整数”或“长整数”,它的表示方法及范围是:L#-2147483648~L#+2147483647;还有一个是实数型REAL型(也叫浮点数),是 1.175495*10-38~3402823*1038之间,实数的通用格式为(Sign)*(1.f)*(2e-127),其中Sign为符号位第 31位(即高位),低位的0~22位为f=底数位,23~30为e=指数。STEP 7中的实数是按照IEEE标准表示的。
数据的装入和传递: MOVE(LAD/FBD)或L和T(STL):如果输入EN有效,输入“IN”处的值拷贝到输出“OUT”。装载和传递指令的执行与RLO无关,数据通过累加器交换,装载指令把右边源地址的值写到累加器1(不够32位用0补齐),传递指令拷贝累加器中一些或所有内容到指定的目的地址。如先装载L+5/ L L#523312/ L B#16#EF(分别为装载一个整数+5/一个双整数523312/一个十六进制数EF)到第一累加器(ACCU1),然后再传输到目的地,如T MB5等。累加器是CPU中的辅助存储器,它们用于不同地址之间的数据交换、比较和数学运算*作。S7-300有两个32位的累加器,S7-400有四个 32位的累加器。在装载过程中,ACCU 1中的值先移入ACCU 2,在新值写入前先清零,然后在把要装入的值写入ACCU 1,传递时则从ACCU 1中读出。装载和传递指令可以指定32位中的一个字节或是字及双字,如果仅传递一个字节,只使用右边的8位。在LAD/FBD中,我们可以使用MOVE的允许输入(EN)把装载和传递*作和RLO联系起来,在STL中,则总是执行装载和传递*作,而和RLO无关,但是,我们可以利用条件跳转指令来执行和 RLO有关的装入和传递功能。
定时器:STEP 7中,CPU为定时器保留了一个特殊存储器,这个区专门为每个定时器地址保留一个16位字。定时器的位0~9包含用二进制表示的时间值,12、13位为时间基准——0表示10ms,1表示100ms,2=1秒,3=10秒,时间基准定义的是一个单位代表的时间间隔。时间值可以直接用常数来表示(此时时间基准自动由系统自动分配),例如S5T#100ms,S5T#2h2m2s20ms。
S5定时器格式:时间的指定可以如上述所说直接输入固定的时间常数,或由*作人员用拨轮按扭改变或和存储器字或数据字中的时间值有关的过程和配方。在使用中可以用L命令(读出)定时器BI输出端的地址(包含10位二进制数表示的时间值,不带时间基准),如 L T5;也可以用LC命令读出定时器BCD端的地址(3位BCD数表示的时间值和12、13位的时间基准)。具体介绍几种常用的定时器:下面只介绍功能,具体符号可以在元件表中找。
接通延时(SD)定时器:当定时器的“S”输入端的RLO从0变到1时,定时器启动。只要输入S=1,定时器起作用,当到达指定的TV值(预设值)时定时器启动(输出Q=1),同时该定位器还有一个复位端R端,当等于1时,就清除定时值并且复位Q输出。当前时间可以在BI输出端以二进制数读出,在BCD端以BCD码形式读出,当前时间值是TV的初始值减定时器启动以来的经过时间。
带保持接通延时定时器(SS):与上面SD定时器基本一致,唯一不同的就是具有保持功能,也就是说:一旦S输入端的RLO从0变到1,定时器便启动,即使定时过程中出现输入S端=0,定时器仍继续记时。但有一点,在保持过程中,如果S输入端再次从0变1,则定时器重新开始。
关断延时定时器(SF):从某些方面说,和上面提到的SD接通延时定时器状态正好相反。当定时器的S输入端的RLO从“1”变到“0”时,定时器启动,输出信号Q=0,其他功能和输出与SD一样。个人理解,是否 SD接通延时定时器,较多的用于正逻辑,而SF更多的用于事故安全型(有时也叫反逻辑,就是在正常的工况中,输入输出都为1或是带电情况)中。
脉冲(SP):这个比较好理解,当“S”输入端从0变到1时,启动定时器,输出Q=1(多一个脉冲。输出Q复位的情况为:定时器时间到或启动信号从1变到0或复位输入R信号=1。
扩展脉冲(SE):当输入端的RLO从0变到1时,定时器启动,输出Q置1,即使当中S端输入变到0,输出Q仍保持1。当定时器正在运行,如果启动信号从0变到1,定时器被再次启动。它的复位情况是定时器时间到或复位R端有信号1。
位指令定时器:所有的定时器也可以用简单的位指令启动,这种方法和前面讨论的定时器功能的相似处在于:启动条件在S端,指定时间值,复位条件在R端输入,信号响应在Q端。不同的是(对LAD/FBD)不能检查当前时间值(没有BI/BCD输出)。