PDA

Просмотреть полную версию : Сквозная запись значения уставки


p001p
20.09.2017, 19:52
День добрый.

Задача стоит следующая: сделать запись значение либо через модбас, либо через экран SMArt.
Т.е. чтобы пользователь мог менять уставку (real, int, bool) и удалённо (со скады через модбас) так и непосредственно стоя перед контроллером.

Почитав форум наткнулся на блоки Fronts(), 2way и Value 2in-1out, но они не решают следующей задачи.

1. Оператор ВАСЯ задал значение 25 через контроллер.
2. Оператор Петя, сидя за компьютером, записал уставку 30.
3. Оператор Вася опять изменил уставку на 25.
4. А вот оператор Петя не может изменить уставку обратно на 30, ибо у него это значение остается на входной переменной!
Тем самым Fronts() не срабатывает, изменения переменной же нету!

Вопрос, как можно исправить сей ... баг?
Буфер под любую переменную наврядли разработчики напишут, но уже неоднократно сталкиваюсь с подобной ситуацией и практически всегда приходиться делать разграничение управления и задания уставки со стороны ПЛК и АРМа, отдельным битом.

Так же есть вариант "обновления" переменной при установки галочки "изменение по сигналу" в экране SMArt'а, но данный вариант не применим тоже, ибо Скада перенагружена, лишние запросы/формулы/условия/скрипты делать не хочется.

В общем, помогите решить сей вопрос.

Arsie
20.09.2017, 20:51
Вопрос, как можно исправить сей ... баг?

Сей баг называется в скада-системах "обратная связь". Ещё к этому есть понятие "блокировка обратной связи".

Другими словами, скада читает уставку, если уставка изменилась, некоторое время ничего не делает во избежании циклических прыжков между двумя уставками (так называемые "гонки"), затем записывает обновлённую уставку в переменную для записи.

Описанный вами сценарий не настолько вероятен, чтобы это хоть какое-то значение имело для трафика. Это тупо нужно специально стоять и непрерывно дергать уставку туда/сюда в течении длительного времени. В жизни такое бывает только при ПНР и немного при сдаче объекта.

p001p
20.09.2017, 21:29
Сей баг называется в скада-системах "обратная связь". Ещё к этому есть понятие "блокировка обратной связи".

Другими словами, скада читает уставку, если уставка изменилась, некоторое время ничего не делает во избежании циклических прыжков между двумя уставками (так называемые "гонки"), затем записывает обновлённую уставку в переменную для записи.

Описанный вами сценарий не настолько вероятен


А причем тут СКАДА если вся обратная связь по любому процессу принадлежит контуру управления, куда входит контроллер, а не СКАДА?)

Т.е. вы хотите мне сказать, что если я использую переменную ВХОД как переменную модбас, я могу изменять её из контроллера? ))

И зачем мне "городить огород" там где он мне не нужен?)

А вот на счет сценария, могу вас заверить что это один случай на мильён. И он произошел...

Arsie
20.09.2017, 21:31
А причем тут СКАДА если вся обратная связь по любому процессу принадлежит контуру управления, куда входит контроллер, а не СКАДА?)

Описываемый вами процесс: "Верхний уровень" <> "Нижний уровень". Он принадлежит двум участникам, а не одному.

Вы упомянули компьютер и скаду. Всё честно.

p001p
21.09.2017, 10:27
Используется modbus-задатчик сигнала. Т.е. считывать он не может.

Опять же, вопрос стоит по существу, как со стороны контроллера организовать подобное решение?

Arsie
21.09.2017, 10:29
Используется modbus-задатчик сигнала. Т.е. считывать он не может.

Персичная постановка вопроса была такой:

Задача стоит следующая: [...] чтобы пользователь мог менять уставку (real, int, bool) и удалённо (со скады через модбас) так и непосредственно стоя перед контроллером.


В вашем случае проблема в неправильно выбранном задатчике, который не рассчитан на локальное изменение уставки. Как вы говорите, "считывать он не может", поэтому Вася и Петя никогда друг с другом не договорятся.

Сейчас у вас оборудование подобрано для исключительно удалённого управления, как вокруг локального устройства не прыгай, какие функции не вводи, проблемы это не снимет. Петя уставку на 30 обратно сменить не сможет не потому, что fronts не сработает, а потому что никогда не узнает, что уставка теперь 25, а не 30.


Опять же, вопрос стоит по существу, как со стороны контроллера организовать подобное решение?

Тогда от вас и вопрос по существу: что вам конкретно нужно-то? Какова ваша задача? Два варианта я уже услышал и оба варианта имеют свой верный ответ. И оба ответа не такие, какой вы хотите услышать, но, однако, решающие поставленные задачи.

