Народ! Почему не получается в глобальном DB в колонке Initial value ячейке с типом DWORD присвоить значение например P#I32.4?
Т.е. мне нужно, чтобы в данных 4-х байтах стартовое значение было
1000 0001 0000 0000 0000 0001 0000 0100.
Хранение межзонного указателя адреса в глобальном DB
-
- Posts: 83
- Joined: Mon Aug 13, 2012 2:23 pm
-
- Site Admin
- Posts: 3992
- Joined: Thu Feb 16, 2006 3:25 pm
- Location: Russia
Re: Хранение межзонного указателя адреса в глобальном DB
Степ7 пишет - тип данных указатель p#123.4 имеет длину 48 бит и его нельзя воткнуть в этом месте для переменной типа dword
https://support.industry.siemens.com/cs ... c&lc=ru-RU
1)
можно хранить 32х8+4
и в проге:
2)
можно поменять тип на поинтер в функции
и в проге:
а в вызове функции
на in :
https://support.industry.siemens.com/cs ... c&lc=ru-RU
1)
можно хранить 32х8+4
и в проге:
Code: Select all
A I[ch_av1.in]
можно поменять тип на поинтер в функции
и в проге:
Code: Select all
L P##ch_av1.in
LAR1
на in :
Code: Select all
P#I 32.4
-
- Posts: 83
- Joined: Mon Aug 13, 2012 2:23 pm
Re: Хранение межзонного указателя адреса в глобальном DB
У меня другая информация.
Внутризонный/межзонный указатель вида P#x.y/P#Zx.y имеют именно 32-битный формат.
48-бит только для указателя на DB (6 байт, дополнительно 2 байта для номера блока данных).
Например такой P#DB 10.DBX 20.5 . Иначе как бы работали команды в STL типа LAR1 P#M10.1 c 32-битным адресным регистром?
Может быть этот трюк с Initial valur не проходит, т.к. данный указатель можно использовать только в коде STL?
Мне нужно в ячейках DB хранить в т.ч. адреса, с которыми в последствии будет работать циклически вызываемая функция.
Не вызывать же отдельный ОВ, который при старте запишет в DB нужные значения?
Есть еще идеи, как это сделать?
Внутризонный/межзонный указатель вида P#x.y/P#Zx.y имеют именно 32-битный формат.
48-бит только для указателя на DB (6 байт, дополнительно 2 байта для номера блока данных).
Например такой P#DB 10.DBX 20.5 . Иначе как бы работали команды в STL типа LAR1 P#M10.1 c 32-битным адресным регистром?
Может быть этот трюк с Initial valur не проходит, т.к. данный указатель можно использовать только в коде STL?
Мне нужно в ячейках DB хранить в т.ч. адреса, с которыми в последствии будет работать циклически вызываемая функция.
Не вызывать же отдельный ОВ, который при старте запишет в DB нужные значения?
Есть еще идеи, как это сделать?
-
- Site Admin
- Posts: 3992
- Joined: Thu Feb 16, 2006 3:25 pm
- Location: Russia
-
- Posts: 374
- Joined: Wed Oct 13, 2010 8:44 am
- Location: Russian Federation
Re: Хранение межзонного указателя адреса в глобальном DB
А что мешает вместо DWORD использовать тип POINTER, что логично?
-
- Site Admin
- Posts: 1387
- Joined: Sat Aug 13, 2005 6:15 am
Re: Хранение межзонного указателя адреса в глобальном DB
DB такого не знаетRex2701 wrote:использовать тип POINTER
-
- Posts: 374
- Joined: Wed Oct 13, 2010 8:44 am
- Location: Russian Federation
Re: Хранение межзонного указателя адреса в глобальном DB
Странно. Я знаю, что можно. Проекты, где это используются - в наличии.
-
- Posts: 83
- Joined: Mon Aug 13, 2012 2:23 pm
Re: Хранение межзонного указателя адреса в глобальном DB
Тип POINTER для блоков FC и FB. Пока выкрутился следующим образом: в DB храню отдельно адрес байта и бита в INT. В основном коде в STL в адресный регистр пишу байт, потом "шифт" влево на три разряда, плюсую биты - получаю 32-битный адрес ("внутризонный" формат). Не совсем красиво. Видимо так и останется. Другого решения не вижу для сохранения возможности в DB легко править адреса входов/выходов.Rex2701 wrote:Странно. Я знаю, что можно. Проекты, где это используются - в наличии.
-
- Posts: 83
- Joined: Mon Aug 13, 2012 2:23 pm
-
- Posts: 193
- Joined: Fri Feb 24, 2012 8:28 am
Re: Хранение межзонного указателя адреса в глобальном DB
http://samsebeplc.ru/Doc/Siemens/STEP7/ ... LSCL_r.pdfНарод! Что не так с вызовом функции? Почему не прокатывает вся косвенная адрессация?
26.3.1 Доступ к параметрам в функциях
-
- Posts: 83
- Joined: Mon Aug 13, 2012 2:23 pm
Re: Хранение межзонного указателя адреса в глобальном DB
Как раз сейчас читаю именно этот раздел (стр.19-13). Получается, что использовать косвенную адресацию при задании фактических параметров вызываемому блоку нельзя. Буду использовать временные переменные. Спасибо.
-
- Posts: 8
- Joined: Sat Sep 04, 2010 7:06 pm
Re: Хранение межзонного указателя адреса в глобальном DB
Хранить можно, просто обозначенный Вами тип переменной DWORD не предполагает указанной орфографии "IM.N"... Нужно писать в HEX, например.
Кстати указание "I" - это уже внутризонная, а не межзонная адресация.
Предполагаю, что "закладочку" готовите...
Кстати указание "I" - это уже внутризонная, а не межзонная адресация.
Предполагаю, что "закладочку" готовите...