quote:以下是引用YiMoon在2013-02-26 10:17:01的发言:quote:我需要和大家澄清一个事实。我们先假象一下,其实我们在我们的程序中如果编写了大量的读写外设的程序,例如PIW256,等。那么如果我们使用PB/PN网络,程序一执行就去到模板上去读写数据,总线通信是不是很忙?!还有在想一下,正常的,模板IO数据与CPU交换数据就是通过一帧帧报文实现的,怎会产生额外的非实时的数据交换呢?这和PB/PN的数据交换原理相违背!
这样,大家想想是你们所说去IO模板读取数据吗?这个图仅是示意图哦~
说得有道理,但是,有的时候必须要用到PIW之类的指令,而且还很多,这个还真不知道实际的机制
好,下面我和大家把CPU的访问外设的机制描述一下,大家可能首先会有个疑问,这个问题和我们的主题有什么关系?
CPU访问外设地址的途径有两个,就像大家所说的IW和PIW这两种途径,一种是CPU在读写过程映像区,另一种在读写非过程映像区,其实这两个区都在CPU内的内存中,唯一的区别就是前者保证数据一致性,而后者不能保证。还有为什么我们可以要设置过程映像区的大小?一保证你所需要的数据的一致性,二,较少可以较少CPU的循环周期。
前面大家聊到PIW读逐次逼近法的过程变量,首先无论是过程映像区内还是外,CPU读写数据(不是指令)的方式是一样的,只是数据存在不同的缓冲区(理解为映像区内或外),分布式IO模板的数据与CPU交换数据就是通过一帧帧报文实现的,CPU与这些IO缓冲区交换数据,仅此而已。然后你的指令决定你在哪个缓冲区读写数据。言归正传,实际上,我想说的在分布式IO模板读写PIW读逐次逼近法的过程变量,在转换过程中,是没有意义的,因为即使在程序中多么快,但PB/PN通信的速度决定你能多少频率的读写到IO。