恭喜,你发布的帖子
发布于 2017-10-20 13:37:00
2楼
R:
我觉得我们首先谈一下CPU的停机行为。Stop可以导致什么?
大家应该知道CPU的循环周期包括PII, PIQ, AP, CCP。CPU停机会导致该循环周期停止,即PII, PIQ, AP以及 CCP的运行都会停止。这意味着PII, PIQ不会刷新,无论程序还是变量表中的数值都不会变化。
但是为什么过程映像区外的数值在变化?这需要我给大家介绍一下PLC的IO数值内存的存储区域。CPU的循环周期所使用的IO存储区域与外设的IO存储区域不是一个存储空间,虽然他们都在CPU内部,是两个大小一样但是不同的存储空间。该存储空间的大小可以在每一个CPU的技术数据参数中查找,例如317-2PN/DP的IO区域大小为1024B(记不清了,没查,不影响理解),那么外设的IO存储区域的大小和CPU的循环周期所使用的IO存储区域都是1024B。
外设的IO存储区域用于存储外设IO的数值,受总线循环周期和IO变化的影响,IO数值在不断地刷新。也就是说不受CPU的循环周期的影响。
CPU的循环周期所使用的IO存储区域主要用于数据一致性,即在循环周期内的IO的数值不会发生变化,这一点大家都很清楚。但默认的过程映像区的大小却不是1024B,而是256B。这是因为300和400的CPU的处理速度不够快,设置较少的过程映像区的大小可以减少CPU的循环周期时间。而1500足够快,所以大家也不用操心设置过程映像区的大小了。
然后我们在看指令,例如IB0,IW0,在变量表中,实际该指令即是访问IB0,IW0的数值,真正访问的是CPU的循环周期所使用的IO存储区域中的过程映像区中的数值。因为CPU停机,所以数值不会变化。当使用PIB0,PIW0指令时,在变量表中,实际在访问外设的IO存储区域,即使CPU停机,但因为与CPU的循环周期没有任何关系,所以可以看见数值在不断的变化(只要IO有变化)。
请填写推广理由:
分享
只看
楼主