Просмотр полной версии : Глобальная переменная
Newcomer
10.11.2017, 19:49
Добрый вечер
Столкнулся с такой странной ситуацией. В программе на ST объявлена глобальная переменная типа WORD. По умолчанию ее значение равно 0.
При старте программы этой глобальной переменной присваивается другое значение. В отладчике видно что переменная поменяла свое значение, однако оборудование работает так будто значение этой переменной равно 0.
Newcomer
11.11.2017, 15:16
Ну так это обычное дело. Просто нужно исправить sin на exp в 17й строке.
Ничего не понял, поясните, пожалуйста, поподробней.
Ничего не понял, поясните, пожалуйста, поподробней.
К ясновидящим в другой форум. Ну а если серьезно, то вполне вероятно, что в глобальной переменной и локальной одинаковые имена, возможно. Если нет, проект в студию, тогда и на помощь можно рассчитывать.
Newcomer
11.11.2017, 18:13
Ну а если серьезно, то вполне вероятно, что в глобальной переменной и локальной одинаковые имена, возможно.
Я это сразу проверил. Нет такого. Я с подобным за 10 лет работы с CoDeSys первый раз столкнулся. Мистика какая-то. Может у человека, который пытает программу на объекте что-то с компьютером не то, вирус или еще что-то ?
Newcomer
11.11.2017, 18:27
Ну у себя, в 17й строке PLC_PRG, ошиблись. Не то написали.
Что именно не то ?
У меня в глобальных переменных объявлено A:WORD; K:WORD := 16;, а в PLC_PRG сделано присвоение A := 200 * K;
А должно быть равно 3200, а по факту 0.
Знакомая ситуация у меня тоже не проканало a: ton := (pt:=t#1s) , пришлось в теле программы время забивать при каждом вызове.
Валенок! Уже приводил и это обсуждали. Не надо по пустякам тролить.
Валенок! Уже приводил и это обсуждали. Не надо по пустякам тролить.
что Вы там привели, решение которым кто то с Вами поделился, нет, сами сделали вывод, что добавив аргумент всё заработало, а по факту не грамотно составлена программа была с вызовом таймеров
Newcomer
12.11.2017, 12:36
Передайте этому человеку что он несёт пургу.
1.Забыл сделать старт
2.Косяк в коде
3.Кривое подключение.
Все это мимо.
Если в глобальных переменных объявлено А:WORD := 3200;, то все работает как надо.
Если в глобальных переменных объявлено A:WORD; K:WORD := 16;, а в PLC_PRG сделано единственное присвоение для A
A := 200 * K;, то не работает.
Оператор A := 200 * K; почему-то игнорируется.
Что такое кривое подключение ?
А может исходный код программы не верно компилироваться из-за заражения компьютера вирусом ?
Все это мимо.
Если в глобальных переменных объявлено А:WORD := 3200;, то все работает как надо.
Если в глобальных переменных объявлено A:WORD; K:WORD := 16;, а в PLC_PRG сделано единственное присвоение для A
A := 200 * K;, то не работает.
Оператор A := 200 * K; почему-то игнорируется.
Что такое кривое подключение ?
А может исходный код программы не верно компилироваться из-за заражения компьютера вирусом ?а в пустом проекте тоже не работает?
Newcomer
12.11.2017, 14:01
У меня в симуляторе рабочий проект правильно работает. Что творится с компом и ПЛК на объекте не понятно. Я думаю какая-то проблема с тем компом.
комп не причем, а вот заливка прошивки без выполнения завершающих мероприятий может быть причем
Newcomer
13.11.2017, 12:16
комп не причем, а вот заливка прошивки без выполнения завершающих мероприятий может быть причем
Прошивку никто не записывал. Возможно прошивка слегка слетела и надо перепрошить ПЛК ?
Newcomer
13.11.2017, 13:04
Лично мне понятно - чел с той стороны не понятно что и как делает.
Работа длится довольно продолжительное время. Человек заливал программу в ПЛК, я думаю, больше сотни раз и все было нормально. Проблема возникла на днях, ранее такого не было.
Newcomer
13.11.2017, 14:30
Глобальных переменных в проекте много, все они переопределяются в PLC_PRG и все с ними нормально, а вот с одной глобальной переменной вдруг случился такой казус.
Newcomer
13.11.2017, 17:32
Зачем заливать больше сотни раз если все нормально ?
Заливать будем пока не отладим программу полностью.
Какой ? Покажите.
Показывал выше.
Newcomer
14.11.2017, 12:08
Т.е Вы жалуетесь на переменную в неотлаженной программе ? ))
Валенок, сам то понял что спросил ?
Осинский Алексей
15.11.2017, 09:45
Глобальных переменных в проекте много, все они переопределяются в PLC_PRG и все с ними нормально, а вот с одной глобальной переменной вдруг случился такой казус.
Пожалуйста, пришлите Ваш проект с подробным описанием проблемы и шагов для ее воспроизведения (можно в личку).
Гарчев Евгений
15.11.2017, 18:41
На предыдущей странице поднимался вопрос: "может ли код не правильно компилироваться?" - Может!!! И вирусы тут не при чем ... Для корректной компиляции кода после внесения каких-либо изменений необходимо перед компиляцией делать "очистку проекта" (т.е. подчищать хвосты от предыдущих компиляций).
Newcomer
15.11.2017, 20:44
На предыдущей странице поднимался вопрос: "может ли код не правильно компилироваться?" - Может!!! И вирусы тут не при чем ... Для корректной компиляции кода после внесения каких-либо изменений необходимо перед компиляцией делать "очистку проекта" (т.е. подчищать хвосты от предыдущих компиляций).
Надо Clean all сделать перед компиляцией проекта ?
Newcomer
15.11.2017, 20:49
Вы уже 3-й кто говорит про это. Автор упорно твердит про комп/вирусы..
А Валенок все свои предыдущие посты убрал. Интересно зачем ?
Newcomer
15.11.2017, 21:51
На Ваш вопрос "что такое кривое подключение" я отвечал.
А посты убрал за ненадобностью раз не пользуетесь. Ну и у Овена какие-то проблемы с памятью, помогаю Осинскому освободить место.
Про кривое подключение разъяснения не последовало. А места на форуме всем хватит, тут беспокоится не надо.
Гарчев Евгений
16.11.2017, 13:19
Надо Clean all сделать перед компиляцией проекта ?
Да, необходимо делать "Clean all" перед каждой компиляцией и загрузкой измененного проекта в ПЛК. Особенно, если изменения касались областей объявления переменных.
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot