IW与PIW,QW与PQW,这2对各什么区别

更新时间:2024-05-01 14:52:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

我在网上看了好多,好几个都说IW是数字量输入,PIW是模拟量输入,而且IW是通过映像区读取,PIW直接读取什么的,越看越糊涂了,但是我看我以前的老师(同事)就是用IW通过FC105读取模拟量的啊。有点疑惑了,来个老师解释下吧,真的很纳闷。

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

只是在过程映像区刷新的时刻,I区和Q区的内容才与输入/输出模块中的实际值相同,因此它们并不能直接反映输入/输出的实际状态。 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区的地址。 CPU的I区如果较大(大于256B),就可以用IW读模拟量。 对于模拟量输入,用PIW和IW都可以,CPU输入/输出映像区有一定范围,对于没有相应的映像缓冲区的输入地址,一定采用PIW指令,而一般外设输入地址,都是没有映像缓冲区的。对于有映像缓冲区的输入地址,用PIW和IW都可以,但用PIW,表示直接取地址内的数据而非映像缓冲区的数据,相当于立即读取。对于输出亦是如此。

PIW是实时输入,在程序的一个循环周期中是可能变化的,IW不会变化,IW和PIW输入的都是16bit数。

PIW是直接去读物理地址,可以理解为直接去模板采集信号;IW是去输入、输出映像区去读取。PIW响应是实时的,也就是说在你程序执行的时候读取当时的值,但效率低;IW稍有滞后,因为IW只是系统周期性的刷新,但是效率高。另外映像区是占用系统内存的,所以不可以无限制的开,对于大系统来说只能取一个折中的大小,对于超出映像区的I/O点只能通过Pxx来读写,而在映像区范围内的PIW/IW都可以,但区别如前所述。 元件名称: I 输入继电器 Q 输出继电器

M 通用辅助继电器 SM 特殊继电器 S 顺序控制继电器 V 变量存储器 L 局部变量存储器 T 定时器 C 计数器 AC 累加器 HC 高速计数器

AI 模拟量输入映像寄存器 AQ 模拟量输出映像寄存器 PI 外部输入 PQ 外部输出 DB 数据块 L 本地数据

PIW直接取地址内的数据而非映像缓冲区的数据,相当于立即读取 PQW 立即输出 STEP 中的块 组织块 OB

功能 FC(Function) 功能块 FB(Function Block) 系统功能 SFC(System Function)

系统功能块 SFB(System Function Block) 背景功能块 背景DB(Instance Date Block) 共享数据块 共享DB(Share Date Block)

什么是状态字?状态字的作用 ——西门子S7系列PLC

状态字用于表示CPU执行指令时所具有的状态。一些指令是否执行或以何方式执行可能取决于状态字中的某些位;执行指令时也可能改变状态字中的某些位,也能在位逻辑指令或字逻辑指令中访问并检测他们。状态字的结构如下:

31?????9 8 7 6 5 4 3 2 1 0

BR CC1 CC0 OS OV OR STA RLO (1) 首位检测位( )

状态字的位0称为首位检测位。若 位的状态为0,则表明一个梯形逻辑网络的开始,或指令为逻辑串的第一条指令。CPU对逻辑串第一条指令的检测(称为首位检测)产生的结果直接保存在状态字的RLO位中,经过首次检测存放在RLO中的0或1被称为首位检测结果。 位在逻辑串的开始时总是0,在逻辑串指令执行过程中 位为1,输出指令或与逻辑运算有关的转移指令(表示一个逻辑串结束的指令)将 清0。

(2) 逻辑操作结果(RLO)

状态字的位1称为逻辑操作结果RLO(Result of Logic Operation)。该位存储逻辑指令或算术比较指令的结果。在逻辑串中,RLO位的状态能够表示有关信号流的信息。RLO的状态为1,表示有信号流(通);为0,表示无信号流(断)。可用RLO触发跳转指令。

(3) 状态位(STA)

状态字的位2称为状态位。状态位不能用指令检测,它只是在程序测试中被CPU解释并使用。如果一条指令是对存储区操作的位逻辑指令,则无论是对该位的读或写操作,STA总是与该位的值取得一致;对不访问存储区的位逻辑指令来说,STA位没有意义,此时它总被置为1。

(4) 或位(OR)

状态字的位3称为或位(OR)。在先逻辑“与”后逻辑“或”的逻辑串中,OR位暂存逻辑“与”的操作结果,以便进行后面的逻辑“或”运算。其它指令将OR位清0。

(5) 溢出位(OV)

状态字的位4称为溢出位。溢出位被置1,表明一个算术运算或浮点数比较指令执行时出现错误(错误:溢出、非法操作、不规范格式)。后面的算术运算或浮点数比较指令执行结果正常的话OV位就被清0。

(6) 溢出状态保持位(OS)

状态字的位5称为溢出状态保持位(或称为存储溢出位)。OV被置1时OS也被置1;OV被清0时OS仍保持。所以它保存了OV位,可用于指明在先前

的一些指令执行中是否产生过错误。只有下面的指令才能复位OS位:JOS(OS=1时跳转);块调用指令和块结束指令。

(7) 条件码1(CC1)和条件码0(CC0)

状态字的位7和位6称为条件码1和条件码0。这两位结合起来用于表示在累加器1中产生的算术运算或逻辑运算结果与0的大小关系;比较指令的执行结果或移位指令的移出位状态。详见表4.4.2.1和表4.4.2.2。

4.4.2.1算术运算后的CC1和CC0 算术运算 CCl CCO 无溢出 有溢出 整数加时产生负0 0 结果=0 范围溢出 乘时负范围溢0 1 结果<0 出;加、减、取负时正溢出 乘、除时正溢出;1 0 结果>0 加、减时负溢出 1 1 - 在除时除数为0 非法操作 正范围溢出 负范围溢出 平缓下溢 有溢出 整数算术运算 浮点数算术运算 4.4.2.2 比较、移位和循环移位、字逻辑指令后的CC1和CC0 CCl CCO 0 0 0 1 比较指令 累加器2=累加器1 累加器2<累加器1 移位和循环指令 移位=0 - 字逻辑指令 结果=0 - 1 0 累加器2>累加器1 不规范 - 结果≠0 1 1 (只用于浮点数比较) 移出位=1 - (8) 二进制结果位(BR)

状态字的位8称为二进制结果位。它将字处理程序与位处理联系起来,在一段既有位操作又有字操作的程序中,用于表示字操作结果是否正确(异常)。将BR位加入程序后,无论字操作结果如何,都不会造成二进制逻辑链中断。在LAD的方块指令中,BR位与ENO有对应关系,用于表明方块指令是否被正确执行:如果执行出现了错误,BR位为0,ENO也为0;如果功能被正确执行,BR位为1,ENO也为1。

在用户编写的FB和FC程序中,必须对BR位进行管理,当功能块正确运行后使BR位为1,否则使其为0。使用STL指令SAVE或LAD指令——(SAVE),可将RLO存入BR中,从而达到管理BR位的目的。当FB或FC执行无错误时,使RLO为1并存入BR,否则,在BR中存入0。

本文来源:https://www.bwwdw.com/article/u0eg.html

Top