技术论坛

关于过程映像区和外部存储区

作者 主题
游士

经验值: 175
发帖数: 14
精华帖: 0
主题:关于过程映像区和外部存储区


只看楼主 楼主 2011-07-20 00:02:37
举个例子:315-2DP过程映像区的大小是128Byte,IB0-IB127,前两天西门子客服告诉我:如果不超过过程映像区的范围,IB0-IB127和PIB0-PIB127是一样的,相当于覆盖了。但我刚刚在论坛上看见有个帖子说的好像有点分歧:

“QB0、PQB0地址是同一个地址,并不是地址重叠!”我说的“重叠”是两个地址区的地址编号有重叠,都是从0号字节开始。

说QB0、PQB0是同一个地址,这在概念上就大错特错了,QB0是CPU内部存储区的过程映像输入字节,“映像”是镜中花、水中月。将数据送入QB0,并不是送到输出模块,数据还是在CPU内部。PQB0用来直接访问硬件输出模块。将数据送PQB0,数据被直接送到输出模块。QB0、PQB0绝对不是同一个地址!!!


我就想确认下,IW20和PIW20是同一个地址么?麻烦大侠给说下。
 
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=874477&b_id=4&s_id=0&num=14

至圣

经验值: 18406
发帖数: 6291
精华帖: 137
回复:关于过程映像区和外部存储区


只看楼主 1楼 2011-07-20 06:45:20
IW20和PIW20分别属于两个地址区,只是地址的编号相同,当然不是同一个地址。两个城市都有1路公交车,它们是同一路公交车吗?
追求完美
以下网友喜欢您的帖子:

  
至圣

经验值: 12236
发帖数: 2431
精华帖: 86
回复:关于过程映像区和外部存储区


只看楼主 2楼 2011-07-20 07:50:13
CPU-315(6ES7 315-2AG10-0AB0),过程映像I/O 1各128字节,数字量通道集中I/O各1024字节,模拟量通道集中I/O各256字节.如某种CPU,过程映像I/O 1各128字节(0-127)。
所有I/O状态其实都是可以通过映象区处理的,例如PIW100,它的映象地址是IW100.
当用到MOV指令直接输入PIW100时,相当于CPU跳过IW100直接访问外设地址.有立即寻址的作用.

 
以下网友喜欢您的帖子:

  
游士

经验值: 175
发帖数: 14
精华帖: 0
回复:关于过程映像区和外部存储区


只看楼主 楼主 3楼 2011-07-21 13:16:04
谢谢两位大侠的回答,但是我还是有些疑问。我先说说我的问题是怎么产生的。
还是以315-2DP为例,它的过程I/0映像区为128/128B。
1),我现在建立了个test项目,硬件组态里只添加了电源和315-2DPCPU,然后保存编译,产生OB1就可以编程了,没组态任何的卡件。
程序里面我调用FC105,输入变量地址用IW20。保存,下到PLCSIM仿真控制器没有问题。
2)然后我把IW20改成PIW20,仿真CPU肯定就报错,SF红硬件故障。硬件组态里面我再加一块AI8x12Bit卡件,将IW20的地址设定进去,重新编译下载后,仿真CPU正常。

我也知道IW20和PIW20访问方式是不一样的,前者是过程映像区地址,一个扫描周期内,它的数值是不变化的。PIW20是CPU通过访问外设存储区,直接读AI卡件的数值,数据是实时更新的。

我现在不解的就是:硬件组态里面AI8x12Bit卡件地址默认从256开始,我设置一个,比如272-287,通道地址就是PIW272...PIW286,那么我在OB1程序里用IW272和PIW272都是可以的,不会报错,而且可以仿真。但是IW272明明已经超出过程映像区的寻址范围了啊(IBO-IB127).还希望各位大侠能不吝赐教,详细解释下这其中的缘由。





 
以下网友喜欢您的帖子:

  
游士

经验值: 175
发帖数: 14
精华帖: 0
回复:关于过程映像区和外部存储区


只看楼主 楼主 4楼 2011-07-21 14:02:14
以前帖子里有这样一段话:

S7-300/400的I/Q区称为过程映像输入区(PII)/过程映像输出区(PIQ),“映像”表示它们就像镜中花、水中月,访问它们并不是访问输入/输出模块,而是访问CPU存储器中的区域。

S7-300/400的I/Q区与PI/PQ区(外设输入/外设输出区)的关系如下:
1)访问PI/PQ区时,直接读写输入/输出模块,而I/Q区是输入/输出模块在CPU的存储区中的“映像”。
使用外设地址可以实现用户程序与I/O模块之间的快速数据传送,因此被称为“立即读”和“立即写”。在每次扫描循环开始时对P/Q区采用批量读/写的方式,因此造成了输入/输出的滞后。
2)I/Q区可以按位、字节、字和双字访问,PI/PQ区只能按字节(PIB/PQB)、字(PIW/PQW)和双字(PID/PQD)访问。
I/Q区和PI/PQ区可以使用相同的字节地址。
3)I/Q区的地址范围比PI/PQ区的小,有的S7-300CPU的I/Q区只有128B,有的CPU可以在组态时修改I/Q区的大小。
4)如果地址超出了I/Q区允许的范围,必须使用PI/PQ区来访问。例如如果I/Q区只有128B,在访问S7-300的模拟量模块时(其地址区从256号字节开始),则必须使用PI/PQ区的地址。

所以我现在可不可以这样理解:
对数字量信号的处理,变量地址用的都是过程映像区的地址,I0.0,Q1.0。。除了那些以通讯方式将某个设备的开关量信号以PIB的方式读入CPU进行程序处理。过程映像区的大小就决定了PLC能处理多少数字量I/O点,比如315-2DP最多处理128*8=1024个数字量输入信号和1024个数字量输出信号。

对模拟量信号处理,一般是不占用过程映像区,CPU直接通过外设存储区直接访问I/O模块。AI8*12Bit卡件,地址设成PIW256-PIW270,OB1程序里面直接用PIW256。这里就有个疑问:为啥用IW256也可以呢,难道是将PIW256的数据存入过程映像区的IW256?不是过程映像区的大小只有128byte(0-127)么?还是过程映像区的大小是128个字节,但是我可以随意定义是从0-127还是从256-383?也就是过程映像区大小是128字节,数字量地址只使用了100字节,还可以使用14路模拟量输入,而这和我定义的地址编号没有关系,我可以用IW256,也可以用IW512?那开关量信号处理的时候我除了用I0.0,还可以用I128.0?

但我加DI卡件的时候,地址设到127之外,就不在过程印象区了啊,通道里面只显示PIB128了,只能按字节访问了啊。而且DI卡件地址不能设成跨127,比如我设成126-129(32路DI)!

有点罗嗦了,麻烦大家给瞅瞅!!

 
以下网友喜欢您的帖子:

  
游士

经验值: 175
发帖数: 14
精华帖: 0
回复:关于过程映像区和外部存储区


只看楼主 楼主 5楼 2011-07-21 18:05:10
麻烦各位大侠给看看,我也知道这个问题在论坛讨论很多次了,今下午我光看精华帖看到讨论这个问题的就不下5个精华帖!
 
以下网友喜欢您的帖子:

  
侠客

经验值: 911
发帖数: 297
精华帖: 2
回复:关于过程映像区和外部存储区


只看楼主 6楼 2011-07-21 18:42:10
我也问个问题,如果我在程序中直接写PIW或者直接写PQW,那样是不是直接可以在程序执行过程中输入或输出了?
正常写I和Q的话,是在程序执行的开始或者结尾批量输入或输出?
不会的还太多
以下网友喜欢您的帖子:

  
至圣

经验值: 13053
发帖数: 4961
精华帖: 81
回复:关于过程映像区和外部存储区


只看楼主 7楼 2011-07-22 08:45:54
“但是IW272明明已经超出过程映像区的寻址范围了啊(IBO-IB127)”
这是PLCSIM与真实PLC的区别,PLCSIM提供了高档PLC才有的资源

“对数字量信号的处理,变量地址用的都是过程映像区的地址,I0.0,Q1.0。。除了那些以通讯方式将某个设备的开关量信号以PIB的方式读入CPU进行程序处理。过程映像区的大小就决定了PLC能处理多少数字量I/O点,比如315-2DP最多处理128*8=1024个数字量输入信号和1024个数字量输出信号。”
超出过程映像区的可以通过PIB、PIW、PID、PQB、PQW、PQD来处理,不能说处理不了

“为啥用IW256也可以呢,难道是将PIW256的数据存入过程映像区的IW256?不是过程映像区的大小只有128byte(0-127)么?”
这和前面说的一样还是PLCSIM和真实PLC的区别

“还是过程映像区的大小是128个字节,但是我可以随意定义是从0-127还是从256-383?”
没听说过过程映像区可以修改的

“也就是过程映像区大小是128字节,数字量地址只使用了100字节,还可以使用14路模拟量输入,而这和我定义的地址编号没有关系,我可以用IW256,也可以用IW512?那开关量信号处理的时候我除了用I0.0,还可以用I128.0?”
未用完的过程映像区模拟量可以使用,但不能超出地址范围。

最后强调一点PLCSIM<>真实的PLC
 
以下网友喜欢您的帖子:

  
至圣

经验值: 13053
发帖数: 4961
精华帖: 81
回复:关于过程映像区和外部存储区


只看楼主 8楼 2011-07-22 08:48:29
quote:以下是引用麽丝在2011-07-21 18:42:10的发言:
我也问个问题,如果我在程序中直接写PIW或者直接写PQW,那样是不是直接可以在程序执行过程中输入或输出了?
正常写I和Q的话,是在程序执行的开始或者结尾批量输入或输出?

你写错了吧,PIW只能读
PIW、PQW是外设,所以对其操作就是直接操作输入输出
 
以下网友喜欢您的帖子:

  
侠客

经验值: 911
发帖数: 297
精华帖: 2
回复:关于过程映像区和外部存储区


只看楼主 9楼 2011-07-23 13:34:57
quote:以下是引用youhm在2011-07-22 08:48:29的发言:
quote:以下是引用麽丝在2011-07-21 18:42:10的发言:
我也问个问题,如果我在程序中直接写PIW或者直接写PQW,那样是不是直接可以在程序执行过程中输入或输出了?
正常写I和Q的话,是在程序执行的开始或者结尾批量输入或输出?

你写错了吧,PIW只能读
PIW、PQW是外设,所以对其操作就是直接操作输入输出


嗯,写错了。
我要是把PIW给到某个MW6里面,然后在下一行程序直接对M6.0操作,是不是可以直接在这个程序周期里面执行完成,而不用等到一个程序的首尾?
不会的还太多
以下网友喜欢您的帖子:

  
至圣

经验值: 13053
发帖数: 4961
精华帖: 81
回复:关于过程映像区和外部存储区


只看楼主 10楼 2011-07-23 14:19:45
读PIW是立即读,可以这样理解,要完成包含读PIW的指令必须要读到来自PIW的数据,也就是当前扫描周期内必须完成
 
以下网友喜欢您的帖子:

  
至圣

经验值: 10907
发帖数: 4325
精华帖: 26
回复:关于过程映像区和外部存储区


只看楼主 11楼 2011-07-23 15:08:09
在前面 www123456 有关IW与PIW的关系的讲述简单确切。

to楼主:
楼主讲,对下述有疑问:“
程序里面我调用FC105,输入变量地址用IW20。保存,下到PLCSIM仿真控制器没有问题。然后我把IW20改成PIW20,仿真CPU肯定就报错,SF红硬件故障。硬件组态里面我再加一块AI8x12Bit卡件,将IW20的地址设定进去,重新编译下载后,仿真CPU正常。”

楼主调用FC105问题的根本并不在IW20还是PIW20。而在与IW20与PIW20数据类型。
FC105 IN的数据类型应为INT.
PIW是一个16位数,系统默认为WORD数据类型,可在符号表中定义为INT数据类型,而IW的数据类型正好为INT。这样你的PLCSIM仿真才得以进行。你将PIW的数据类型该为INT,你的PLCSIM仿真一样得以进行。