p001p
21.09.2017, 10:37
Товарищ сотрудник компании Segnetics, вы можете ответить по существу? Могу ли я на ПЛК Segnetics SMH2G или Segnetics Pixel организовать сквозную запись в переменную с 2 источников (модбас и ввод уставки с экрана ПЛК) средствами разработки SMLogix и SMArt?

Arsie
21.09.2017, 10:52
Используя в SMArt элемент-экран "Меню настроек", можно организовать локальный ввод уставки и приём уставки извне, например, из сети. Для этого у каждой уставки есть специальные инструменты.


Первый инструмент, "Запись по изменению":

http://forum.segnetics.com/attachment.php?attachmentid=4397&stc=1&d=1505976597


Второй инструмент, "Запись по сигналу":

http://forum.segnetics.com/attachment.php?attachmentid=4399&stc=1&d=1505976800

p001p
21.09.2017, 14:57
Используя в SMArt элемент-экран "Меню настроек", можно организовать локальный ввод уставки и приём уставки извне, например, из сети. Для этого у каждой уставки есть специальные инструменты.


Первый инструмент, "Запись по изменению":

http://forum.segnetics.com/attachment.php?attachmentid=4397&stc=1&d=1505976597


Второй инструмент, "Запись по сигналу":

http://forum.segnetics.com/attachment.php?attachmentid=4399&stc=1&d=1505976800

Как это использовать чтобы записать 2 разных значения в 1 перменную?

У нас есть значение приходящее с ModBus.
У нас есть значение с экрана.

Мне надо записывать эти значения в перменную которую над создать как вы написали выше?

Arsie
21.09.2017, 15:05
Как это использовать чтобы записать 2 разных значения в 1 перменную?

Одновременная запись двух разных значений в одну переменную невозможна согласно законам физики.



У нас есть значение приходящее с ModBus.
У нас есть значение с экрана.

Значение с Modbus записывается в переменную.

Значение с экрана записывается в память.

Другими словами, "записи двух значений в одну переменную" в этом случае не происходит.

p001p
21.09.2017, 15:17
Значение с Modbus записывается в переменную.

Значение с экрана записывается в память.

Другими словами, "записи двух значений в одну переменную" в этом случае не происходит.

Отлично. Как теперь значение из переменной отправить в память, так чтобы его потом изменило следующее значение с экрана, а потом его изменило любой другое значение с переменной Modbus?

Max2114
21.09.2017, 15:31
Отлично. Как теперь значение из переменной отправить в память, так чтобы его потом изменило следующее значение с экрана, а потом его изменило любой другое значение с переменной Modbus?

Это старая недоработка компании Сегнетикс. Мне с некоторой периодичностью приходится извращаться чтобы ее обойти.
Есть много способов решения данной проблемы, как при помощи скада-системы так и при помощи смлоджика.
1 способ - считывать уставку от контроллера скадой и переписывать ее на выход от скады с некоторой периодичностью, или при изменении.
2 способ - сделать на скаде кнопки "+" и "-" и битами посылать команды в контроллер. В контроллере написать макрос, которые будет брать данные от уставки в смарте и делать увеличение или уменьшение и писать в память контроллера.

Подозреваю, что есть еще способы.

PS Для Сегнетиксов... вот посмотрите на софт компании Z***. У них классно реализована работа с EEPROM и модбасом. И такой проблемы не может быть "в принципе".
PPS Не такое уж и редкое совпадение событйи должно случиться чтобы этот "касяк" сработал... при переключении режима "ЗИМА/Лето" на стандартной программе конструктора такое случается часто и 100% произойдет если не обойти эту недоработку.

Arsie
21.09.2017, 15:34
Отлично. Как теперь значение из переменной отправить в память, так чтобы его потом изменило следующее значение с экрана, а потом его изменило любой другое значение с переменной Modbus?

Вопрос слишком широк. Существует не менее 6 способов. Т.к. вы настаиваете на том, чтобы скрыть свою задачу, я выберу продолжение предыдущего примера:

Arsie
21.09.2017, 15:37
Это старая недоработка компании Сегнетикс. Мне с некоторой периодичностью приходится извращаться чтобы ее обойти.
Есть много способов решения данной проблемы, как при помощи скада-системы так и при помощи смлоджика.

Человек ещё не определился, скада у него или не скада. На способы решения задачи не обращает внимания, хочет получить конкретный ответ на конкретный вопрос, а я всеми силами пытаюсь не потратить полтора-два часа на объяснения тех вещей, которые ему даже в итоге и не пригодятся.

Max2114
21.09.2017, 15:40
Человек ещё не определился, скада у него или не скада. На способы решения задачи не обращает внимания, хочет получить конкретный ответ на конкретный вопрос, а я всеми силами пытаюсь не потратить полтора-два часа на объяснения тех вещей, которые ему даже в итоге и не пригодятся.
Ежели какое-то устройство может писать уставку по модбасу то со 100% вероятностью оно же может и считать эту уставку. Значит принципы решения его проблемы одни и те же.

Arsie
21.09.2017, 15:51
Ежели какое-то устройство может писать уставку по модбасу то со 100% вероятностью оно же может и считать эту уставку. Значит принципы решения его проблемы одни и те же.

Его последняя версия - некий задатчик, который не умеет читать. И при этом человек не учитывает, что задатчик не увидит локальную смену уставки. И при этом всём человек считает, что запись во входную переменную решит его проблему.

p001p
21.09.2017, 16:12
Его последняя версия - некий задатчик, который не умеет читать. И при этом человек не учитывает, что задатчик не увидит локальную смену уставки. И при этом всём человек считает, что запись во входную переменную решит его проблему.

Товарищ, ещё раз повторяю, вам не нужно использовать Скаду.
С нее приходит сигнал.
Все. Нету доступа. Никакого доступа нету к скаде. Есть только некий задатчик, который дает значение в контроллер.

Я скажу больше, устройство покупалось по рекомендации менеджера продаж вашей компании. В противном случае оно будет возвращено обратно в компанию, а мы закупим другое устройство вместо того чтобы тратить и наше, и ваше время.
Вы тут разводите какой-то ширпотреб, пытаетесь лезть куда не нужно. Есть датчики, есть ПЛК, есть СКАДА, есть МЕС и все это в каком-то облаке.

Ваша часть - ПЛК.
Так будьте добрый, отвечайте как квалифицированный специалист только по ВАШЕМУ оборудованию. Если надо расписать ещё раз вопрос, я его распишу.


А касательно того что задатчик не может не считывать - вы глубоко ошибаетесь. Но это - не суть.

Arsie
21.09.2017, 16:16
Я скажу больше, устройство покупалось

У этого устройства есть название?



А касательно того что задатчик не может не считывать - вы глубоко ошибаетесь. Но это - не суть.

Как задатчик узнаёт о локальном изменении уставки?

p001p
21.09.2017, 16:21
Вопрос слишком широк. Существует не менее 6 способов. Т.к. вы настаиваете на том, чтобы скрыть свою задачу, я выберу продолжение предыдущего примера:

Приложил фото чтобы мы поняли друг друга.

Gromov
21.09.2017, 16:21
Есть Оля.
Есть её брат Петя, который прослушивает её телефон.
Есть её друг Саша, который иногда ей звонит.

Петя говорит Оле, что сегодня 21 сентября. Оля запоминает.
Тут звонит Саша, и по телефону говорит Оле, что сегодня 20 сентября. Оля запоминает, забыв про 21 число.
Петя послушал телефонный разговор, и знает, что у Оли неправильная информация. Он говорит ей, что сегодня 22 сентября. Оля запоминает.
Саша всё-ещё считает, что Оля думает, что сегодня 20 число, хотя по факту, Оля думает, что сегодня 22 число.
У Саши нет никакого способа узнать, что там думает Оля, пока он не позвонит ей и не спросит.
В то время как Петя точно знает, какое у Оли число.

Вот такая аналогия, совсем уж простая.

В вашем случае, насколько я понял, некая скада не знает, не хочет или не может знать, что там записано в контроллер. Таким образом, задание, заданное с панели контроллера всегда будет важнее чем то, что пришло дистанционно. Либо вы должны постоянно обновлять уставку из своей скады, просто по времени.


Может быть, я вовсе не понял задачи, но я вижу её именно так. В таком случае, абсолютно не важно, какого производителя ПЛК вы будете использовать, вам придётся пройти через эту же ситуацию.

p001p
21.09.2017, 16:22
У этого устройства есть название?


Как задатчик узнаёт о локальном изменении уставки?

Segnetics Pixel и Segnetics SMH2G

Никак он не узнает о локальном изменении уставки. Данная уставка участвует в операции и уже уходит другая переменная с конечным результатом.

Arsie
21.09.2017, 16:24
Приложил фото чтобы мы поняли друг друга.

Я вас прекрасно понимаю. Сообщением выше Громов описал то, что я пытаюсь донести до вас.

Как только эта коллизия будет разрешена, разговор перейдёт в конструктивное русло.

p001p
21.09.2017, 16:25
Есть Оля.
Есть её брат Петя, который прослушивает её телефон.
Есть её друг Саша, который иногда ей звонит.

Петя говорит Оле, что сегодня 21 сентября. Оля запоминает.
Тут звонит Саша, и по телефону говорит Оле, что сегодня 20 сентября. Оля запоминает, забыв про 21 число.
Петя послушал телефонный разговор, и знает, что у Оли неправильная информация. Он говорит ей, что сегодня 22 сентября. Оля запоминает.
Саша всё-ещё считает, что Оля думает, что сегодня 20 число, хотя по факту, Оля думает, что сегодня 22 число.
У Саши нет никакого способа узнать, что там думает Оля, пока он не позвонит ей и не спросит.
В то время как Петя точно знает, какое у Оли число.

