Вход

Просмотр полной версии : Чтение/запись из одного регистра



Николай_бел
14.10.2016, 10:55
В Овен ПЛК были созданны переменные: registr input module и registr output module с одинаковыми адресами. Постоянно происходит перезапись, что делать? В устройстве Universal modbus device перепробованны все режимы Work_mode: Poll time, change value, both, command. Считывается значение регистра только при Poll time.. Спасибо

Вольд
14.10.2016, 11:15
А в чем собственно проблема ?

Николай_бел
14.10.2016, 11:18
постоянная перезапись идет. Овен в связи с ПЧ. На ПЧ изменил уставку, а она пришла там (отличная от нуля) и сразу же перезаписалась в ноль

Вольд
14.10.2016, 11:50
постоянная перезапись идет. Овен в связи с ПЧ. На ПЧ изменил уставку, а она пришла там (отличная от нуля) и сразу же перезаписалась в ноль

Присвой то, что пришло из ПЧ тому, что передается в ПЧ.

Николай_бел
14.10.2016, 11:58
пробовал, все равно ноль

melky
14.10.2016, 12:01
Ваша программа явно переписывает значение в 0, надо флаг выставлять на сравнение, если изменилась, то записать в ПЧ, если не изменили, то не писать в ПЧ.

Вольд
14.10.2016, 12:08
пробовал, все равно ноль

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

Николай_бел
14.10.2016, 13:13
Надо ненулевое значение, пришедшее из ПЧ сохранить в промежуточной переменной, а затем переписать ее значение в регистр на запись в ПЧ. В промежуточную переменную надо переписывать только не нулевые значения, пришедшие из ПЧ.

Это тоже пробовал. Но она даже в промежуточную переменную не присваивает. Ну по крайней мере в Подключении не видно

Вольд
14.10.2016, 13:15
Это тоже пробовал. Но она даже в промежуточную переменную не присваивает. Ну по крайней мере в Подключении не видно

Что из ПЧ кроме 0 ничего не приходит ?

Николай_бел
14.10.2016, 13:15
Изменяю значения в ПЧ, на экране норм, пара секунд и обнуляется в контроллере. При Poll Time раз 10 вводишь тогда может изменится при подключенном к компьютеру контроллере в режиме отладки

Николай_бел
14.10.2016, 13:16
Что из ПЧ кроме 0 ничего не приходит ?

Если удалить переменную output regist - то все замечательно приходит

Николай_бел
14.10.2016, 13:19
Странно, но почему когда в свойствах Universal modbus device Work_mode меняешь на Change value, registr input value всегда равен 0, хотя этот регистр с некоторым значением

Вольд
14.10.2016, 13:19
Если удалить переменную output regist - то все замечательно приходит

Программу свою выложи с промежуточной переменной.

Вольд
14.10.2016, 13:21
Параметр «Период опроса устройства, в мс» (Polling time) сколько у тебя стоит ?

Николай_бел
14.10.2016, 13:22
Программу свою выложи с промежуточной переменной.

Ust_Pch1:=WORD_TO_REAL(P5_00r1)/100;

IF Ust_Pch1<>Ust_ACI THEN
Ust_ACI:=Ust_Pch1;
Z_ch1:=P5_00r1;
Z_ch2:=P5_00r1;
P5_00wr2:=P5_00r1;
END_IF

Ust_Pch2:=WORD_TO_REAL(P5_00r2)/100;

IF Ust_Pch2<>Ust_ACI THEN
Ust_ACI:=Ust_Pch2;
Z_ch1:=P5_00r2;
Z_ch2:=P5_00r2;
P5_00wr1:=P5_00r2;
END_IF

Николай_бел
14.10.2016, 13:25
стоял стандарт, увеличил в 10 раз

Вольд
14.10.2016, 13:25
Ust_Pch1:=WORD_TO_REAL(P5_00r1)/100;

IF Ust_Pch1<>Ust_ACI THEN
Ust_ACI:=Ust_Pch1;
Z_ch1:=P5_00r1;
Z_ch2:=P5_00r1;
P5_00wr2:=P5_00r1;
END_IF

Ust_Pch2:=WORD_TO_REAL(P5_00r2)/100;

IF Ust_Pch2<>Ust_ACI THEN
Ust_ACI:=Ust_Pch2;
Z_ch1:=P5_00r2;
Z_ch2:=P5_00r2;
P5_00wr1:=P5_00r2;
END_IF

Лучше проект выложи.

Николай_бел
14.10.2016, 13:26
параметр ust_pch1 -промежуточная переменная
P5_00r1 - переменная input registr
P5_00wr1 - output
с одинаковыми адресами

Вольд
14.10.2016, 13:30
параметр ust_pch1 -промежуточная переменная
P5_00r1 - переменная input registr
P5_00wr1 - output
с одинаковыми адресами

После Ust_Pch1:= P5_00r1; надо проверять Ust_Pch1 на 0.

Николай_бел
14.10.2016, 13:32
Вот файл. Вольд, думаешь если проверить с 0 тогда она начнет присваивает не нулевые значения?

Николай_бел
14.10.2016, 13:34
Ust_Pch1:=WORD_TO_REAL(P5_00r1)/100;
IF Ust_Pch1<>0 THEN
P5_00wr1:=P5_00r1;
END_IF

Вольд
14.10.2016, 13:36
Вот файл. Вольд, думаешь если проверить с 0 тогда она начнет присваивает не нулевые значения?

У тебя Skype есть ? Сообщи в личку.

Николай_бел
14.10.2016, 13:37
Поставил проверку с 0, но все равно даже при Work_mode Poll time, change value ничего не пришло

Вольд
14.10.2016, 13:53
Можно сделать свой обмен с ПЧ через библиотеку (не использовать конфигуратор). Там будет полная свобода действий.

http://www.owen.ru/forum/showthread.php?t=13584