Есть ПЛК WAGO 750-842, написанная программа (нижний уровень) на CoDeSys и верхний уровень на WinCC, OPC Server - CoDeSys.OPC.02.
В программе используется ряд переменных (объявлены в VAR_GLOBAL RETAIN), которые необходимо отображать на верхнем уровне (Эти переменные не привязаны к входным/выходным модлулям)
переменные объявляю так:
var1 AT %MX0.0 : BOOL;
var2 AT %MX0.1 : BOOL;
var3 AT %MX0.2 : BOOL;
var4 AT %MD0 : DWORD;
var5 AT %MD1 : DWORD;
var6 AT %MD2 : DWORD;
Проблема в том, что иногда (после рестарта ПЛК) в данных переменных появляються некоторые значения... Может кто знает как устроена память, в которой храняться эти переменные и как эту память стирать?
Заранее спасибо.
мне кажется это потому что у вас переменная var4 AT %MD0 : DWORD; совпадает с первыми тремя по адресному пространству - нулевому слову памяти. Сделайте проверку на перекрывающиеся области памяти в Кодесис Project\Check\Overlapping Memoriy Areas, и Вы увидете что эти области у Вас перекрываются. тем более раз у вас они объявлены как РЕтайн, в них остаются сохраненные данные, которые были перед отключением.
как память устроена - написано в руководстве по КОдесис, скачайте его на сайте Пролог, если у вас нет, кстати на стр. 10-33, очень хорошо показано как она распределена.
надо внимательно объявлять адреса, не забывать что если у вас переменная будет объявлена переменная с адресом AT %MW1, то она попадет в область переменной var4 AT %MD0 : DWORD; так как здесь двойное слово и она содержит в себе адреса слов MW0 MW1, или байтов MB0 MB1 MB2 MB3, или битов в диапазоне MX0.0 - MX3.15
так вот
Сделал Project\Check\Overlapping Memoriy Areas. Исправил адресацию, теперь ничего не перекрывается в области памяти, но значения в переменных всеравно остались. А как стереть энергонезависимую память?
Первоначально опубликовано ivanset
А как стереть энергонезависимую память?
“Online” “Reset (cold)”
Igor Petrov
Сделал reset (cold), но несколько переменных всеравно не обнулились. С чем это может быть связано и как это исправить?
.... а также при попытке изменить значения в данных переменных (Write values Ctrl+f7) во многих переменных появляються совсем не те значения, которые я ввожу. И еще: некоторые переменные показывают *** INVALID: 16#0F ***. Объясните плиз в чем тут дело. В контроллере или в Кодесис?
Инвалиды у меня тоже были, появлялись они у меня в режиме эмуляции при уже установленном Таргет на ПЛК, а когда я работал реально с ПЛК то этой проблемы не было
Ну с Инвалидами ладно, - как-нить справимся. Но что делать с тем, что при попытке изменить значения в переменных появляються совсем не те значения, которые я ввожу? Вощем дело в адресации %MD0...%MD100, потому что когда я убераю эту адресацию все работоет отлично.
... проверку на перекрывающиеся области памяти сделал - ничего не перекрывается.
Вообще область памяти M может использоваться для размещения диагностических данных модулей ввода-вывода. Т.е. стоит глубже капнуть документацию на данный контроллер, возможно эти адреса просто заняты.
Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме