PDA

Просмотр полной версии : Как сделать импульсную запись в регистр, при определенных условиях?



Cinks
16.04.2021, 08:11
Задача:

Как сделать импульсную запись в регистр?

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

При этом при перезапуске скады, если в режиме простоя было изменено значения регистра opc, скада вновь запустившись не записывала предыдущее значение "сохраненного скада параметра/переменной" , а также не записывала значение 'по умолчанию' у "скада параметра/переменной"!?

Есть ли у вас мысли на этот счет?

Заранее благодарю вас за ваше время и переданный мне опыт!

!!MS4d!!

Cinks
16.04.2021, 11:44
Ребята, активней проявляйтесь!
Любые мысли...

b_aleks
16.04.2021, 12:50
Ребята, активней проявляйтесь!
Любые мысли...

Какие вам мысли нужны? Вешаете событие на кнопку, чтобы по клику мыши у вас устанавливался параметр. Задаете источник (параметр в дереве объектов) и приемник (канал в дереве системы, лучше через промежуточный параметр объекта). Если значения канала и параметра не равны, то произойдет запись по изменению.

Cinks
16.04.2021, 13:34
У "параметра", который устанавливает событие "клик мыши" нет значения по умолчанию? Начальное значение параметра дерева объектов связанного с регистром дерева системы запишется в момент перезапуска скады?

b_aleks
16.04.2021, 17:27
У "параметра", который устанавливает событие "клик мыши" нет значения по умолчанию? Начальное значение параметра дерева объектов связанного с регистром дерева системы запишется в момент перезапуска скады?

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

Cinks
16.04.2021, 19:58
Параметр никакое событие не устанавливает. И в момент запуска ничего не запишется. У вас событие называется "Клик мыши", значит действие (запись в регистр) выполнится только тогда, когда вы кликните мышью на кнопку, на которой у вас висит это действие, в остальное время ничего в регистр передаваться не будет.

Будьте внимательнее при прочтении.

Я говорю следующее:

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

1. У параметра есть начальное значение?

2. Это начальное значение всегда записывается при перезапуске?

3. Вы сами пробовали делать то, что советуете?

b_aleks
16.04.2021, 20:44
Вот вы событием "клик мыши" записали в параметр дерева объектов значение, этот параметр вы связываете с регистром дерева системы

Да никуда мы его ЕЩЕ не записали, и ни с каким регистром дерева системы мы этот параметр НАПРЯМУЮ не связывали.


При этом у параметров дерева объектов всегда есть начальное значение, и оно всегда записывается при перезапуске скады

Откуда такая информация? Никуда оно не записывается при запуске скады, если там запись не периодическая, конечно.


само событие "клик мыши" здесь пока не причем. Клика еще не произошло, но в регистр дерева системы при перезапуске улетело начальное значение параметра.

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


1. У параметра есть начальное значение?

Да, есть.


2. Это начальное значение всегда записывается при перезапуске?

Если запись не периодическая, то нет.


3. Вы сами пробовали делать то, что советуете?

Да, только что попробовал, все работает корректно.

Cinks
17.04.2021, 10:12
b_aleks, будьте добры объясните, что значат ваши слова: "Если запись не периодическая, то нет."

Вы можете указать где в свойствах параметра задается настройка записи "периодичность/не периодичность/еще что-то/прочее.."?

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

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

Настройки периодичности я обнаружить не смог. В связи с этим прошу вас указать на неё.

b_aleks
17.04.2021, 16:07
объясните, что значат ваши слова: "Если запись не периодическая, то нет."

Что тут объяснять? Если запись в модуль стоит не периодическая (т.е. по изменению), то ничего у вас записываться в регистр не будет, пока вы не измените его значение.


Вы можете указать где в свойствах параметра задается настройка записи "периодичность/не периодичность/еще что-то/прочее.."?

Данная настройка задается не в свойствах параметра, а в свойствах протокола и модуля.


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

Значит вы сделали совсем не то, что я написал. Тут делов на два параметра и одно действие кнопки, ошибиться просто негде.

Юрий Горелый
19.04.2021, 21:07
триггеры на окне
https://www.youtube.com/watch?v=ECbkXYifn70

RamesIV
10.11.2021, 12:05
Здравствуйте!

Схожий вопрос по разделению чтения/записи. Есть битовая маска,она принимается из регистра ModbusTCP в параметр, программно декодируется в битовые параметры 1,которые связаны с чекбоксами (у чекбокса это входящая связь) на форме. Исходящая связь - чекбокс - битовые параметры 2,Битовые параметры 2 программно упаковываются в параметр,значение которого передается в регистр. Проблема в том, что после запуска исполнения происходит запись в регистр пустой (0) битовой маски. Помогите решить проблему!

Stab
11.11.2021, 12:56
Попробуйте в свойствах программы - Способ исполнения сменить с периодического на По вызову. А в событиях чекбокса добавить клик мыши - вызвать программу. тогда она будет вызываться только по этому событию.

Так же можно использовать параметры не просто WORD а SYSTEM_DWORD_PARAM. (как у параметра, в который пакуются биты, так и у регистра Выход на стороне протокола ). У этого типа есть значение Value и признак качества StatusCode, когда он = 0 (то есть Good), то происходит передача. В программе пакующей регистр вы присваиваете значение Параметр 1.Value. По идее статус должен обновиться, но возможно еще понадобится его напрямую установить (Параметр 1.StatusCode = 0; )

Ну и в свойствах протокола выставьте способ записи - по изменению

RamesIV
12.11.2021, 07:59
Спасибо попробую.

Юрий Горелый2
12.11.2021, 13:27
у Протокола модбаса есть параметр
"Подключение по условию"
"Выполнение по условию"
и "способ записи".
при выборе первых двух
уже у модуля модбас добавляются два параметра " подключение по условию и опрос по условию"
которые создают у конкретного модуля модбас доп. параметры, изменяя которые можно управлять чтением и записью регистров.

Соответственно при выставлении этих параметров у модулей появляются дополнительные переменные,
при изменений которых вы можете управлять опросом по Modbus.