PDA

Просмотр полной версии : Инициализация сетевых переменных



dzukp
16.07.2019, 16:22
Планирую в энергонезависимой памяти хранить настройки с возможностью менять их по Modbus. Создал переменные-настройки. Создал сетевые переменные. Теперь необходимо при запуске скопировать значения из энергонезависимых переменных в сетевые. А затем копировать из сетевых в энергонезависимые.

Сделал следующим образом:
43650

Расчитывал, что сетевым переменным сначала присвоится значение энергонезависимых переменных, а затем "Инициализация" станет равна 1 и больше сетевым переменным значения присваиваться не будут

Работает не так как ожидалось. Переменная "Инициализация" сразу равна 1. Почему так и как это переделать? Неэнергонезависимая переменная может иметь значение по умолчанию?

Василий Кашуба
16.07.2019, 18:55
Планирую в энергонезависимой памяти хранить настройки с возможностью менять их по Modbus. Создал переменные-настройки. Создал сетевые переменные. Теперь необходимо при запуске скопировать значения из энергонезависимых переменных в сетевые. А затем копировать из сетевых в энергонезависимые.

Сделал следующим образом:
43650

Расчитывал, что сетевым переменным сначала присвоится значение энергонезависимых переменных, а затем "Инициализация" станет равна 1 и больше сетевым переменным значения присваиваться не будут

Работает не так как ожидалось. Переменная "Инициализация" сразу равна 1. Почему так и как это переделать? Неэнергонезависимая переменная может иметь значение по умолчанию?
Вставьте между константой "1" и "Инициализацией", таймер TON с временем 0.1 сек.

Сергей0308
16.07.2019, 19:34
Можно линию задержки на цикл и на выход добавить блок выходной энергонезависимой переменной! Иначе при каждом включении будет значение по умолчанию внутренней переменной, а не только при первом включении, как требуется для инициализации!

43653

