Запись в энкодер Preset Value поредством функции WRREC(SFB53)

Промышленные Логические Контроллеры SIMATIC S7-200/300/400
valiko_85
Posts: 10
Joined: Tue Mar 17, 2009 12:30 pm
Location: Russia, Moscow

Запись в энкодер Preset Value поредством функции WRREC(SFB53)

Post by valiko_85 »

Здравствуйте.

Исходные данные:
1. Проект в TIA Portal v15
2. CPU 1512SP
3. Абсолютный энкодер Baumer PMG10 - подключен по Profinet.

Что работает:
1. Синхронный обмен обмен CPU с энкодером в изохронном(IRT) режиме через функции DPRD_DAT и DPWR_DAT и телеграмму 81
2. Чтение параметров с энкодера в асинхронный режиме функцией RDREC(SFB52).

Что не работает/ проблема: Запись Preset Value(параметр 65000) в энкодер посредством асинхронной функции WRREC(SFB53). При попытке записи функция выдает ошибку и в status пишет 16#DF80_B600 где B6 означает "DP slave or module denies access". Но нигде нет на этот энкодер защиты от записи параметров - ни в настройках, ни физического переключателя.
Может я не верно формирую телеграмму?
Image
В параметр Index функции WRREC прописываю 65000- верно ли это?
Image
Ссылка на мануал энкодера: https://www.baumer.com/medias/__secure_ ... 1009532958
CoMod
Site Admin
Posts: 3992
Joined: Thu Feb 16, 2006 3:25 pm
Location: Russia

Re: Запись в энкодер Preset Value поредством функции WRREC(SFB53)

Post by CoMod »

5.6.1.
Preset in standard telegrams
Bit 31 in the 32bit output data word is the preset bit. The lower bits (bit 30…0) hold the right-aligned position
value, which is adopted by the encoder in the preset operation.
The Preset-Bit must be kept set for at least one full I/O bus cycle to be recognized by the encoder.
A timer control of e.g. 10ms or more will do as well.

The Preset Bit may stay active for an unlimited period of time
since only a change from „0“ to „1“ will be evaluated. We recommend however to clear the bit after
completion in order to provide the original status for a subsequent preset operation.
5.6.2.
Preset in PROFIdrive telegrams 81 - 83
A preset operation in control word STW2 requires the PLC having set bit “CP” (Control by PLC). Usually, the
PLC should have this bit set from the beginning when it establishes the Application Relationship (AR).
The „REL“ bit in control word G1_STW1 defines whether an absolute or relative preset operation will be
performed. In a relative preset operation, the current position value will be shifted by the signed preset value.
The „PR“ bit in G1_STW1 is the preset bit. Upon changing from “0” to “1”, it triggers the preset operation.
Once successfully completed, bit “PA” (preset acknowledge) is set in status word G1_ZSW1. The PA bit
remains active as long as the preset bit remains set by PLC.
The preset value is retrieved from the value stored in parameter 65000 (see chapter 7.4.18 „Parameter
65000: Preset Value“. In a relative preset operation, the 32bit value is interpreted as a complement on 2, i.e.
„-1“ will be saved as „0xFFFFFFFF“.
я пользуюсь 5.6.1. Preset in standard telegrams

Code: Select all

прямая запись в Порт pQD двойного слова позиции с взведённым старшим битом 31
ждёмс один цикл
затем чтение из порта pID двойного слова позиции с ожиданием когда старший бит 31 обнулится = энкодер установил Заданный "0"
The Preset-Bit must be kept set for at least one full I/O bus cycle to be recognized by the encoder.
A timer control of e.g. 10ms or more will do as well.

Предустановленный бит должен быть установлен как минимум на один полный цикл шины ввода / вывода, чтобы кодировщик распознал его.
Таймер управления, например, Также подойдет 10 мс или более.


аналогично читаю позицию напрямую их порта

Хотя флэш-память обеспечивает ресурс +100 000 циклов записи, частые операции предустановки (перезаписи флэш),
запускаемые программным обеспечением или событиями, могут потреблять даже эту ёмкость ресурса,
которую необходимо учитывать при конфигурации программного обеспечения ПЛК.

100 000 циклов записи
(boom) в часу 3600 секунд... в сутках 86400 секунд
(not_allow)
поэтому я "обнуляю" "0" в памяти программы
valiko_85
Posts: 10
Joined: Tue Mar 17, 2009 12:30 pm
Location: Russia, Moscow

Re: Запись в энкодер Preset Value поредством функции WRREC(SFB53)

Post by valiko_85 »

я пользуюсь 5.6.1. Preset in standard telegrams
Да, со стандартной телеграммой (Standard-Telegram 100: 32 Bit EA) я тоже пробовал - работает. На данном энкодере "Standard-Telegram 100" доступна, как и 81-83 телеграммы. Но есть ещё 2 энкодера на объекте в Индии, у которых нет телеграмм 100-102, им доступны только 81-83 телеграммы. Поэтому пытаюсь отладить запись Preset Value посредством WRREC в параметр 65000 - на данном энкодере. Кстати, затем из параметра 65000, путём установки 12 бита слова G1_STW телеграммы 81, перезаписывается текущее значение/позиция(G1_XIST1) энкодера. А так как в параметре 65000 сейчас 0, то и значение текущей позиции энкодера просто обнуляется. :?
100 000 циклов записи
в часу 3600 секунд... в сутках 86400 секунд
Если писать в оперативную память энкодера(не используя параметр 971) - то флэш-память вообще не будет задействована. Но, даже если записывать во флэш-память - предполагалась корректировка раз в месяц и то по надобности - то тоже не страшно так как ресурса флеш-памяти хватит на весь жизненный цикл энкодера.
поэтому я "обнуляю" "0" в памяти программы
Да, такой вариант тоже рассматривали - пока остановились на нём.