PDA

Просмотр полной версии : Переменные PERSISTENT RETAIN



Edik_Ponomarenko
02.12.2011, 00:22
Всем доброго здравия.
Есть ПЛК 100.

Обявлено
TYPE TTimeUsr :
STRUCT
Hour: SINT;
Minute:SINT;
Second:SINT;
END_STRUCT
END_TYPE

TYPE TPeriod :
STRUCT
enable: BOOL;
DayOfWeek:SINT := 10;
Startt: TTimeUsr ;
Stopt: TTimeUsr ;
END_STRUCT
END_TYPE

TYPE TAPeriod :
ARRAY [1..7] OF TPeriod;
END_TYPE


В глобал
VAR_GLOBAL PERSISTENT RETAIN
FP_BAK : TAPeriod;
END_VAR


Заполняю структуру, перегружаю контроллер, пропадает значение переменной penable, переименовал в enable, теперь не сохраняет во флеше DayOfWeek...

Может обе руки и обе левые ?
Наставьте на путь истинный.

Вопрос в догонку. Можно - ли флеш девайса проверить и какими средствами ?

Edik_Ponomarenko
02.12.2011, 00:45
Ради интереса добавил 4-е параметра BOOL в глобальные переменные
Ошибка такого характера
***INVALID: 16#0A***

Объявлены вот так
VAR_GLOBAL PERSISTENT RETAIN
(* Параметры включения и выключения нагревательного бака *)
FP_BAK : TAPeriod;
ba:BOOL;
bb:BOOL;
bc:BOOL;
bd:BOOL;
END_VAR

Edik_Ponomarenko
02.12.2011, 01:09
Контроллер перешитый

PLCInfo
PLC model MODEL PLC 100
Binary VERSION 2.14.0
Need Target version 2.10
Compiled: 14:31:08 Apr 28 2011
MAC 6A:77:00:00:5B:08
IP 10.0.2.2
GATE 10.0.6.1
MASK 255.255.255.0
PIC upper version is 07
Licence unlimited
No DAC
PIC lower version is 0a


Таргеты


install_target_v.2.10_for_plc100_plc150_plc154_1.e xe

Edik_Ponomarenko
02.12.2011, 01:20
Самое интересное, почему про флешку спрашиваю. Иногда при создании загрузочного проекта, вадает ошибку, что невозможно создать загрузочный проект. :-(

Edik_Ponomarenko
02.12.2011, 02:13
После очередного reset`а, просто горит питание и не по сети, не по DEBUGу недоступен... Сдергиваю со стойки, пробую перешивать.

Edik_Ponomarenko
02.12.2011, 02:27
Не перешивается. В терминале по дебагу просто сыпет символы: "CCCCCCCCC"......

Edik_Ponomarenko
02.12.2011, 02:52
Я похоже счасливчик....Контроллер наверное в сервис.... Перепрошить не удалось. Не мака сниферами невидать, ни пакетов от него, на ресет не реагирует.... грустно... иду спать.... Господа Админы, если есть коментарии или советы, пожалуйста отзовитесь...
Всем спокойной ночи, сил уже сидеть просто нет...

Алексей Дмитриев
02.12.2011, 14:15
В глобал
VAR_GLOBAL PERSISTENT RETAIN
FP_BAK : TAPeriod;
END_VAR
Непонятно зачем комбинированное объявление? Если переменная RETAIN, то она сохранится во всех случаях, даже при отключении питания. Если Persistent, то только при сбросе и рестарте программы. Каша масляная с маслом получается. Я так понимаю, что что-то с документацией в CoDeSys не в порядке. Подумайте над этим.:cool:

Александр Приходько
02.12.2011, 16:00
Переменная объявленная как PERSISTENT RETAIN не спасает вас от кнопки сброс!!!
В справке Codesys все описано доступным языком.

gtfox
21.11.2012, 20:43
1)Почему при добавлении большого количества переменных в persistent увеличивается размер кода программы в 4 раза (после компиляции)?
Может для их размещения используется память самой программы во флеше...
контроллер не овен, поэтому ответ: "потому что другой компилятор по другому компилирует" меня устроит, если дело только в компиляторе, а не в кодесис.
задавал вопрос на 3s (http://forum-ru.3s-software.com/viewtopic.php?f=1&t=1067&p=3403#p3403) но ответа пока нет

2) Если в ФБ я использую Конфигурационные переменные loco AT%Q*: BOOL;, а в VAR_CONFIG
пишу RETAIN PERSISTENT, то в энергонезависимую память помещается весь ФБ или только конкретные переменные?


и еще задолбала "ошибка исполнения #224 (a)" появляется после компиляции, может кто знает что это такое?