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

Инженерное программное обеспечение

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

Сообщение Ильшат » 22 июн 2013, 20:30

Привет всем ! Недавно ковыряясь в одном из проектов , обнаружил одну неприятную штуку ,а именно обращение блока FC к данным в DB, вместо DB1.DBX0.1 обращение идет просто DBX0.1, отсюда наклевывается вопрос- откуда блок FC знает в какой DB нужно ему обратится ?
Ильшат
Любитель
 
Сообщения: 63
Зарегистрирован: 17 июн 2013, 12:51

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

Сообщение Михайло » 23 июн 2013, 12:17

Есть скриншот?
Михайло
Администратор
 
Сообщения: 3412
Зарегистрирован: 19 сен 2012, 19:16

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

Сообщение ward » 23 июн 2013, 14:08

до этой строчки есть вызов дб, типа OPN DB1
ward
Специалист
 
Сообщения: 411
Зарегистрирован: 12 ноя 2012, 08:44

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

Сообщение Ильшат » 23 июн 2013, 14:35

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

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

Сообщение Ильшат » 24 июн 2013, 17:31

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
Ильшат
Любитель
 
Сообщения: 63
Зарегистрирован: 17 июн 2013, 12:51

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

Сообщение Михайло » 24 июн 2013, 19:17

Ильшат писал(а): OPN DB [LW 30]
Network2

То, о чем говорил ward. Все обращения DBX ниже этой строчки относятся к DB с номером LW 30.
Михайло
Администратор
 
Сообщения: 3412
Зарегистрирован: 19 сен 2012, 19:16

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

Сообщение CHANt » 24 июн 2013, 20:09

Точнее - с номером, объявленным на входе #DB_TH, причем можно было в LW30 и не копировать, достаточно было:
Код: Выделить всё
 OPN   #DB_TH
Аватара пользователя
CHANt
Профессионал
 
Сообщения: 532
Зарегистрирован: 13 окт 2012, 15:24
Откуда: Orenburg

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

Сообщение Ильшат » 24 июн 2013, 20:59

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

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

Сообщение CHANt » 24 июн 2013, 21:17

Ильшат писал(а):Значит я правильно понимаю если , #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. Что думал разработчик при этом, нам неизвестно...
Аватара пользователя
CHANt
Профессионал
 
Сообщения: 532
Зарегистрирован: 13 окт 2012, 15:24
Откуда: Orenburg


Вернуться в Simatic TIA Portal / Step7

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2