PDA

Просмотр полной версии : Непроизвольное изменение значение регистров СП270



Semas
13.03.2013, 12:42
Доброго времени суток всем! Столкнулся с такой проблемой - при изменении состояния одного регистра панели (по нажатию кнопки) изменяются значения в некоторых других регистрах. Например, в регистр 258 вводится уставка температуры (допустим, 25), в регистр 259 - время выполнения операции (допустим, 2). При помощи регистра 256 операция запускается на исполнение. При помощи регистра 260 осуществляется смена экрана панели. Запускаем операцию на исполнение (регистр 256 переходит в единицу). При попытке сменить экран (регистр 260 переходит в единицу), происходит следующее - регистр 256 принимает значение регистра 258, а регистр 258 принимает значение регистра 259. Причем, примерно через секунду-две регистры принимают свои первоначальные значения. И так каждый раз при изменении значения регистра 260. Панель СП270 работает в режиме slave, заняты регистры с PSW 256 по PSW 487. В чем может быть проблема?

Валенок
13.03.2013, 14:24
В коде пользователя

Semas
13.03.2013, 14:34
Т.е. в программе для ПЛК? Дело в том, что даже если ни одной строчки кода не будет, указанная проблема все равно имеет место быть. Или я Вас не так понял:-)

Валенок
13.03.2013, 23:38
Код пользователя включает и панель. Что за операции ? Кто меняет экран если в плк ";" ?

Semas
14.03.2013, 06:50
Происходит следующее - при изменении состояния регистра all_bak(address 314, register input) регистр op_BDV1(address 480, register input) принимает значение регистра time_BDV1(address 482, register input), а регистр time_BDV1(address 482, register input) принимает значение регистра temp_BDV1(address 483, register input). Через небольшое время указанные регистры принимают свое первоначальное значение. И так каждый раз при изменении состояния регистра all_bak(address 314, register input).

В представленном коде программы в CoDeSys регистры vanna_1, vanna_2, vanna_3, vanna_4, all_bak - регистры, связанные с кнопками на панели. При изменении соответствующего регистра (нажатии кнопки панели) я записываю в регистр change_view id номер соответствующего экрана. Адрес регистра change_view в панели - 320 (последний рисунок).

Валенок
14.03.2013, 13:06
Вы всетаки определитесь - есть код в ПЛК или нет.
Панель - слейв.
Временно для панели сделайте окно - имитатор ПЛК.
Вызов окна - общим элементом для всех экранов.
В окне : поле ввода в setscreen и поля ввода для тех регистров которые меняете в ПЛК и то - что нужно посмотреть.
Выкиньте ПЛК. В эмуляции панели (но можно и в онлайне) меняйте что нужно и ищите глюк. Если что - пишите.

PS
1.Рекомендую попробывать просто ELSIF
2.По фотографии мочки левого уха сложно диагностировать плоскостопие.

PSPS
Еще проще. Останавливаем программу. И ручками через конфигурацию пишем/смотрим (она, говорят, все равно работает)