Вот такая аналогия, совсем уж простая.

В вашем случае, насколько я понял, некая скада не знает, не хочет или не может знать, что там записано в контроллер. Таким образом, задание, заданное с панели контроллера всегда будет важнее чем то, что пришло дистанционно. Либо вы должны постоянно обновлять уставку из своей скады, просто по времени.


Может быть, я вовсе не понял задачи, но я вижу её именно так. В таком случае, абсолютно не важно, какого производителя ПЛК вы будете использовать, вам придётся пройти через эту же ситуацию.


Чуть выше я выложил фотографии с описанием "косяка" когда ячейка знает что в ней есть число и не хочет обновляться.

На самом деле, есть макрос 2val in-1out, она неплохо работает. Но вот ту ситуацию решить не может.


По поводу других контроллеров. Я не встречал чтобы контроллер не реагировал на изменение значения в ячейки памяти.

Т.е. У нас есть ячейка "А" с информацией "25"
Если по modbus приходить команда на ЗАПИСЬ ячейки "А" информацией "25" то... ячейка перезаписывается.

В сегнетиксе, если смотреть на изменения и сравнения прихдящей переменной с макросом Fronts(), то можно заметить что ячейка не реагирует на такую команду записи.
Что-то вроде "У меня уже есть число 25, новое я записывать не буду"...

Arsie
21.09.2017, 16:25
Никак он не узнает о локальном изменении уставки. Данная уставка участвует в операции и уже уходит другая переменная с конечным результатом.

Тогда как разрешается коллизия, когда скада-система "думает", что поддерживается уставка 30, а на самом деле поддерживается локально заданная 25?

Arsie
21.09.2017, 16:29
Чуть выше я выложил фотографии с описанием "косяка" когда ячейка знает что в ней есть число и не хочет обновляться.

В сегнетиксе, если смотреть на изменения и сравнения прихдящей переменной с макросом Fronts(), то можно заметить что ячейка не реагирует на такую команду записи.
Что-то вроде "У меня уже есть число 25, новое я записывать не буду"...

Проблема в том, что вы думаете, что значение, записанное из сети и значение, сохранённое локально, лежит в одном и том же месте. Это два разных места. В одном лежит 30, в другом 25. И когда вы опять записываете 25 поверх 25, то запись, конечно же, происходит. Значение 25 заменяется на значение 25. А значение 30 остаётся значением 30.

Но, как я описал выше, скада не знает, что одно значение уже заменили другим. Поэтому она, как задатчик, не видит смысла записывать 30 поверх 30, т.к. она не знает, что там давно уже 25, заданное локально.

Gromov
21.09.2017, 16:30
Кажется, я понял.

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

p001p
21.09.2017, 16:38
Тогда как разрешается коллизия, когда скада-система "думает", что поддерживается уставка 30, а на самом деле поддерживается локально заданная 25?

Скада система не думает. Поддерживат все ПЛК

Gromov
21.09.2017, 16:43
Ответьте на вопрос:

Что будет на экране скада-системы, если там задана уставка 30, и после этого на контроллере человека задаст 25?

1. Вы задали в скаде "30".
2. Вы отправились к контроллеру, и задали там "25".
3. Вы пришли обратно к компьютеру, что будет на экране, 30 или 25?

p001p
21.09.2017, 16:49
Ответьте на вопрос:

Что будет на экране скада-системы, если там задана уставка 30, и после этого на контроллере человека задаст 25?

1. Вы задали в скаде "30".
2. Вы отправились к контроллеру, и задали там "25".
3. Вы пришли обратно к компьютеру, что будет на экране, 30 или 25?

На экранчике будет 30.

Arsie
21.09.2017, 16:51
На экранчике будет 30.

Вы подошли к скаде, там видно число 30.

Что побудит вас повторно задать 30?

p001p
21.09.2017, 17:02
Вы подошли к скаде, там видно число 30.

Что побудит вас повторно задать 30?

Человек не подойдет к экрану, если у него не будет такой задачи.

Arsie
21.09.2017, 17:24
Человек не подойдет к экрану, если у него не будет такой задачи.

Программа на скаду уже написана, исходники выброшены в марианскую впадину и никаких вариантов их изменения нет?

Задание в скаде - текстовое поле или какая-то перечислимая штука, типа слайдера или перематывалки значений?

p001p
21.09.2017, 17:26
Программа на скаду уже написана, исходники выброшены в марианскую впадину и никаких вариантов их изменения нет?

