Помогите разобраться с обращением к DB (Step7)
Помогите разобраться с обращением к DB (Step7)
Привет всем ! Недавно ковыряясь в одном из проектов , обнаружил одну неприятную штуку ,а именно обращение блока FC к данным в DB, вместо DB1.DBX0.1 обращение идет просто DBX0.1, отсюда наклевывается вопрос- откуда блок FC знает в какой DB нужно ему обратится ?
Re: Помогите разобраться с обращением
Есть скриншот?
Re: Помогите разобраться с обращением
до этой строчки есть вызов дб, типа OPN DB1
Re: Помогите разобраться с обращением
в понедельник выложу скрин сейчас нет возможности.
Re: Помогите разобраться с обращением
Network1
L #DB_TH
T LW 30
L "DB12".Line_speed_ref
T LD 36
A #Ena_comp
JC M011
L L#0
T LD 40
JU M013
M011: A #Dir_comp
JC M012
L DB30.DBD 24
L L#10
/D
T LD 40
JU M013
M012: L DB30.DBD 24
L L#10
/D
NEGD
T LD 40
M013: NOP 0
L "DB15".OP_Diam_cable
T LW 44
OPN DB [LW 30]
Network2
L #Drive_E
SLW 3
LAR1
L PID [AR1,P#0.0]
T DBW 8
L PID [AR1,P#4.0]
T DBW 4
L PID [AR1,P#8.0]
T DBW 6
L #BK_E
SLW 3
LAR1
L PIB [AR1,P#0.0]
T DBB 0
L PIB [AR1,P#1.0]
T DBB 1
Network3
A DBX 16.2
AN "M. Start enable drives"
S DBX 38.0
AN DBX 16.2
AN "M. Start enable drives"
R DBX 38.0
X DBX 16.1
X #Dir_SZ
AN "M. Start enable drives"
S DBX 38.1
XN DBX 16.1
X #Dir_SZ
AN "M. Start enable drives"
R DBX 38.1
X DBX 38.1
X #Dir_SZ
= DBX 16.1
L #DB_TH
T LW 30
L "DB12".Line_speed_ref
T LD 36
A #Ena_comp
JC M011
L L#0
T LD 40
JU M013
M011: A #Dir_comp
JC M012
L DB30.DBD 24
L L#10
/D
T LD 40
JU M013
M012: L DB30.DBD 24
L L#10
/D
NEGD
T LD 40
M013: NOP 0
L "DB15".OP_Diam_cable
T LW 44
OPN DB [LW 30]
Network2
L #Drive_E
SLW 3
LAR1
L PID [AR1,P#0.0]
T DBW 8
L PID [AR1,P#4.0]
T DBW 4
L PID [AR1,P#8.0]
T DBW 6
L #BK_E
SLW 3
LAR1
L PIB [AR1,P#0.0]
T DBB 0
L PIB [AR1,P#1.0]
T DBB 1
Network3
A DBX 16.2
AN "M. Start enable drives"
S DBX 38.0
AN DBX 16.2
AN "M. Start enable drives"
R DBX 38.0
X DBX 16.1
X #Dir_SZ
AN "M. Start enable drives"
S DBX 38.1
XN DBX 16.1
X #Dir_SZ
AN "M. Start enable drives"
R DBX 38.1
X DBX 38.1
X #Dir_SZ
= DBX 16.1
Re: Помогите разобраться с обращением
То, о чем говорил ward. Все обращения DBX ниже этой строчки относятся к DB с номером LW 30.Ильшат писал(а): OPN DB [LW 30]
Network2
Re: Помогите разобраться с обращением к DB (Step7)
Точнее - с номером, объявленным на входе #DB_TH, причем можно было в LW30 и не копировать, достаточно было:
Код: Выделить всё
OPN #DB_TH
Re: Помогите разобраться с обращением к DB (Step7)
Значит я правильно понимаю если , #DB_TH в списке блоков DB30? Написав команду opn db[LW30] я обращаюсь к одному и тому же блоку данных? И это сделано лишь с целью сокращения писанины ?
Re: Помогите разобраться с обращением к DB (Step7)
1) #DB_TH может быть в Вашей FC входной переменной типа "Block_DB", тогда достаточно вызоваИльшат писал(а):Значит я правильно понимаю если , #DB_TH в списке блоков DB30?
Код: Выделить всё
OPN #DB_TH
Код: Выделить всё
OPN DB [#DB_TH]
Нет. Вы обращаетесь к блоку данных, номер которого был записан из #DB_TH в первых строках Вашей функции:Ильшат писал(а): Написав команду opn db[LW30] я обращаюсь к одному и тому же блоку данных?
Код: Выделить всё
Network1
L #DB_TH
T LW 30
По видимому хотели сделать универсальную функцию, но, "убили" всю универсальность обращениями к переменным конкретных ДБ, как пример участок:Ильшат писал(а):И это сделано лишь с целью сокращения писанины ?
Код: Выделить всё
L DB30.DBD 24
L L#10
/D
T LD 40