A. PLC在扫描工作过程中,输入映像寄存器和输出映像寄存器各起什么作用
输入映像寄存器的标识符为I,在每个扫描周期的开始,CPU对输入点进行采样,并将采样值存于输入映像寄存器中。输出映像寄存器在每个扫描周期的末尾,CPU将输出映像寄存器的数据传送给输出模块,再由后者驱动外部负载。
模拟量输入映象区是S7-200CPU为模拟量输入端信号开辟的一个存储区。S7-200将测得的模拟量(如温度、压力)转换成1个字长(2个字节)的数字量,模拟量输入映像寄存器用标识符(AI)、数据长度(W)及字节的起始地址表示。
从AIW0~AIW30,共有16个字,总共允许有16路模拟量输入。
说明:模拟量输入值为只读数据。
(1)cpu中的变量存储区是什么扩展阅读
PLC执行程序过程中,会存在一些控制过程的中间结果,这些中间数据也需要用存储器来保存。变量存储器就是根据这个实际的要求设计的。变量存储器是S7-200CPU为保存中间变量数据而建立的一个存储区,用V表示。
可以按位、字节、字、双字四种方式来存取。
(1)按“位”方式:从V0.0~I5119.7,共有40960点。CPU221、CPU222变量存储器只有2048个字节,其变量存储区只能到V2047.7位。
(2)按“字节”方式:从VB0~VB5119,共有5120个字节。
(3)按“字”方式:从VW0~VW5118,共有2560个字。
(4)按“双字”方式:从VD0~VD5116,共有1280个双字。
B. 什么是存储器映像寄存器
影像寄存器:数字量输入影像区是s7-200cpu为输入端信号状态开辟的一个存储区。输入映像寄存器的标识符为i,在每个扫描周期的开始,cpu对输入点进行采样,并将采样值存于输入映像寄存器中。
映像寄存器相当于是PLC内部存储器中的一部分。PLC在每个工作周期内会把固定数量的输入点的数据刷新到输入映像区,CPU访问映像区的速度与访问内存速度相同。
CPU可以在不直接访问外部IO点的情况下通过读取输入映像区的数据获得外部输入点的数据,要比直接读取输入点的速度快得多。
(2)cpu中的变量存储区是什么扩展阅读:
1、模拟量输入影像区(ai区)
模拟量输入影像区是s7-200cpu为模拟量输入端信号开辟的一个存储区。s7-200将测得的模拟量(如温度、压力)转换成1个字长(2个字节)的数字量,模拟量输入映像寄存器用标识符(ai)、数据长度(w)及字节的起始地址表示。
从aiw0~aiw30,共有16个字,总共允许有16路模拟量输入。说明:模拟量输入值为只读数据。
2、模拟量输出影像区(aq区)
模拟量输出影像区是s7-200cpu为模拟量输出端信号开辟的一个存储区。s7-200将1个字长(2个字节,16位)的数字量按比例转换为电流或电压。模拟量输出映像寄存器用标识符(aq)、数据长度(w)及字节的起始地址表示。
从aqw0~aqw30,共有16个字,总共允许有16路模拟量输出。
C. 什么是变量的存储类型
量有4种存储类型,分别是auto(自动型)、static(静态型)、register(寄存器型)和extern(外部型)。在定义或说明一个变量时可以加上存储类型关键字,以限定其存储类别。
存储类型决定了系统将在哪一个数据存储区为变量分配存储空间。
D. sm是哪个存储器的标识符
用西门子PLC的变量存储器V只有S7- 200中才有。相当于300中的M变量。按v1,v2,v3 字节搞下去。
变量存储器(V)(相当于内辅继电器)PLC执行程序过程中,会存在一些控制过程的中间结果,这些中间数据也需要用存储器来保存。变量存储器就是根据这个实际的要求设计的。变量存储器是S7-200CPU为保存中间变量数据而建立的一个存储区,用V表示。可以按位、字节、字、双字四种方式来存取。(1)按“位”方式:从V0.0~I5119.7,共有40960点。CPU221、CPU222变量存储器只有2048个字节,其变量存储区只能到V2047.7位。(2)按“字节”方式:从VB0~VB5119,共有5120个字节(3)按“字”方式:从VW0~VW5118,共有2560个字(4)按“双字”方式:从VD0~VD5116,共有1280个双字
(1) S7-200存储器类型
S7-200 PLC可以采用多种形式的存储器来进行PLC程序与数据的存储,以防止数据的丢失。S7-200可以使用的存储器主要有如下类型:
①RAM: CPU模块本身带有动态数据存储器(RAM)。RAM用于存储PLC的运算、处理结果等数据。根据需要,RAM的数据可以通过电容器或电池盒(选件)进行保持,但其存储时间较短,一般只能保持几天。
②EEPROM(或Flash ROM):除RAM外,CPU模块本身带有的保持型存储器(EEPROM或Flash ROM),可以进行数据的永久性存储。保持型存储器用于存储PLC用户程序、PLC参数等重要数据;根据需要,也可以将PLC程序执行过程中所产生的局部变量V、内部标志M、定时器T、计数器C等保存在保持型存储器中。
③存储器卡:存储器卡在S7-200中为可选件,用户可以根据需要选用。存储器卡为保持型存储器,可以作为PLC保持型存储器的扩展与后备,用于保存PLC用户程序、PLC参数、变量V、内部标志M、定时器T、计数器C等。 (2)存储器分区
S7-200的内部存储器分为程序存储区、数据存储区、参数存储区。其中,程序存储区用于存储PLC用户程序;数据存储区用于存储PLC运算、 处理的中间结果(如输入/输出映像,标志、变量的状态,计数器、定时器的中间值等);参数存储区用于存储PLC配置参数(包括程序保护密码、地址分配设 定、停电保持区域的设定等)。
E. 程序的局部变量 全局变量 动态申请数据分别存储在什么地方
程序的局部变量全局变量动态申请数据分别存储在栈里。
普通局部变量在堆栈空间上分配,当局部变量的函数被多次调用时,局部变量每次在堆栈上的位置都不相同。还可以在堆上动态分配局部变量(malloc),但是要记住在耗尽堆空间后释放zd。
内存分配上的栈空间时要注意内存的,不能分配太多的内存。如果堆栈中的空间小于请求的空间大小,则系统将显示堆栈溢出并给出相应的异常信息。但堆不同,堆可分配空间很大。
(5)cpu中的变量存储区是什么扩展阅读:
注意事项:
对局部变量进行分类
1.位置:编译器将静态局部变量放在全局存储区域中。数据,因此尽管它是本地的,但它存在于程序的整个生命周期中(它在定义时产生,并随着程序的结束而结束)。
2.访问权限:静态局部变量只能由其作用域内的变量或函数访问。也就是说,尽管它将存在于程序的整个生命周期中,但是其他函数和源文件不能访问它,因为它是静态的。
3.值:如果用户没有初始化静态局部变量,编译器会自动将其赋值为0,每次调用静态局部变量时都会使用最后一次调用后的值。
F. 用哪个关键字定义的变量其储存区域在硬件的CPU内部
在 C 语言中,内存分配方式有以下三种形式:
1、从静态存储区域分配
由编译器自动分配和释放,在程序编译的时候就已经分配好内存,这块内存在程序的整个运行期间都存在,直到整个程序运行结束时才被释放,如全局变量与 static 变量。
2、在栈上分配
同样由编译器自动分配和释放,在函数执行时,函数内部的局部变量都可以在栈上创建,函数执行结束时,这些存储单元将则被自动释放。
需要注意的是,栈内存分配运算内置于处理器的指令集中,它的运行效率一般很高,但是分配的内存容量有限。
3、从堆上分配
也称为动态内存分配,由程序员手动完成申请和释放。程序在运行的时,由程序员使用内存分配函数(如 malloc 函数)来申请内存,使用完之后再由程序员自己负责使用内存释放函数(如 free 函数)来释放内存。
需要注意的是,如果在堆上分配了内存空间,就必须及时释放它,否则将会导致运行的程序出现内存泄漏等错误。
在 C 语言中,不同类型变量的存储位置和作用域也有所不同。
全局变量
从静态存储区域分配,其作用域是全局作用域,也就是整个程序的生命周期内都可以使用。如果程序是由多个源文件构成的,那么全局变量只要在一个文件中定义,就可以在其他所有的文件中使用,但必须在其他文件中通过使用extern关键字来声明该全局变量。
全局静态变量
从静态存储区域分配,其生命周期也是与整个程序同在的,从程序开始到结束一直起作用。与全局变量不同的是,全局静态变量作用域只在定义它的一个源文件内,其他源文件不能使用。
局部变量
从栈上分配,其作用域只是在局部函数内,在定义该变量的函数内,只要出了该函数,该局部变量就不再起作用,也即该变量的生命周期和该函数同在。
局部静态变量
从静态存储区域分配,其在第一次初始化后就一直存在直到程序结束。该变量的特点是其作用域只在定义它的函数内可见,出了该函数就不可见了。
G. 静态变量存储在哪个区
对于一个进程的内存空间而言,可以在逻辑上分成3个部份:代码区,静态数据区和动态数据区。
动态数据区一般就是“堆栈”。 栈是一种线性结构,堆是一种链式结构。进程的每个线程都有私有的“栈”。
全局变量和静态变量分配在静态数据区(全局区),本地变量分配在动态数据区,即堆栈中。程序通过堆栈的基地址和偏移量来访问本地变量。
H. C语言中的 局部变量,存储在什么地方
C语言中的局部变量存储在栈里。
普通的局部变量在栈空间上分配,这个局部变量所在的函数被多次调用时,每次调用这个局部变量在栈上的位置都不一定相同。局部变量也可以在堆上动态分配(malloc),但是记得使用完这个堆空间后要释放之。
在栈空间上分配时是要注意内存的,不能分配内存过大。如果栈内空间小于所申请的空间大小,那么这时系统将揭示栈溢出,并给出相应的异常信息。但是堆不一样,堆可分配空间是很大的。
(8)cpu中的变量存储区是什么扩展阅读
局部变量分类
1、位置:静态局部变量被编译器放在全局存储区.data,所以它虽然是局部的,但是在程序的整个生命周期中存在(定义时出生,随着程序结束而结束)。
2、访问权限:静态局部变量只能被其作用域内的变量或函数访问。也就是说虽然它会在程序的整个生命周期中存在,由于它是static的,它不能被其他的函数和源文件访问。
3、值:静态局部变量如果没有被用户初始化,则会被编译器自动赋值为0,以后每次调用静态局部变量的时候都用上次调用后的值。