什么是过程映像区与外设地址

描述

过程映像区与外设地址

cpu什么是过程映映像区,外设地址?

cpu过程映像区最大范围是多少?默认设置是多少?能否更改默认设置?

cpu过程映像区与外设地址是一一对应的吗?

cpu使用的I/O地址超过了过程映像区范围怎么办?

为什么通讯指示灯正常,但读不到/写不进从站数据;读取的数值一直为0,写入的数值能看到,但从站无变化?

CPU31xC的集成I/O点,无法正常使用?

cpu如何访问外设地址的Bool(布尔量)地址?

cpuPQW无法直接监看?

什么是过程映映像区,外设地址?

当在程序中使用‘I.。。’或 ‘Q.。。’ 对输入、输出进行访问时,实际上并未直接访问输入、输出模板,而是访问 CPU 的系统存储区。此 ‘I’/ ‘Q’ 区分别被称作输入过程映像区和输出过程映像区 。

外设寻址意指直接访问外设模板,在地址前加上字母 ‘P’ 来表示:

PIB --》 Peripheral Input Byte 外设输入字节

PQB --》 Peripheral output Byte 外设输出字节

PIW --》 Peripheral Input Word 外设输入字

PQW --》 Peripheral output Word 外设输出字

PID --》 Peripheral Input Double-word 外设输入双字

PQD --》 Peripheral Output Double-word 外设输出双字

外设地址的最小地址为字节,即PIB、PQB。

以模拟量输入为例理解IW与PIW:

PIW,直接读取物理地址,即直接采集模板信号。

IW,每个扫描周期将模板数据读取至过程映像区,程序访问读取的是过程映象区数值。

过程映像区最大范围是多少?默认设置是多少?能否更改默认设置?

最大范围与默认设置与CPU型号有关。

注意:部分老款CPU型号无法更改过程映像区大小。

请具体参看如下手册链接:SIMATIC S7-300 CPU 31xC 和 CPU 31x:技术规范

过程映像区与外设地址是一一对应的吗?

不是一一对应。过程映像区每个扫描周期更新一次,同一扫描周期内数值不会变化。以下为系统扫描周期的更新过程:

执行 CPU 操作系统的内部工作。

将 OB1 中输出过程映像区的值写入到实际模板输出。

从模板读取实际输入值至 OB1 中的输入过程映像区。

执行 OB1 的程序。

执行第一步操作,开始下一次循环

而外设地址是实时更新数值,可能同一扫描周期内有不同的实时数值。此外,过程映像区默认设置以外的映像区地址,仅仅是普通的存储区,与外设地址并无关联。

使用的I/O地址超过了过程映像区范围怎么办?

可以采用两种方式:更改过程映像区范围 或 使用外设地址直接读取/写入

更改过程映像区范围

如图1所示,在CPU属性中可设置过程映像区大小。注意:设置的越大,会影响扫描周期时间。因此,建议设置到使用的地址范围即可。

cpu

图1 更改过程映像区大小如图2,部分老款CPU型号不支持更改(如6ES7 315-2AG10-0AB0)。

cpu

图2. 无法更改的过程映像区

使用外设地址直接读取/写入

使用PIB/PQB,PIW/PQW,PID/PQD对外设地址直接读取写入。问题1.为什么通讯指示灯正常,但读不到/写不进从站数据;读取的数值一直为0,写入的数值能看到,但从站无变化?问题2. CPU31xC的集成I/O点,无法正常使用?两个问题通常都为组态设置的地址超过了过程映像区设置范围;此时,按照以上办法操作即可。

如何访问外设地址的Bool(布尔量)地址?

以输入为例,由于外设地址的最小地址为字节,因此无法直接读取Bool地址。需要先用PIB/PIW/PID将数值MOVE到其他的存储区(如M,DB区),再访问M或DB的Bool地址。输出同理。

PQW无法直接监看?

是的。PQW为只写操作,无法监看。通常设置一个中间地址,写入数值先赋值给M区或DB区地址,再由M区或DB区地址,MOVE给PQW,监看这个中间地址即可。

同理,PIW为只读操作,无法写入。

审核编辑:郭婷

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分