通常情况下WORD用于逻辑运算,INT用于数学运算;
在使用梯形图或SCL等语言编程时区分较严格
在使用语句表编程时系统不检测数据类型是否匹配,即WORD与INT在用法上没有什么区别(WORD可做数学运算,INT也可作逻辑运算)
注意:FC105输入是一定要定义成INT类型。
怎么去将word改成int ?用转换指令还是?
不需转换指令。可在符号表中定义为INT数据类型。

请看:找答案的这个问题:
http://www.ad.siemens.com.cn/service/answer/solution.asp?Q_id=71484&cid=1029
一日三省吾身
以下网友喜欢您的帖子:

  
游士

经验值: 175
发帖数: 14
精华帖: 0
回复:关于过程映像区和外部存储区


只看楼主 楼主 12楼 2011-07-23 16:43:57
谢谢各位大侠的参与。。。

再请教下阿鸣大侠:
确实FC105输入管脚IN的数据类型是INT。
IW20和PIW20在都不自己定义数据类型的情况下,它们都是WORD啊,符号表里面默认的都是WORD。
我看了好几个现场编好的项目程序里面,在用PIW(比如PIW256)的时候,也没在符号表里面刻意的将数据类型从WORD改成INT啊。

按大侠说的,我试了一遍,在符号表里面,定义了PIW20的数据类型为INT,但是我硬件组态里面没有加AI卡件,没有组态IW20这个地址,我下到仿真控制器里面,控制器还是SF红报错。

也就是使用PIW寻址的时候,必须硬件组态里面定义这个PIW地址,将PIW这个地址赋给实际的卡件通道,才能进行仿真。而如果我用IW的时候,在硬件组态里面只添加个电源和CPU,我在OB1里面就可以编程仿真了,只不过里面用到的变量地址都是过程映像区的,如果要用到PIW,我就必须在硬件组态里面添加卡件,组态这个地址!这样理解对不?

其实,刚开始我有这个疑惑,我是看到说西门子可以先硬件组态,再编程;也可以先编程再硬件组态,都不会报错。因为我用ABB的时候,都是先硬件组态,把通道这些都定义好,再编程。

好像在论坛帖子里也说这个问题:在现场用真正的CPU的时候,S7-300/400的I/O地址必须对应硬件通道,空地址是无法访问的,否则会地址访问出错。

这时候如果OB122先前没有被下载,CPU会停机。

 
以下网友喜欢您的帖子:

  
游士

经验值: 175
发帖数: 14
精华帖: 0
回复:关于过程映像区和外部存储区


只看楼主 楼主 13楼 2011-07-23 16:55:42
对西门子我没干过实际的项目,从学校毕业也两年了,以前也没深入的去接触过。因为我们这边主体系统用的都是DCS,第三方设备用西门子的东西比较多。因为公司给别的厂矿签了一年的系统维护协议,其中有两套PCS7,一套400的和一套300的系统,所以现在急着摸一摸西门子的系统,毕竟西门子肯定是搞自动化人必须要掌握的,所以我帖子里面说的有哪些不对的,请各位大侠能够指出来!

干维护没干过项目就是这样的,啥都知道一点啥都知道的不清楚,关于西门子,现在最想了解的还是PLC和上位监控计算机的通讯设置问题,等我组织好语言,再发出来,请大侠们给看看。
 
以下网友喜欢您的帖子:

  
至圣

经验值: 10907
发帖数: 4325
精华帖: 26
回复:关于过程映像区和外部存储区


只看楼主 14楼 2011-07-23 17:11:13
楼主的专研的劲头,令人佩服。
刚在实验室试完,不管是IW还是PIW只要类型为INT,调用FC105均无问题。

“如果要用到PIW,我就必须在硬件组态里面添加卡件,组态这个地址!这样理解对不”?
是的。不但是PIW,对于所有的I/O地址都是这样。我所做的实验程序中的I/O地址均有实际的硬件,并被组态。

一日三省吾身
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
关于过程映像区和外部存储区
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。