bayk
16.07.2019, 22:24
Сергей0308 Извиняюсь. но переспрошу тут, поскольку тема вполне соответствует. ты предложил варианты с изменением по сети и локально (https://www.owen.ru/forum/showthread.php?t=9398&p=309914&viewfull=1#post309914), а как мне правильно передать обратно в сеть текущее состояние переменной, если оно изменилось локально? неужели просто выход локальной переменной соединить со входом сетевой?
и еще для варианта выбора bool можно ли поправить макрос так, чтобы он не "желтил" я попробывал в хамскую заменить желтые линии на линии задержки, но естественно это не заработало и свалилось в циклическую перезапись...

Сергей0308
17.07.2019, 08:26
Сергей0308 Извиняюсь. но переспрошу тут, поскольку тема вполне соответствует. ты предложил варианты с изменением по сети и локально (https://www.owen.ru/forum/showthread.php?t=9398&p=309914&viewfull=1#post309914), а как мне правильно передать обратно в сеть текущее состояние переменной, если оно изменилось локально? неужели просто выход локальной переменной соединить со входом сетевой?
и еще для варианта выбора bool можно ли поправить макрос так, чтобы он не "желтил" я попробывал в хамскую заменить желтые линии на линии задержки, но естественно это не заработало и свалилось в циклическую перезапись...

Поправил макрос в проекте, наверно лучше было попросить автора, так сказать "виновника торжества", кстати он недавно заходил на форум, Василий это сразу заметил, надеюсь он не обидится, что его макрос поправил! Я так и не понял в чём трудность, заменить жёлтые линии связи на задержку на цикл! С сетевыми переменными Вы правильно понимаете, в смысле передачи туда данных, но есть свои нюансы в виде передачи по изменению и по команде(булевой переменной)!

bayk
19.07.2019, 21:20
Сергей0308 я попробовал ваш измененный вариант для битовой переменной, но он зацикливается при попытке изменить переменную.
приложил дооснащенный тестовыми переменными вариант, может это я чего-то не понимаю?

Сергей0308
19.07.2019, 23:58
Сергей0308 я попробовал ваш измененный вариант для битовой переменной, но он зацикливается при попытке изменить переменную.
приложил дооснащенный тестовыми переменными вариант, может это я чего-то не понимаю?

Не понятно, что Вы там соорудили, просто напомню для чего это создавалось: для автоматически переключаемого мультиплексора и выбора входа, который изменялся последним, можно например и так сделать(я над этим не думал, голову не заморачивал):

43677

43678

Я кстати(или не кстати) предпочитаю разово по изменению присваивать значения входных переменных выходной и отпускать последнюю в свободное плавание(Вы наверно такое хотите?)! В предложенном варианте это невозможно, всегда один из входов "соединён" с выходом!

Как-то так, применительно к целочисленным переменным:


43679

Или так, для булевых переменных:

43680

43681

bayk
20.07.2019, 01:54
у меня стоит следующая задача. по тяжелому стечению обстоятельств у меня нет возможности использовать панель мастером. в итоге приходится весь обмен с панелью организовывать на стороне контроллера. кроме этого я не могу хранить энергонезависимые переменные только в панели, на случай, если панель выйдет из строя, чтобы можно было продолжать работу.
еще я хочу иметь возможность изменять переменные как внутри ПЛК через среду отладки, чтобы при их изменении они вносились в панель, а если их меняли з панели, то они переносились в контроллер.
для пары булевых переменных ситуация немного другая: для них есть возможность активировать их через панель и через определенную последовательность операций с помощью переключателей, которые заходят на дискретные входы контроллера. при этом после одного технологического цикла эти переменные должны сбрасываться, соответственно эта переменная на экране ИПП тоже должна дезактивироваться для ее повторной инициализации, если это потребуется. я уже оставляю за кадром, что автоматический обмен ПЛК с панелью идет чтением из одного регистра, а записью в другой (в ПЛК)

Сергей0308
20.07.2019, 02:14
у меня стоит следующая задача. по тяжелому стечению обстоятельств у меня нет возможности использовать панель мастером. в итоге приходится весь обмен с панелью организовывать на стороне контроллера. кроме этого я не могу хранить энергонезависимые переменные только в панели, на случай, если панель выйдет из строя, чтобы можно было продолжать работу.
еще я хочу иметь возможность изменять переменные как внутри ПЛК через среду отладки, чтобы при их изменении они вносились в панель, а если их меняли з панели, то они переносились в контроллер.
для пары булевых переменных ситуация немного другая: для них есть возможность активировать их через панель и через определенную последовательность операций с помощью переключателей, которые заходят на дискретные входы контроллера. при этом после одного технологического цикла эти переменные должны сбрасываться, соответственно эта переменная на экране ИПП тоже должна дезактивироваться для ее повторной инициализации, если это потребуется. я уже оставляю за кадром, что автоматический обмен ПЛК с панелью идет чтением из одного регистра, а записью в другой (в ПЛК)

Не так давно была подобная тема, там дублировали экран ПР200 с помощью ИПП120, может Вам подойдёт?!

https://owen.ru/forum/showthread.php?t=28579&page=3

bayk
20.07.2019, 12:52
Сергей0308 я собрал ваш вариант с булевой переменной в макрос и дооформил ниже работой с битом из сети. правильно ли я все это сделал? и правильно ли понял вашу идею
в этом же проекте присоединил хвосты к selchgb. в итоге если активируешь переменную на первом входе она непрерывно меняет свое значение. в варианте без линий задержек такого не происходило, но "желтило"

Сергей0308
20.07.2019, 13:59
Сергей0308 я собрал ваш вариант с булевой переменной в макрос и дооформил ниже работой с битом из сети. правильно ли я все это сделал? и правильно ли понял вашу идею
в этом же проекте присоединил хвосты к selchgb. в итоге если активируешь переменную на первом входе она непрерывно меняет свое значение. в варианте без линий задержек такого не происходило, но "желтило"

А зачем побитно обрабатывать? Может проще в целочисленном виде? Если предполагается изменение бит на месте, то так не получится, я выкладывал ранее как можно изменять биты и сохранять в целочисленной энергонезависимой переменной:

43686

43687

А так по макросу "скрещивания" двух булевых переменных в одну(самостоятельную), если Вы хотите настраивать энергонезависимость вне макроса - всё правильно!

bayk
20.07.2019, 17:57
энергонезависимость булевой переменной не требуется. мне нужно просто правильно вывалить эту переменную в сеть и из сети забрать, если она изменилась и передать это на экран ипп для того, чтобы с экрана ее можно было бы взвести. у меня в основной программе еще несколько булевых переменных через один сетевой регистр гоняются, чтобы не перегружать обмен.

Сергей0308
20.07.2019, 23:39
энергонезависимость булевой переменной не требуется. мне нужно просто правильно вывалить эту переменную в сеть и из сети забрать, если она изменилась и передать это на экран ипп для того, чтобы с экрана ее можно было бы взвести. у меня в основной программе еще несколько булевых переменных через один сетевой регистр гоняются, чтобы не перегружать обмен.

Для ИПП120 достаточно этого:

43688

43691

Всё прекрасно отображается и изменяется с экрана, непонятно чем Вас не устраивает, остальное всё(логику) можно сделать в ПЛК(ПР)!

Вот добавил программу для ПР200:

43692

43693

Наверно можно было обойтись встроенной записью по изменению, но добавил запись по команде, булеву переменную для записи!
И в ПР200 две сетевые переменные, одна на чтение, вторая на запись, наверно так Вы хотели?!
И хотел добавить, можно в ПР200 булевы переменные вывести на экран, подобно как в ИПП120 и тогда экраны про дублируются на ИПП120 и ПР200! Я такого в проекте не сделал, потому что у Вас такого не предполагалось!

Вот добавил экран на ПР200, теперь они должны дублироваться с экраном ИПП120, может кому пригодится! Короче, булевы переменные можно будет менять из программы ПР200 и с экранов ПР200 и ИПП120!

43694

bayk
21.07.2019, 12:26
У меня на той стороне ПЛК дельта as228t
И по причине того, что у меня есть недоверенное оборудование(преобразователь ntc10k в модбас на базе ардуинки. Не стал ничего промышленного покупать, поскольку есть сомнения.в необходимости этих данных, если будут полезны - куплю пр200 или спец. Преобразователь за 10к), которое надо высадить на отдельный аппаратный ком-порт, а другого модбас оборудования ещё 10 штук, то мне пришлось ипп перевести в режим слейва а через ПЛК устраивать весь обмен. Автообмен в дельте сделан так, что он из одного своего регистра пишет в модбас, а в другой читает.

bayk
24.07.2019, 23:04
Сергей0308 у меня какая-то хрень с макросом, который я соорудил в этом сообщении (https://owen.ru/forum/showthread.php?t=31564&p=310387&viewfull=1#post310387).
в проекте из этого сообщения все работает идеально и никаких линий задержки не просит, но как только я перенес этот макрос через импорт/экспорт в свой основной проект - все это перестало симулироваться и макрос начал светить и требовать линию задержки. может я чего не понимаю???? во вложении основной проект. там этот же функционал в самом верху.

и еще один идиотский вопрос - а у ПР200 какое ограничение количества подряд считываемых регистров по модбас, когда ПР200 слэйв?

Василий Кашуба
24.07.2019, 23:32
Сергей0308 у меня какая-то хрень с макросом, который я соорудил в этом сообщении (https://owen.ru/forum/showthread.php?t=31564&p=310387&viewfull=1#post310387).
в проекте из этого сообщения все работает идеально и никаких линий задержки не просит, но как только я перенес этот макрос через импорт/экспорт в свой основной проект - все это перестало симулироваться и макрос начал светить и требовать линию задержки. может я чего не понимаю???? во вложении основной проект. там этот же функционал в самом верху.
Вы закольцевали вход с выходом, поэтому программа и просит линию задержки.

bayk
25.07.2019, 01:18
Василий Кашуба скачайте и посмотрите пож. файл по ссылке на пост. там тот же макрос и закольцованная переменная и ничего не "желтит" там даже внутри макроса разные переменные для входа и выхода.
или у вас оба проекта "желтят" просто у меня исходный, в котором сделан макрос - работает как надо, а при переносе все работать перестало. и "желтит" и в симуляторе посылает на "лайфхаки"
единственное отличие, что пример сделан на ПР200 а переношу его на ИПП120, но я всегда думал, что по сути это одно и тоже
вот д***мо! создал новый проект на произвольно выбранной ПР200 вставил макрос и никто не желтит и работает! создаю новый проект проект на ипп120 - ничего не желтит и работает. в чем, черт возьми, отличие от моего основного проекта???
в своем проекте сделал наэкранную переменную энергонезависимой и желтизна прошла, а логика заработала. ничего не понимаю, ведь в примерах нет энергозависимости переменной, привязанной к экрану.

serbuz777@mail.ru
03.09.2019, 14:15
Подскажите столкнулся с такой проблемой. Ни у сименса, ни у шнайдера и т.п. такого не видел. Область рабочая программирования ОВЕНА дико маленькая. Напишешь с десяток и, или, не и т.п. и все экран заполнен. Создавал свои макросы - не вопрос. Но у меня есть сенсорная панель и соответственно сетевые переменные и из-за них все ютится в одном главном рабочем окне программы и не позволяет создавать макросы. Что за бред( а если прога у меня на сони элементов внутри логика, как тогда быть?

Ревака Юрий
03.09.2019, 14:23
Подскажите столкнулся с такой проблемой. Ни у сименса, ни у шнайдера и т.п. такого не видел. Область рабочая программирования ОВЕНА дико маленькая. Напишешь с десяток и, или, не и т.п. и все экран заполнен. Создавал свои макросы - не вопрос. Но у меня есть сенсорная панель и соответственно сетевые переменные и из-за них все ютится в одном главном рабочем окне программы и не позволяет создавать макросы. Что за бред( а если прога у меня на сони элементов внутри логика, как тогда быть?

Добрый день.
Свойства холста ширина и высота должны Вас крепко выручить.:)

b-s-a
02.11.2022, 13:11
Извините, что поднимаю старую тему. Просто не удалось найти ничего более подходящего.

1. Являются у ПР200 сетевые переменные энергонезависимыми? Судя по сообщениям тут, являются, но в документации об этом ни слова (ну, или не в разделе "переменные").
2. Если они энергонезависимые, то каков порядок их начальной инициализации (при первом включении), если нулевые значение логически недопустимы, например? Почему возможность задать начальное значение заблокирована в OL?
3. Как правильно использовать сетевые переменные, если их изменение возможно и удаленно, и через меню ПР200.

Сергей0308
02.11.2022, 13:22
Извините, что поднимаю старую тему. Просто не удалось найти ничего более подходящего.

1. Являются у ПР200 сетевые переменные энергонезависимыми? Судя по сообщениям тут, являются, но в документации об этом ни слова (ну, или не в разделе "переменные").
2. Если они энергонезависимые, то каков порядок их начальной инициализации (при первом включении), если нулевые значение логически недопустимы, например? Почему возможность задать начальное значение заблокирована в OL?
3. Как правильно использовать сетевые переменные, если их изменение возможно и удаленно, и через меню ПР200.

Энергонезависимые в режиме слейв, первоначальная инициализация сейчас реализуется вручную, в смысле самостоятельно!
Можно так сделать:

63582

Значение по умолчанию пишется во внутреннюю энергонезависимую переменную!

И много тем было по этому вопросу, в смысле, вариантов реализации!

1exan
02.11.2022, 13:24
Del
Задвоилось

1exan
02.11.2022, 13:25
1. Являются
2. Инициализации не предусмотрена. Кажется petera выкладывал макрос, который инициализирует переменную после первой загрузки программы.
3. Вроде нет проблем

Dimensy
02.11.2022, 13:30
Извините, что поднимаю старую тему. Просто не удалось найти ничего более подходящего.

1. Являются у ПР200 сетевые переменные энергонезависимыми? Судя по сообщениям тут, являются, но в документации об этом ни слова (ну, или не в разделе "переменные").
2. Если они энергонезависимые, то каков порядок их начальной инициализации (при первом включении), если нулевые значение логически недопустимы, например? Почему возможность задать начальное значение заблокирована в OL?
3. Как правильно использовать сетевые переменные, если их изменение возможно и удаленно, и через меню ПР200.

1. Энергонезависимые
2. Будут нулевые значения, если это недопустимо, то нужно самому позаботиться об инициализации (где-то на форуме есть для этого макросы). В новых линейках можно задавать значение по умолчанию
3. В менеджере компонентов есть макросы для записи из двух мест SelCHgB, SelChgI и SelChgF

petera
02.11.2022, 20:18
1. Энергонезависимые
2. Будут нулевые значения, если это недопустимо, то нужно самому позаботиться об инициализации (где-то на форуме есть для этого макросы). В новых линейках можно задавать значение по умолчанию
3. В менеджере компонентов есть макросы для записи из двух мест SelCHgB, SelChgI и SelChgF

1. Являются
2. Инициализации не предусмотрена. Кажется petera выкладывал макрос, который инициализирует переменную после первой загрузки программы.
3. Вроде нет проблем
Здесь https://owen.ru/forum/showthread.php?t=35692&p=370303&viewfull=1#post370303
есть и макрос для записи начальных значений - однократно, после первого включения ПР после заливки программы
и про то как правильно использовать, если их изменение возможно и удаленно, и через меню ПР200 без примочек SelCHgB, SelChgI и SelChgF