Помогите разобраться с обращением к DB (Step7)

Инженерное программное обеспечение
Ответить
Ильшат
Любитель
Сообщения: 63
Зарегистрирован: 17 июн 2013, 12:51

Помогите разобраться с обращением к DB (Step7)

Сообщение Ильшат »

Привет всем ! Недавно ковыряясь в одном из проектов , обнаружил одну неприятную штуку ,а именно обращение блока FC к данным в DB, вместо DB1.DBX0.1 обращение идет просто DBX0.1, отсюда наклевывается вопрос- откуда блок FC знает в какой DB нужно ему обратится ?

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Помогите разобраться с обращением

Сообщение Михайло »

Есть скриншот?

ward
Специалист
Сообщения: 415
Зарегистрирован: 12 ноя 2012, 08:44

Re: Помогите разобраться с обращением

Сообщение ward »

до этой строчки есть вызов дб, типа OPN DB1

Ильшат
Любитель
Сообщения: 63
Зарегистрирован: 17 июн 2013, 12:51

Re: Помогите разобраться с обращением

Сообщение Ильшат »

в понедельник выложу скрин сейчас нет возможности.

Ильшат
Любитель
Сообщения: 63
Зарегистрирован: 17 июн 2013, 12:51

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

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Помогите разобраться с обращением

Сообщение Михайло »

Ильшат писал(а): OPN DB [LW 30]
Network2
То, о чем говорил ward. Все обращения DBX ниже этой строчки относятся к DB с номером LW 30.

Аватара пользователя
CHANt
Профессионал
Сообщения: 565
Зарегистрирован: 13 окт 2012, 15:24

Re: Помогите разобраться с обращением к DB (Step7)

Сообщение CHANt »

Точнее - с номером, объявленным на входе #DB_TH, причем можно было в LW30 и не копировать, достаточно было:

Код: Выделить всё

 OPN   #DB_TH

Ильшат
Любитель
Сообщения: 63
Зарегистрирован: 17 июн 2013, 12:51

Re: Помогите разобраться с обращением к DB (Step7)

Сообщение Ильшат »

Значит я правильно понимаю если , #DB_TH в списке блоков DB30? Написав команду opn db[LW30] я обращаюсь к одному и тому же блоку данных? И это сделано лишь с целью сокращения писанины ?

Аватара пользователя
CHANt
Профессионал
Сообщения: 565
Зарегистрирован: 13 окт 2012, 15:24

Re: Помогите разобраться с обращением к DB (Step7)

Сообщение CHANt »

Ильшат писал(а):Значит я правильно понимаю если , #DB_TH в списке блоков DB30?
1) #DB_TH может быть в Вашей FC входной переменной типа "Block_DB", тогда достаточно вызова

Код: Выделить всё

OPN   #DB_TH
2) #DB_TH может быть просто числом, например типа Integer, тогда вызов будет:

Код: Выделить всё

 OPN   DB [#DB_TH]
Ильшат писал(а): Написав команду opn db[LW30] я обращаюсь к одному и тому же блоку данных?
Нет. Вы обращаетесь к блоку данных, номер которого был записан из #DB_TH в первых строках Вашей функции:

Код: Выделить всё

Network1
L #DB_TH
T LW 30
Ильшат писал(а):И это сделано лишь с целью сокращения писанины ?
По видимому хотели сделать универсальную функцию, но, "убили" всю универсальность обращениями к переменным конкретных ДБ, как пример участок:

Код: Выделить всё

L DB30.DBD 24
L L#10
/D
T LD 40
Здесь вызвана переменная 4 байта по адресу DBD24 из конкретного DB30. Что думал разработчик при этом, нам неизвестно...

Ответить