请问FC中用FB901之前的CDB是什么意思,难道他把数据块DB2584和FB901的背景数据块DB2634的内容相交换?它们数据长度都不够的哇,DB2584占32,而DB2634占72,请高手们帮我逐一翻译下,谢谢
图片说明:
最佳答案
谈这个问题之前先引入个概念,在间接寻址中有一种叫交叉区域寻址的方式,
包含有存储器区域信息的指针,称为交叉区域指针。
交叉区域指针为32位,寄存器间接寻址要使用地址寄存器AR1或AR2。
32位交叉区域指针,左起0~18位格式与32位内部区域指针相同,19~23位,27~30位未定义,31位为交叉区域指针标识位。
24~26位是存储区域地址标识,8中组合表示8种存储器区域:
000 表示没有地址区,例如P#12.0;
001 表示输入地址区I,例如P#I12.0;
010 表示输出地址区Q,例如P#Q12.0;
011 表示标志位地址区M,例如P#M12.0;
100 表示数据块(DB)中的数据,例如P#DB1.DBX12.0
101 表示数据块(DI)中的数据,例如P#DI1.DIX12.0
110 表示区域地址区L,例如P#L12.0;
111 表示调用程序块的区域地址区V,例如P#V12.0;
概念表达完毕,下面就先说说OPN 指令,比如:
OPN DI2584 //打开背景数据块2584,那么后面的指令可以这样用 L DBW0,写全称就是DB2584.DBW0。实际上程序就将寻址区域地址标识设定为101,而CDB的作用就是将24~26位是存储区域地址标识变回100。
这种编程只影响AR1和AR2的状态,不是交换数据。影响的是交叉区域寻址。
提问者对于答案的评价:
谢谢
专家置评
已阅,最佳答案正确。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc197724.html