新手问题简单说,我在组态的时候,加入DI/DO,AI/AO这种数字模拟SM模块的时候,会自动分配地址,数字量地址从0,4,8开始,模拟量地址从256,272,284。
但是我想调用这些地址,什么时候用I0.1,Q2.6,PIW272。
就是什么时候加P,什么时候又不加了,不太理解所谓的外部输入输出
问题补充:
"你的CPU的支持io区大小是1024byte,那么你模拟量输入模块的起始地址是256的话,你在程序里通过IW,PIW来读取到的值是一样的"
iw是不只能使用1024byte内,那模拟已经是256以上的了,用iw也读不到256以上的piw数据啊
最佳答案
1;I,Q是过程映像区,PI,PQ是外设区。他们的存取方式不一样罢了,IB0的值是和PIB0是相等的,I,Q区是CPU的OB1循环结束的时候CPU读入外部PI区数据到I区数据,同时把Q区数据复制到PQ区里面。
2:PI,PQ区只能以非位的形式来存取,I,Q是可以以位的形式来存取。
3:每个CPU的I,Q区的大小是有限制的,PI,PQ区存储较大,一直以来有个误区就是模拟量时PIW,PQW,我告诉你没有这回事。加P只是CPU直接从外部模块读取数据到PLC,不经过IO过程映像区罢了。
比如,你的CPU的支持IO区大小是1024byte,那么你模拟量输入模块的起始地址是256的话,你在程序里通过IW,PIW来读取到的值是一样的,只不过IW和OB1的扫描周期相关,PIW是实时的模拟量通道A/D转换的数值。
4:所以你可以可以加个P来读取数据,但是有的P区,不能以I区来读取,为什么的因为IO区的大小是有限制的,一般来说比P区要小多了,你的CPU的支持IO区大小是1024byte
那么你可以以IB1023来读取数据,也可以用PIB1023来读取,但是PIB1024,就不能用IB1024来读取了,因为你的PLC的影像区最大1024BYET(0-1023).
5:比如某些输入输出的开关量信号,要求模块信号变化时,PLC能够立即取得信号,不经过过程映像区。你就可以再程序执行如下类似语句,比如I0.0有变化,CPU要求立即得到当前信号,你就可以这样来做
LPIB0
TIB0
这样模块上的信号就被立即刷新到IB0里了。
你的CPU的支持IO区大小是1024byte,那么你模拟量输入模块的起始地址是256的话,你在程序里通过IW,PIW来读取到的值是一样的"
iw是不只能使用1024byte内,那模拟已经是256以上的了,用iw也读不到256以上的piw数据啊
如果你的PLC支持的IO映像区是1024BYTES,一般每个PLC都支持65535BYTES的PI,PQ区
PIW256包含两个字节PIB256,PIB257,你的映像区是1024你说用PIW256和IW256来读不是一样吗?只不过PIW的值和OB1循环无关罢了!
你的数字量模块你起始地址你设为256看看,只要CPU的映像区最大超过256你都可以讲数字量起始地址设为256.谁告诉你模拟量非得从256开始的,我非要有点个性我从10开始难道不行吗!
提问者对于答案的评价:
万分感谢前辈的解答!
专家置评
已阅,最佳答案正确。