![]() |
![]() ![]() |
|
Связь с внешним миром Modbus, RS232, RS485, Lon и другое. |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
![]() |
#1 |
Member
Регистрация: Sep 2017
Сообщения: 64
Благодарил(а): 1 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
![]()
День добрый.
Задача стоит следующая: сделать запись значение либо через модбас, либо через экран SMArt. Т.е. чтобы пользователь мог менять уставку (real, int, bool) и удалённо (со скады через модбас) так и непосредственно стоя перед контроллером. Почитав форум наткнулся на блоки Fronts(), 2way и Value 2in-1out, но они не решают следующей задачи. 1. Оператор ВАСЯ задал значение 25 через контроллер. 2. Оператор Петя, сидя за компьютером, записал уставку 30. 3. Оператор Вася опять изменил уставку на 25. 4. А вот оператор Петя не может изменить уставку обратно на 30, ибо у него это значение остается на входной переменной! Тем самым Fronts() не срабатывает, изменения переменной же нету! Вопрос, как можно исправить сей ... баг? Буфер под любую переменную наврядли разработчики напишут, но уже неоднократно сталкиваюсь с подобной ситуацией и практически всегда приходиться делать разграничение управления и задания уставки со стороны ПЛК и АРМа, отдельным битом. Так же есть вариант "обновления" переменной при установки галочки "изменение по сигналу" в экране SMArt'а, но данный вариант не применим тоже, ибо Скада перенагружена, лишние запросы/формулы/условия/скрипты делать не хочется. В общем, помогите решить сей вопрос. |
![]() |
![]() |
![]() |
#2 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 17 382
Благодарил(а): 15 раз(а)
Поблагодарили:
610 раз(а) в 557 сообщениях
|
![]() Другими словами, скада читает уставку, если уставка изменилась, некоторое время ничего не делает во избежании циклических прыжков между двумя уставками (так называемые "гонки"), затем записывает обновлённую уставку в переменную для записи. Описанный вами сценарий не настолько вероятен, чтобы это хоть какое-то значение имело для трафика. Это тупо нужно специально стоять и непрерывно дергать уставку туда/сюда в течении длительного времени. В жизни такое бывает только при ПНР и немного при сдаче объекта. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. Последний раз редактировалось Arsie, 21.09.2017 в 14:27 |
![]() |
![]() |
![]() |
#3 |
Member
Регистрация: Sep 2017
Сообщения: 64
Благодарил(а): 1 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
![]() А причем тут СКАДА если вся обратная связь по любому процессу принадлежит контуру управления, куда входит контроллер, а не СКАДА?) Т.е. вы хотите мне сказать, что если я использую переменную ВХОД как переменную модбас, я могу изменять её из контроллера? )) И зачем мне "городить огород" там где он мне не нужен?) А вот на счет сценария, могу вас заверить что это один случай на мильён. И он произошел... Последний раз редактировалось Arsie, 21.09.2017 в 14:28 |
![]() |
![]() |
![]() |
#4 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 17 382
Благодарил(а): 15 раз(а)
Поблагодарили:
610 раз(а) в 557 сообщениях
|
![]() Вы упомянули компьютер и скаду. Всё честно. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. Последний раз редактировалось Arsie, 21.09.2017 в 14:30 |
![]() |
![]() |
![]() |
#5 |
Member
Регистрация: Sep 2017
Сообщения: 64
Благодарил(а): 1 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
![]()
Используется modbus-задатчик сигнала. Т.е. считывать он не может.
Опять же, вопрос стоит по существу, как со стороны контроллера организовать подобное решение? Последний раз редактировалось Arsie, 21.09.2017 в 14:30 |
![]() |
![]() |
![]() |
#6 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 17 382
Благодарил(а): 15 раз(а)
Поблагодарили:
610 раз(а) в 557 сообщениях
|
![]() Задача стоит следующая: [...] чтобы пользователь мог менять уставку (real, int, bool) и удалённо (со скады через модбас) так и непосредственно стоя перед контроллером. В вашем случае проблема в неправильно выбранном задатчике, который не рассчитан на локальное изменение уставки. Как вы говорите, "считывать он не может", поэтому Вася и Петя никогда друг с другом не договорятся. Сейчас у вас оборудование подобрано для исключительно удалённого управления, как вокруг локального устройства не прыгай, какие функции не вводи, проблемы это не снимет. Петя уставку на 30 обратно сменить не сможет не потому, что fronts не сработает, а потому что никогда не узнает, что уставка теперь 25, а не 30. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. Последний раз редактировалось Arsie, 21.09.2017 в 14:31 |
![]() |
![]() |
![]() |
#7 |
Member
Регистрация: Sep 2017
Сообщения: 64
Благодарил(а): 1 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
![]()
Товарищ сотрудник компании Segnetics, вы можете ответить по существу? Могу ли я на ПЛК Segnetics SMH2G или Segnetics Pixel организовать сквозную запись в переменную с 2 источников (модбас и ввод уставки с экрана ПЛК) средствами разработки SMLogix и SMArt?
Последний раз редактировалось Arsie, 21.09.2017 в 14:32 |
![]() |
![]() |
Благодарность от: |
![]() |
#8 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 17 382
Благодарил(а): 15 раз(а)
Поблагодарили:
610 раз(а) в 557 сообщениях
|
![]()
Используя в SMArt элемент-экран "Меню настроек", можно организовать локальный ввод уставки и приём уставки извне, например, из сети. Для этого у каждой уставки есть специальные инструменты.
Первый инструмент, "Запись по изменению": Второй инструмент, "Запись по сигналу": __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. Последний раз редактировалось Arsie, 21.09.2017 в 14:32 |
![]() |
![]() |
![]() |
#9 |
Member
Регистрация: Sep 2017
Сообщения: 64
Благодарил(а): 1 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
![]() У нас есть значение приходящее с ModBus. У нас есть значение с экрана. Мне надо записывать эти значения в перменную которую над создать как вы написали выше? |
![]() |
![]() |
![]() |
#10 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 17 382
Благодарил(а): 15 раз(а)
Поблагодарили:
610 раз(а) в 557 сообщениях
|
![]() Значение с экрана записывается в память. Другими словами, "записи двух значений в одну переменную" в этом случае не происходит. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
![]() |
![]() |
![]() |
#11 |
Member
Регистрация: Sep 2017
Сообщения: 64
Благодарил(а): 1 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
![]() |
![]() |
![]() |
![]() |
#12 |
Senior Member
Регистрация: Jun 2007
Сообщения: 1 951
Благодарил(а): 15 раз(а)
Поблагодарили:
21 раз(а) в 21 сообщениях
|
![]() Есть много способов решения данной проблемы, как при помощи скада-системы так и при помощи смлоджика. 1 способ - считывать уставку от контроллера скадой и переписывать ее на выход от скады с некоторой периодичностью, или при изменении. 2 способ - сделать на скаде кнопки "+" и "-" и битами посылать команды в контроллер. В контроллере написать макрос, которые будет брать данные от уставки в смарте и делать увеличение или уменьшение и писать в память контроллера. Подозреваю, что есть еще способы. PS Для Сегнетиксов... вот посмотрите на софт компании Z***. У них классно реализована работа с EEPROM и модбасом. И такой проблемы не может быть "в принципе". PPS Не такое уж и редкое совпадение событйи должно случиться чтобы этот "касяк" сработал... при переключении режима "ЗИМА/Лето" на стандартной программе конструктора такое случается часто и 100% произойдет если не обойти эту недоработку. |
![]() |
![]() |
![]() |
#13 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 17 382
Благодарил(а): 15 раз(а)
Поблагодарили:
610 раз(а) в 557 сообщениях
|
![]() __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
![]() |
![]() |
![]() |
#14 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 17 382
Благодарил(а): 15 раз(а)
Поблагодарили:
610 раз(а) в 557 сообщениях
|
![]() __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
![]() |
![]() |
![]() |
#15 |
Senior Member
Регистрация: Jun 2007
Сообщения: 1 951
Благодарил(а): 15 раз(а)
Поблагодарили:
21 раз(а) в 21 сообщениях
|
![]() |
![]() |
![]() |
![]() |
#16 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 17 382
Благодарил(а): 15 раз(а)
Поблагодарили:
610 раз(а) в 557 сообщениях
|
![]() __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
![]() |
![]() |
![]() |
#17 |
Member
Регистрация: Sep 2017
Сообщения: 64
Благодарил(а): 1 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
![]() С нее приходит сигнал. Все. Нету доступа. Никакого доступа нету к скаде. Есть только некий задатчик, который дает значение в контроллер. Я скажу больше, устройство покупалось по рекомендации менеджера продаж вашей компании. В противном случае оно будет возвращено обратно в компанию, а мы закупим другое устройство вместо того чтобы тратить и наше, и ваше время. Вы тут разводите какой-то ширпотреб, пытаетесь лезть куда не нужно. Есть датчики, есть ПЛК, есть СКАДА, есть МЕС и все это в каком-то облаке. Ваша часть - ПЛК. Так будьте добрый, отвечайте как квалифицированный специалист только по ВАШЕМУ оборудованию. Если надо расписать ещё раз вопрос, я его распишу. А касательно того что задатчик не может не считывать - вы глубоко ошибаетесь. Но это - не суть. |
![]() |
![]() |
![]() |
#18 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 17 382
Благодарил(а): 15 раз(а)
Поблагодарили:
610 раз(а) в 557 сообщениях
|
![]() __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
![]() |
![]() |
![]() |
#19 |
Member
Регистрация: Sep 2017
Сообщения: 64
Благодарил(а): 1 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
![]() |
![]() |
![]() |
![]() |
#20 |
Уволен из Сегнетикс
Регистрация: Nov 2015
Адрес: CПб/ВЛГ
Сообщения: 0
Благодарил(а): 0 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
![]()
Есть Оля.
Есть её брат Петя, который прослушивает её телефон. Есть её друг Саша, который иногда ей звонит. Петя говорит Оле, что сегодня 21 сентября. Оля запоминает. Тут звонит Саша, и по телефону говорит Оле, что сегодня 20 сентября. Оля запоминает, забыв про 21 число. Петя послушал телефонный разговор, и знает, что у Оли неправильная информация. Он говорит ей, что сегодня 22 сентября. Оля запоминает. Саша всё-ещё считает, что Оля думает, что сегодня 20 число, хотя по факту, Оля думает, что сегодня 22 число. У Саши нет никакого способа узнать, что там думает Оля, пока он не позвонит ей и не спросит. В то время как Петя точно знает, какое у Оли число. Вот такая аналогия, совсем уж простая. В вашем случае, насколько я понял, некая скада не знает, не хочет или не может знать, что там записано в контроллер. Таким образом, задание, заданное с панели контроллера всегда будет важнее чем то, что пришло дистанционно. Либо вы должны постоянно обновлять уставку из своей скады, просто по времени. Может быть, я вовсе не понял задачи, но я вижу её именно так. В таком случае, абсолютно не важно, какого производителя ПЛК вы будете использовать, вам придётся пройти через эту же ситуацию. __________________ В сегнетиксе не работаю с самого начала 2019 года. |
![]() |
![]() |
![]() |
#21 |
Member
Регистрация: Sep 2017
Сообщения: 64
Благодарил(а): 1 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
![]() Никак он не узнает о локальном изменении уставки. Данная уставка участвует в операции и уже уходит другая переменная с конечным результатом. |
![]() |
![]() |
![]() |
#22 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 17 382
Благодарил(а): 15 раз(а)
Поблагодарили:
610 раз(а) в 557 сообщениях
|
![]() Как только эта коллизия будет разрешена, разговор перейдёт в конструктивное русло. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
![]() |
![]() |
![]() |
#23 |
Member
Регистрация: Sep 2017
Сообщения: 64
Благодарил(а): 1 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
![]() Чуть выше я выложил фотографии с описанием "косяка" когда ячейка знает что в ней есть число и не хочет обновляться. На самом деле, есть макрос 2val in-1out, она неплохо работает. Но вот ту ситуацию решить не может. По поводу других контроллеров. Я не встречал чтобы контроллер не реагировал на изменение значения в ячейки памяти. Т.е. У нас есть ячейка "А" с информацией "25" Если по modbus приходить команда на ЗАПИСЬ ячейки "А" информацией "25" то... ячейка перезаписывается. В сегнетиксе, если смотреть на изменения и сравнения прихдящей переменной с макросом Fronts(), то можно заметить что ячейка не реагирует на такую команду записи. Что-то вроде "У меня уже есть число 25, новое я записывать не буду"... |
![]() |
![]() |
![]() |
#24 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 17 382
Благодарил(а): 15 раз(а)
Поблагодарили:
610 раз(а) в 557 сообщениях
|
![]() __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
![]() |
![]() |
![]() |
#25 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 17 382
Благодарил(а): 15 раз(а)
Поблагодарили:
610 раз(а) в 557 сообщениях
|
![]() Но, как я описал выше, скада не знает, что одно значение уже заменили другим. Поэтому она, как задатчик, не видит смысла записывать 30 поверх 30, т.к. она не знает, что там давно уже 25, заданное локально. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
![]() |
![]() |
![]() |
#26 |
Уволен из Сегнетикс
Регистрация: Nov 2015
Адрес: CПб/ВЛГ
Сообщения: 0
Благодарил(а): 0 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
![]()
Кажется, я понял.
Если ваш задатчик постоянно(каждый цикл опроса) пишет в ячейку "30" и вы считаете ,что это новое задание - так вы должны организовать программу так, чтобы местное управление игнорировалось. Ведь какой в нём смысл, раз в секунду приходит новая уставка, и это всегда та уставка, что задана "сверху". Либо контроллер должен дать в скаду информацию, что уставка изменена местно. __________________ В сегнетиксе не работаю с самого начала 2019 года. |
![]() |
![]() |
![]() |
#27 |
Member
Регистрация: Sep 2017
Сообщения: 64
Благодарил(а): 1 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
![]() |
![]() |
![]() |
![]() |
#28 |
Уволен из Сегнетикс
Регистрация: Nov 2015
Адрес: CПб/ВЛГ
Сообщения: 0
Благодарил(а): 0 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
![]()
Ответьте на вопрос:
Что будет на экране скада-системы, если там задана уставка 30, и после этого на контроллере человека задаст 25? 1. Вы задали в скаде "30". 2. Вы отправились к контроллеру, и задали там "25". 3. Вы пришли обратно к компьютеру, что будет на экране, 30 или 25? __________________ В сегнетиксе не работаю с самого начала 2019 года. |
![]() |
![]() |
![]() |
#29 |
Member
Регистрация: Sep 2017
Сообщения: 64
Благодарил(а): 1 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
![]() |
![]() |
![]() |
![]() |
#30 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 17 382
Благодарил(а): 15 раз(а)
Поблагодарили:
610 раз(а) в 557 сообщениях
|
![]() Что побудит вас повторно задать 30? __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Запись в свои же holding регистры | VaBo | SMLogix | 33 | 03.12.2019 09:11 |
Неправильная запись значения в ЭРИС-110-МВТ (решено) | OlegM | Связь с внешним миром | 8 | 28.06.2018 15:52 |
Сохраняются значения в TRIM5 после обрыва связи с контроллером SMH2G | kodmse | SMLogix | 5 | 14.04.2018 08:47 |
Запись уставки из двух экранов | Sibiryak22rus | SMArt | 5 | 13.04.2018 10:17 |
Управляемый разгон-торможение и смена уставки | Arsie | Библиотека макросов | 0 | 19.06.2014 13:49 |