Хранение межзонного указателя адреса в глобальном DB

Промышленные Логические Контроллеры SIMATIC S7-200/300/400
volotovskyd
Posts: 83
Joined: Mon Aug 13, 2012 2:23 pm

Хранение межзонного указателя адреса в глобальном DB

Post by volotovskyd »

Народ! Почему не получается в глобальном DB в колонке Initial value ячейке с типом DWORD присвоить значение например P#I32.4?
Т.е. мне нужно, чтобы в данных 4-х байтах стартовое значение было
1000 0001 0000 0000 0000 0001 0000 0100.

Image
CoMod
Site Admin
Posts: 3992
Joined: Thu Feb 16, 2006 3:25 pm
Location: Russia

Re: Хранение межзонного указателя адреса в глобальном DB

Post by CoMod »

Степ7 пишет - тип данных указатель p#123.4 имеет длину 48 бит и его нельзя воткнуть в этом месте для переменной типа dword
https://support.industry.siemens.com/cs ... c&lc=ru-RU

1)
можно хранить 32х8+4
и в проге:

Code: Select all

A I[ch_av1.in]
2)
можно поменять тип на поинтер в функции
и в проге:

Code: Select all

      L     P##ch_av1.in
      LAR1
а в вызове функции
на in :

Code: Select all

P#I 32.4
volotovskyd
Posts: 83
Joined: Mon Aug 13, 2012 2:23 pm

Re: Хранение межзонного указателя адреса в глобальном DB

Post by volotovskyd »

У меня другая информация.
Внутризонный/межзонный указатель вида 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 нужные значения?
Есть еще идеи, как это сделать?
CoMod
Site Admin
Posts: 3992
Joined: Thu Feb 16, 2006 3:25 pm
Location: Russia

Re: Хранение межзонного указателя адреса в глобальном DB

Post by CoMod »

volotovskyd wrote:У меня другая информация...
по Ф1 выдаёт такое
Image
Rex2701
Posts: 374
Joined: Wed Oct 13, 2010 8:44 am
Location: Russian Federation

Re: Хранение межзонного указателя адреса в глобальном DB

Post by Rex2701 »

А что мешает вместо DWORD использовать тип POINTER, что логично?
sania
Site Admin
Posts: 1387
Joined: Sat Aug 13, 2005 6:15 am

Re: Хранение межзонного указателя адреса в глобальном DB

Post by sania »

Rex2701 wrote:использовать тип POINTER
DB такого не знает :(
Rex2701
Posts: 374
Joined: Wed Oct 13, 2010 8:44 am
Location: Russian Federation

Re: Хранение межзонного указателя адреса в глобальном DB

Post by Rex2701 »

Странно. Я знаю, что можно. Проекты, где это используются - в наличии.
volotovskyd
Posts: 83
Joined: Mon Aug 13, 2012 2:23 pm

Re: Хранение межзонного указателя адреса в глобальном DB

Post by volotovskyd »

Rex2701 wrote:Странно. Я знаю, что можно. Проекты, где это используются - в наличии.
Тип POINTER для блоков FC и FB. Пока выкрутился следующим образом: в DB храню отдельно адрес байта и бита в INT. В основном коде в STL в адресный регистр пишу байт, потом "шифт" влево на три разряда, плюсую биты - получаю 32-битный адрес ("внутризонный" формат). Не совсем красиво. Видимо так и останется. Другого решения не вижу для сохранения возможности в DB легко править адреса входов/выходов.
volotovskyd
Posts: 83
Joined: Mon Aug 13, 2012 2:23 pm

Re: Хранение межзонного указателя адреса в глобальном DB

Post by volotovskyd »

Народ! Что не так с вызовом функции? Почему не прокатывает вся косвенная адрессация?
Image
Вот структура DB1
Image
Usver
Posts: 193
Joined: Fri Feb 24, 2012 8:28 am

Re: Хранение межзонного указателя адреса в глобальном DB

Post by Usver »

Народ! Что не так с вызовом функции? Почему не прокатывает вся косвенная адрессация?
http://samsebeplc.ru/Doc/Siemens/STEP7/ ... LSCL_r.pdf
26.3.1 Доступ к параметрам в функциях
volotovskyd
Posts: 83
Joined: Mon Aug 13, 2012 2:23 pm

Re: Хранение межзонного указателя адреса в глобальном DB

Post by volotovskyd »

:) Как раз сейчас читаю именно этот раздел (стр.19-13). Получается, что использовать косвенную адресацию при задании фактических параметров вызываемому блоку нельзя. Буду использовать временные переменные. Спасибо.
Protiven
Posts: 8
Joined: Sat Sep 04, 2010 7:06 pm

Re: Хранение межзонного указателя адреса в глобальном DB

Post by Protiven »

Хранить можно, просто обозначенный Вами тип переменной DWORD не предполагает указанной орфографии "IM.N"... Нужно писать в HEX, например.
Кстати указание "I" - это уже внутризонная, а не межзонная адресация.
Предполагаю, что "закладочку" готовите...