Задание в скаде - текстовое поле или какая-то перечислимая штука, типа слайдера или перематывалки значений?


Экранчик с вводом значения и кнопкой "отправить". Текстовое поле.

Arsie
21.09.2017, 17:31
Экранчик с вводом значения и кнопкой "отправить". Текстовое поле.

Другими словами, информация всегда отправляется по нажатию кнопки "Отправить"?

p001p
21.09.2017, 17:46
Другими словами, информация всегда отправляется по нажатию кнопки "Отправить"?

Совершенно верно. Бит сигнала "отправить" не отловить =)

Arsie
21.09.2017, 17:57
Совершенно верно. Бит сигнала "отправить" не отловить =)

Тогда ваша схема такова, как на картинке.

p001p
21.09.2017, 18:05
Тогда ваша схема такова, как на картинке.

TrmPacket - для слейва: количество переданных мастеру ответов

Т.е. оно будет увеличиваться даже тогда, когда будет идти опрос других переменных? Тем самым - каждый раз изменять уставку.

Мне кажется этот вариант не подходит.

Arsie
21.09.2017, 18:13
TrmPacket - для слейва: количество переданных мастеру ответов

Т.е. оно будет увеличиваться даже тогда, когда будет идти опрос других переменных? Тем самым - каждый раз изменять уставку.

Мне кажется этот вариант не подходит.

Я вас не зря мучал вопросами по полному описанию задачи. Чтобы и своё время зря не тратить и ваше сэкономить.

p001p
21.09.2017, 18:28
Я вас не зря мучал вопросами по полному описанию задачи. Чтобы и своё время зря не тратить и ваше сэкономить.

Происходит постоянное увеличение значения.

Arsie
21.09.2017, 18:35
Происходит постоянное увеличение значения.

Вы сказали, что окошко, ввод значения и всё. Читать не умеет. Отправляет всегда по нажатию. Исходя из этих вводных я подобрал рабочую схему.

Max2114
21.09.2017, 18:37
На экранчике будет 30.
Это же неправильно! Для нормальной работы системы ваша SCADA ДОЛЖНА считывать уставку. Она на то и SCADA. И если этого кто-то не хочет делать или не может - это на ВАША проблема. Все верно Вам пишут сотрудники Сегнетикса. Подобная проблема у Вас будет с ЛЮБЫМ контроллером. Даже с теми у кого уставки хранятся и записываются и читаются в одной и той же ячейке. Даже если наладить тот механизм, который Вы хотите - коллизии будут возникать в дальнейшем.

p001p
21.09.2017, 18:44
Это же неправильно! Для нормальной работы системы ваша SCADA ДОЛЖНА считывать уставку. Она на то и SCADA. И если этого кто-то не хочет делать или не может - это на ВАША проблема. Все верно Вам пишут сотрудники Сегнетикса. Подобная проблема у Вас будет с ЛЮБЫМ контроллером. Даже с теми у кого уставки хранятся и записываются и читаются в одной и той же ячейке. Даже если наладить тот механизм, который Вы хотите - коллизии будут возникать в дальнейшем.

Я сейчас ругаться начну. :crazy:

Нету никакой СКАДА в привычном понимании что вы думаете. Нету клавиатуры, мышки, системного блока, монитора и секретарши за дверью!

С контроллерами Unitronics, Siemens, Carel таких проблем я не видел.

Я понял что подобное не сделать на ПЛК Segnetics. Оборудование будет возвращаться и закупать новое.

Gromov
21.09.2017, 18:46
А что у вас есть вместо скады?

Gromov
21.09.2017, 18:51
В trim5 и smh4/smh2gi можно разрулить так:

1. скада (или что у вас там, будем называть скадой) пишет "30".
2. Контроллер прочитал "30", сохранил уставку и писанул сам себе "-500".
Контроллер знает, что значение "-500" - это специально. Поэтому он не сохраняет такую уставку. Писать самому себе через localhost можно.
3. Можно менять уставку с контроллера, в регистре модбаса будет "-500".
4. Вдруг оживший оператор снова меняет уставку со скады. Или хочет вновь прописать "30". Тогда он заходит, видит на экране "30", открывает редактирование, тыкает "подтвердить".
5. goto 2.

младшой
21.09.2017, 18:58
Очень переоценена.

Gromov
21.09.2017, 19:00
Я понял что подобное не сделать на ПЛК Segnetics. .

Оффтоп:

Есть такая история. Чтобы было проще - от первого лица. Как-то было мне лет 15, и сосед ножом из всяких палок и досок вырезал красивейшие фигурки. Надписи там всякие, брелки делал. Картины даже маленькие резал. Я пробовал - у меня не получалось. Я смотрел, как он работает и заметил, что у него очень удобный нож. Нож этот, стоит заметить, и правда был специальный, для резьбы по дереву. Немного поторговался и я купил у него этот нож. Но как же было грустно, когда я узнал, что не в ноже дело и что хорошим ножом у меня тоже не получается ничего... Сосед потом новый нож купил, ещё более хороший и удобный, а я так и не стал мастером резьбы по дереву.
----

Arsie
21.09.2017, 19:14
Очень переоценена.

Бестолковый пост, т.к. задачи человека мы до сих пор не знаем.

Мы всего лишь знаем, что человек не может решить свою задачу выбранным им способом, а человек не может понять, что задачи решаются разными способами. Нет одного единственно верного и возможного.

p001p
21.09.2017, 19:16
Оффтоп:

Есть такая история. Чтобы было проще - от первого лица. Как-то было мне лет 15, и сосед ножом из всяких палок и досок вырезал красивейшие фигурки. Надписи там всякие, брелки делал. Картины даже маленькие резал. Я пробовал - у меня не получалось. Я смотрел, как он работает и заметил, что у него очень удобный нож. Нож этот, стоит заметить, и правда был специальный, для резьбы по дереву. Немного поторговался и я купил у него этот нож. Но как же было грустно, когда я узнал, что не в ноже дело и что хорошим ножом у меня тоже не получается ничего... Сосед потом новый нож купил, ещё более хороший и удобный, а я так и не стал мастером резьбы по дереву.
----


Слишком самоуверено звучит у вас.
Чтобы решить данную проблему мне надо обращаться куда?
Вот есть устройство. Есть форум с технической поддержкой этого устройства. На форуме мне рекомендуют использовать ДРУГОЕ устройство.

Ну и причем тут ваша история? Если контроллер, по аналогии с вашей историей - нож, то СКАДА - стул.
Может быть вам (3-ему лицу) поменять стул?

Я не знаю откуда сегнетикс берёт правила для своих ПЛК.
Вы сразу тогда пишите что продаете устройство и для реализации ВОТ-ТАКИХ ШТУК надо использовать ВОТ-ТАКИЕ ШТУКИ.

То у вас модбас произвольно закидывает значения в ячейки куда не обращаются, то у вас для реализации сквозной записи ячейки памяти надо скаду докупать... Чувствуете?

Arsie
21.09.2017, 19:18
Нету никакой СКАДА в привычном понимании что вы думаете. Нету клавиатуры, мышки, системного блока, монитора и секретарши за дверью!

А что есть-то? Я уже почти сутки потратил, чтобы узнать ответ на этот простой вопрос.


Я понял что подобное не сделать на ПЛК Segnetics. Оборудование будет возвращаться и закупать новое.

Звучит как разочарование информацией о том, что автобус не предназначен для перевоза молока. Вот только бабуси, возящие молоко в бутылках, об этом не догадываются и всё возят и возят его в автобусах.

То у вас модбас произвольно закидывает значения в ячейки куда не обращаются, то у вас для реализации сквозной записи ячейки памяти надо скаду докупать... Чувствуете?

Эти слова мне многое прояснили) Я понял вашу задачу - найти уязвимые точки и не обращая внимание на способы их обхода слить оборудование.

p001p
21.09.2017, 19:19
Бестолковый пост, т.к. задачи человека мы до сих пор не знаем.

Мы всего лишь знаем, что человек не может решить свою задачу выбранным им способом, а человек не может понять, что задачи решаются разными способами. Нет одного единственно верного и возможного.


Человек не может добиться решения задачи каким-либо способом по строго регламентированному оборудованию.
Так может просто признать тот факт что данную функцию контроллеры производства фирмы Segnetics не поддерживают?

Серьёзно, давайте подумаем как это реализовать если возможно силами ТОЛЬКО контроллера?
Если нет, напишите - нет, невозможно. Мы меньше времени потратим на возврат оборудования.

p001p
21.09.2017, 19:25
А что есть-то? Я уже почти сутки потратил, чтобы узнать ответ на этот простой вопрос.




Звучит как разочарование информацией о том, что автобус не предназначен для перевоза молока. Вот только бабуси, возящие молоко в бутылках, об этом не догадываются и всё возят и возят его в автобусах.

Набор задатчиков с маленьким экранчиком и большой кнопкой, ещё много маленьких кнопочек. Просят поправить тех. процес. Проблема в том, что слииииииишком большое расстояние между производством и зоной контроля, в результате чего, человек который контролирует процесс, по сигналу оборудования, задает уставку и жмет кнопку "ОТПРАВИТЬ", точнее, девушка мееееееееедленно нажимает эту кнопочку своим пальчиком.

А когда уставка пару раз не прошла, возник вопрос, к оператору, как так?! Почему не нажали?! Это же просто!?

Мелкий косяк, единичный случай, но его надо решить.
Весь комплекс контроля и диспетчеризации там и называют SCADA, извиняюсь что ввел в заблудение и вы подумали что там комп, мышь, среда разработки и проект в наличии.

Arsie
21.09.2017, 19:25
Человек не может добиться решения задачи каким-либо способом по строго регламентированному оборудованию.

Огласите регламент, пожалуйста.



Так может просто признать тот факт что данную функцию контроллеры производства фирмы Segnetics не поддерживают?

Какую функцию-то? Это как неженатому человеку говорить фразу "Вы перестали бить жену по утрам?". Нет у неженатого человека ответа на данный вопрос и быть не может.



Серьёзно, давайте подумаем как это реализовать если возможно силами ТОЛЬКО контроллера?

Я готов всеми силами подумать о том, как реализовать вашу задачу силами контроллера. Но задачу, а не конкретную хотелку.

p001p
21.09.2017, 19:26
Эти слова мне многое прояснили) Я понял вашу задачу - найти уязвимые точки и не обращая внимание на способы их обхода слить оборудование.

Мне надо дело сделать :)

Arsie
21.09.2017, 19:27
Набор задатчиков с маленьким экранчиком и большой кнопкой, ещё много маленьких кнопочек. Просят поправить тех. процес. Проблема в том, что слииииииишком большое расстояние между производством и зоной контроля, в результате чего, человек который контролирует процесс, по сигналу оборудования, задает уставку и жмет кнопку "ОТПРАВИТЬ", точнее, девушка мееееееееедленно нажимает эту кнопочку своим пальчиком.


Через что они общаются с контроллером? Эзернет, RS485?

Вы рассказываете, что управление только удалённое, в чём потребность локального изменения уставки?

Какие именно данные панельки с кнопочками отправляют контроллеру?

p001p
21.09.2017, 19:28
Через что они общаются с контроллером? Эзернет, RS485?

RS485 в качестве интерфейса, протокол modbus. Китайцы.

Задача/регламент/ТЗ в фотографии ниже.

Через что они общаются с контроллером? Эзернет, RS485?

Кстати, наткнулся на то, что в контроллере SMH2G(i) есть переменная mem.
Через неё нельзя? Заменить 2 контроллера я смогу из личных запасов.

Arsie
21.09.2017, 19:30
RS485 в качестве интерфейса, протокол modbus. Китайцы.

Задача/регламент/ТЗ в фотографии ниже.

Каким образом панельки образовали на RS485 мультимастерную сеть? Каково количество панелек?

Вы рассказываете, что управление только удалённое, в чём потребность локального изменения уставки?

Какие именно данные панельки с кнопочками отправляют контроллеру?

Кстати, наткнулся на то, что в контроллере SMH2G(i) есть переменная mem.
Через неё нельзя? Заменить 2 контроллера я смогу из личных запасов.

Этот контроллер в лоб подходит под вашу задачу. Решение уже было озвучено в этой теме.

p001p
21.09.2017, 19:32
Каким образом панельки образовали на RS485 мультимастерную сеть? Каково количество панелек?

Вы рассказываете, что управление только удалённое, в чём потребность локального изменения уставки?

Какие именно данные панельки с кнопочками отправляют контроллеру?

Я знаю о 4ех панельках. Доступ есть только до 2ух.
Связь скорее всего прямая т.е. Панель-ПЛК.
Отправляют 1 единственное значение.

Arsie
21.09.2017, 19:34
Я знаю о 4ех панельках. Доступ есть только до 2ух.
Связь скорее всего прямая т.е. Панель-ПЛК.
Отправляют 1 единственное значение.

Тогда откуда такие большие цифры на выходах блока Device(link)?

p001p
21.09.2017, 19:34
Каким образом панельки образовали на RS485 мультимастерную сеть? Каково количество панелек?

Вы рассказываете, что управление только удалённое, в чём потребность локального изменения уставки?

Какие именно данные панельки с кнопочками отправляют контроллеру?



Этот контроллер в лоб подходит под вашу задачу. Решение уже было озвучено в этой теме.

т.е. В пункте 2 как раз используется переменная mem? Есть ли примеры подобного решения?
В trim5 и smh4/smh2gi можно разрулить так:

1. скада (или что у вас там, будем называть скадой) пишет "30".
2. Контроллер прочитал "30", сохранил уставку и писанул сам себе "-500".
Контроллер знает, что значение "-500" - это специально. Поэтому он не сохраняет такую уставку. Писать самому себе через localhost можно.
3. Можно менять уставку с контроллера, в регистре модбаса будет "-500".
4. Вдруг оживший оператор снова меняет уставку со скады. Или хочет вновь прописать "30". Тогда он заходит, видит на экране "30", открывает редактирование, тыкает "подтвердить".
5. goto 2.

Arsie
21.09.2017, 19:37
т.е. В пункте 2 как раз используется переменная mem? Есть ли примеры подобного решения?

mem вообще для другого. Забудьте о них. Здесь контроллер обращается сам, как мастер, к себе, как к слейву.

p001p
21.09.2017, 19:38
mem вообще для другого. Забудьте о них.

А как тогда понимать "писанул сам себе"?)

Arsie
21.09.2017, 19:41
А как тогда понимать "писанул сам себе"?)


Теперь я всё вижу. Подсказанное мною решение оказалось верным. Если вы, конечно, очередной раз не "напутали" что-то. Те цифры, которые вы видите - обращение лоджика-отладчика к контроллеру. Если в вашей системе не будет постоянного запущенного лоджика в отладке, то всё будет работать правильно.

Вы же ведь ничего не утаили на этот раз, верно?:ico-butch

p001p
21.09.2017, 19:52
Теперь я всё вижу. Подсказанное мною решение оказалось верным. Если вы, конечно, очередной раз не "напутали" что-то. Те цифры, которые вы видите - обращение лоджика-отладчика к контроллеру. Если в вашей системе не будет постоянного запущенного лоджика в отладке, то всё будет работать правильно.

Вы же ведь ничего не утаили на этот раз, верно?:ico-butch

Или вы о TrmPacket?

Arsie
21.09.2017, 19:54
Или вы о TrmPacket?

Я о TrmPacket и о том, что ваша проблема уже решена. Если вы на этот раз сказали правду.

p001p
21.09.2017, 19:56
Я о TrmPacket и о том, что ваша проблема уже решена. Если вы на этот раз сказали правду.

Попробую реализовать сегодня!

M229
08.10.2017, 23:58
Здравствуйте! Не стал создавать новой темы, так как проблема p001p похожа на мою.

Есть Pixel 2511 (Slave) и TRIM (Master), стоит задача сделать возможным редактирование уставки в Pixel как из меню самого контроллера, так и удаленно с помощью TRIM. Прикрепленная схема из программы для TRIM работает большую часть времени хорошо, но в некоторых ситуациях наблюдается циклическое изменение уставки, которую устройства начинают "перебрасывать" друг-другу. Это наблюдается, например, если разорвать связь, изменить уставку на обоих устройствах, а затем восстановить связь. Подскажите, как обойти это жонглирование уставкой, да еще так, чтобы уставки Pixel были в приоритете при синхронном изменении. В SMArt для всех переменных выбрано "запись по изменению".

4486

Arsie
09.10.2017, 11:48
Здравствуйте! Не стал создавать новой темы, так как проблема p001p похожа на мою.

Вообще не похожа :giveup:


в некоторых ситуациях наблюдается циклическое изменение уставки, которую устройства начинают "перебрасывать" друг-другу.

Ответ во втором сообщении этой темы:



...есть понятие "блокировка обратной связи".

Другими словами, скада читает уставку, если уставка изменилась, некоторое время ничего не делает во избежании циклических прыжков между двумя уставками (так называемые "гонки"), затем записывает обновлённую уставку в переменную для записи.


Замените слово "Скада" на "Trim5" и ответ прямо дословно вам подойдёт.

Лечится очень легко.

Например, на стороне Трим5 переменную для передачи уставки делаете "однократной", т.е. задаёте период опроса, равный нулю. Далее на вход "^" этой переменной закидываете связь с выхода "~редактирование" этого экрана SMArt.

Всё, цепочка разорвана, прыжков не будет.

M229
10.10.2017, 15:47
Попробовал – все работает. Можно было бы и самому, конечно, догадаться. Спасибо за помощь! :lam1:

ReDVik
22.04.2020, 14:46
Попробую реализовать сегодня!

чем все таки закончилась история?

самое первое решение было верным?


Добавлено через 2 минуты


Вообще не похожа :giveup:




Ответ во втором сообщении этой темы:



...есть понятие "блокировка обратной связи".

Другими словами, скада читает уставку, если уставка изменилась, некоторое время ничего не делает во избежании циклических прыжков между двумя уставками (так называемые "гонки"), затем записывает обновлённую уставку в переменную для записи.


Замените слово "Скада" на "Trim5" и ответ прямо дословно вам подойдёт.

Лечится очень легко.

Например, на стороне Трим5 переменную для передачи уставки делаете "однократной", т.е. задаёте период опроса, равный нулю. Далее на вход "^" этой переменной закидываете связь с выхода "~редактирование" этого экрана SMArt.

Всё, цепочка разорвана, прыжков не будет.

тоже был замечен аналогичный "баг" с "гонками" между контроллерами, решалось действительно просто в слэйве делалась блокировка на повторное изменение значения в пару секунд, чтобы все устройства в сети успели подхватить измененную уставку.