读程序时,在程序中无法找到DI点,在“cross reference”中看不到DI点,猜测可能被屏蔽了,把程序中的内容截图,请高手指点迷津。FC450内容:
AN #Freigabe //Freigabe Bearbeitung
BEC
L P#0.0 //Pointerformat f黵 Quelle laden
L #Q_1 //1. Adresse Quelle
SLD 3 //Wandlung der Adresse in das Pointerformat
+D
T #Pointer_Q //Pointer Quell-Adresse
L P#0.0 //Pointerformat f黵 Maske laden
L #M_1 //1. Adresse Maske
SLD 3
+D
T #Pointer_M //Pointer Masken-Adresse
L P#0.0 //Pointerformat f黵 Ziel laden
L #Z_1 //1. Adresse Ziel
SLD 3
+D
T #Pointer_Z //Pointer Ziel-Adresse
L #Q_1 //Schleifenz鋒ler initialisieren
T #Adresse_Qn
L #DB_Maske //DB Bit-Maskierung
T #Pointer_Maske
L #DB_Ausgabe //DB Datenausgabe
T #Pointer_Ausgabe
loop: L #Variable //Variablentyp f黵 Transfer
L 'E' //Bereich "Eing鋘ge"
==I
JC DE
TAK
L 'A' //Bereich "Ausg鋘ge"
==I
JC DA
TAK
L 'M' //Bereich "Merker"
==I
JC M
BEU
DE: L IB [#Pointer_Q]
JU copy
DA: L QB [#Pointer_Q]
JU copy
M: L MB [#Pointer_Q]
copy: OPN DB [#Pointer_Maske]
L DBB [#Pointer_M] //aktuelle Maske
XOW //ggf. Bit-Invertierung
OPN DB [#Pointer_Ausgabe]
T DBB [#Pointer_Z] //aktuelle Ausgabeadresse
L #Pointer_Q //Pointer Quelle ...
L P#1.0
+D
T #Pointer_Q //... inkrementieren
L #Pointer_M
L P#1.0 //Pointer Maske ...
+D
T #Pointer_M //... inkrementieren
L #Pointer_Z
L P#1.0 //Pointer Ziel ...
+D
T #Pointer_Z //... inkrementieren
L #Adresse_Qn //Schleifenz鋒ler ...
L 1
+I
T #Adresse_Qn
L #Q_n
>I //... abfragen
BEC
JU loop //n鋍hste Variable
图片说明:
最佳答案
那些数字比如图片2的164,183应该是对应的DI,只是在符号表(symbol table里被重新定义了)
先看看符号表里如何定义的
提问者对于答案的评价:
程序中采用间接寻址,把di读到指定的db中
专家置评
关于间接寻址,可以参考下载中心的文档:
http://www.ad.siemens.com.cn/download/SearchResult.aspx
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc228635.html