如何理解$A_DBR[560] = 0.0?

分享到:
300
下一篇 >

菜鸟:

$A_DBR[560] = 0.0

$A_DBR[564] = 0.0

读取NC内存,具体的位置在哪,如何跟PLC对应?

侠士:

需要在PLC 中调用FC21

菜鸟:

不知道怎么把图片填上去,UBB标签示例看不懂,

侠士:

$A_DBR[560] = 0.0

该NC数值可以通过调用FC21和PLC进行通讯,Funct角标3为读取,4为写入,IVAR1为具体的地址,在这里也就是560,需要去PLC中寻找IVAR1为560的FC21。

也可能IVAR1中的数值小于560,但是该数值加上Any型的长度所需的字节数,大于560了,则$A_DBR[560]的传输就在这里边。

ym :

840的不熟悉,802D中有一个NC与PLC的公共存储区

比如$A_DBB[0] 对应PLC地址VB49000000,以此类推

希望能帮助你

bz:

从FC21的块能看到如下信息:左侧 M0.1 Enable,B#16#3 Funct,P#DB250.DBX1496.0REAL34 S7var,560 IVAR1,697 IVAR2;右侧Error,Errcode; 在DB250数据块中能看到 DB250.DBX1496.0 REAL 注释为NC--PLC;

NC程序是这样写的:

Write DualPort RAM -Semaphore 696- ;*RO*

;----------------------------------------------------------;*RO*

N700 WHILE $A_DBB[696]<>0 ;*RO*

N710 MSG("Semaphorentransfer 696 aktiv!") ;*RO*

N720 ENDWHILE ;*RO*

; ;*RO*

N640 $A_DBR[560] = 0.0 ;*RO*

N650 $A_DBR[564] = 0.0

另外一段:

N1070 $A_DBB[696] =1 ;*RO*

; ;*RO*

N1080 STOPRE ;*RO*

N1090 WHILE $A_DBB[696]<>0 ;*RO*

N1100 MSG("Semaphorentransfer 696 aktiv!") ;*RO*

N1110 ENDWHILE ;*RO*

; ;*RO*

;----------------------------------------------------------;*RO*

; Write DualPort RAM -Semaphore 697- ;*RO*

;----------------------------------------------------------;*RO*

N1120 WHILE $A_DBB[697]<>0 ;*RO*

N1130 MSG("Semaphorentransfer 697 aktiv!") ;*RO*

N1140 ENDWHILE ;*RO*

; ;*RO*

; Werte f黵 Vorrichtung 0? ;*RO*

N1060 $A_DBR[560] = Fix_Clamp ;*RO*

N1070 $A_DBR[564] = Fix_Clamp ;*RO*


该信息是给PLC,或者PLC给NC的(上例看是给PLC的夹具夹紧信号)。跟PLC对应的地方,要到PLC中,去搜索FC21的调用情况,然后根据FC21的两个行参——S7Var,IVar1。

CALL FC 21 (

Enable := M 10.0, //if TRUE, FC 21 active

Funct := B#16#3, //读数据,PLC--->NC

S7Var := P#M 100.0 DWORD 3, //M100.0指针指向的起始地址,传送3个双字。

IVAR1 := 4,

IVAR2 := 0,

Error := M 10.1,

ErrCode := MW12);

上边这段调用程序总共传递了三个NC量,$A_DBR[4],$A_DBR[8],

$A_DBR[12]。$A_DBR[4],对应的PLC地址是MD100;$A_DBR[8],对应的PLC地址是MD104;$A_DBR[12],对应的PLC地址是MD108。

这下应该讲清楚了吧。

菜鸟:

非常感谢大家,似乎有点明白了!


你可能感兴趣: 工控菜鸟园 数控系统 SINUMERIK PLC
无觅相关文章插件,快速提升流量