PDA

Просмотр полной версии : Ввод переменной с клавиатуры



Svorog
19.01.2017, 21:08
Добрый вечер, помогите пожалуйста решить проблему, необходимо ввести данные с экрана, на первой визуализации создать получилось, сделал переход на следующий экран, но там кнопки не работают, нажимаешь на прямоугольник появляется клавиатура, то потом при нажатии ок, не пропадает а просто сбрасываются значения и все виснет, что бы исключить неправильную последовательность действий я просто скопировал кнопку со всеми настройками и поменял в ней привязанную переменную, но ситуация та же самая... кто нибудь может прописать правильную последовательность действий или дать ссылку на документ в котором это есть?

Svorog
19.01.2017, 21:12
28810 вот скрин настроек кнопки

Евгений Кислов
19.01.2017, 21:21
Удалите действие для состояния OnDialogClosed - тогда все должно заработать.
Примеры работы с визуализацией приведены в документе СПК. Визуализация (ссылка в подписи).

Svorog
20.01.2017, 20:36
Удалите действие для состояния OnDialogClosed - тогда все должно заработать.
Примеры работы с визуализацией приведены в документе СПК. Визуализация (ссылка в подписи).

Евгений, убрал настройки для состояния OnDialogClosed и клавиатура стала закрываться, но не отображает состояние переменной, как это можно откорректировать?

Евгений Кислов
20.01.2017, 20:38
Что не отображает состояние переменной, прямоугольник? Вы привязали переменную к его параметру Текстовая переменная?

Svorog
21.01.2017, 13:57
Что не отображает состояние переменной, прямоугольник? Вы привязали переменную к его параметру Текстовая переменная?

спасибо, была привязана другая переменная, все заработало!

Svorog
21.01.2017, 14:35
подскажите ещё пожалуйста:
1. имею переменную dzad, тип реал, которую ввожу с клавиатуры на экране, так же имею кнопку управления вращением в котором с шагом 0,05 переменную dcor тоже тип реал, сверху и снизу над кнопкой управления вращения имею две кнопки "+" и "-" которыми хочу добавлять или вычитать к dzad переменную dcor, при этом к кнопкам "+" и "-" привязываю действие OnMouseClik выполнить STкод dzad:=dzad*dcor, но почему то не работает, что я делаю не так? в этом же разрезе вопрос при шаге 0,05 допустим после 0,4 начинает появляться хвостик в районе 5-6 знака после запятой, как от него можно избавится? в свойствах этой кнопки не вижу как уменьшить количество знаков после запятой.
2. Имею 2 кнопки "пуск" (открывает 3 эл. клапана) и "остонов" (открывает другой эл.клапан для вентиляции на 3 сек), как можно реализовать отключение кнопки "пуск" при включении "останов" что бы при этом при повторном (двойном) нажатии на "останов" "пуск" не включался?

Svorog
21.01.2017, 14:36
28834 вот скрин

Евгений Кислов
21.01.2017, 14:46
1. Где объявлены переменные? Если, например, в PLC_PRG, тогда надо так:

PLC_PRG.dzad:=PLC_PRG.dzad+PLC_PRG.dcor;

Для ограничения кол-ва знаков после запятой используйте форматирование: %.2f (два знака после запятой)

2. Возможно, не совсем понял вопрос, но можно же повесить на кнопку Останов код, который будет присваивать переменной кнопки Пуск значение FALSE.

Svorog
21.01.2017, 15:26
1. Где объявлены переменные? Если, например, в PLC_PRG, тогда надо так:

PLC_PRG.dzad:=PLC_PRG.dzad+PLC_PRG.dcor;

Для ограничения кол-ва знаков после запятой используйте форматирование: %.2f (два знака после запятой)

2. Возможно, не совсем понял вопрос, но можно же повесить на кнопку Останов код, который будет присваивать переменной кнопки Пуск значение FALSE.

1. да переменные были объявлены в PLC, сделал как Вы сказали все заработало, спасибо. а вот по поводу "%.2f" я все же не пойму куда их нужно вписать? вписал в строку числовой формат у меня наоборот появилось 6 знаков после запятой..
2. если на нажатие кнопки в свойствах настроить переключение на FALSE для переменной пуск, то при повторном нажатии я получается буду присваивать TRUE, так ведь?

Евгений Кислов
21.01.2017, 15:32
1. Формат указывается в параметре Тексты. На вашем скрине видно, что вы пропустили точку.

2. Вовсе нет. Если на кнопке висит код в стиле

PLC_PRG.xButtonPusk:=FALSE;

то при каждом нажатии на кнопку в данную переменную будет записываться FALSE и только FALSE.

Svorog
22.01.2017, 16:17
1. Формат указывается в параметре Тексты. На вашем скрине видно, что вы пропустили точку.

2. Вовсе нет. Если на кнопке висит код в стиле

PLC_PRG.xButtonPusk:=FALSE;

то при каждом нажатии на кнопку в данную переменную будет записываться FALSE и только FALSE.

Спасибо, откорректировал по вашим замечаниям, все заработало.

Svorog
24.01.2017, 20:48
[QUOTE=Евгений Кислов;234243]1. Где объявлены переменные? Если, например, в PLC_PRG, тогда надо так:

PLC_PRG.dzad:=PLC_PRG.dzad+PLC_PRG.dcor;

Евгений Кислов, прошу ещё немного подсказать решил доработать эти кнопки так что бы ею нельзя было увеличить значение если общее значение при сумме превышает "10" поэтому предположил что необходимо подкорректировать STкод таким образом :
if PLC_PRG.dzad +PLC_PRG.dcor <10 then PLC_PRG.dzad:=PLC_PRG.dzad+PLC_PRG.dcor;
end if; но эта кнопка перестала работать, при этом ошибок не выдает
и соответственно для кнопки которая уменьшает значение переменной что бы её нельзя было убавить ниже нуля;
if PLC_PRG.dzad >PLC_PRG.dcor then PLC_PRG.dzad:=PLC_PRG.dzad+PLC_PRG.dcor;
end if; но эта кнопка работает без ограничений то есть уходит в минус

Евгений Кислов
24.01.2017, 21:07
Код на кнопках точно именно тот, что вы привели?

Потому что end if; вообще не должно компилироваться - пропущено подчеркивание, точка с запятой лишняя. Т.е. должно быть так:



IF (PLC_PRG.dzad +PLC_PRG.dcor) <10 THEN
PLC_PRG.dzad:=PLC_PRG.dzad+PLC_PRG.dcor;
END_IF





По поводу кнопки уменьшения - проверьте знак, я в коде операции вычитания не увидел.

Svorog
24.01.2017, 21:45
Код на кнопках точно именно тот, что вы привели?

Потому что end if; вообще не должно компилироваться - пропущено подчеркивание, точка с запятой лишняя. Т.е. должно быть так:



IF (PLC_PRG.dzad +PLC_PRG.dcor) <10 THEN
PLC_PRG.dzad:=PLC_PRG.dzad+PLC_PRG.dcor;
END_IF





По поводу кнопки уменьшения - проверьте знак, я в коде операции вычитания не увидел.

извиняюсь за невнимательность подчеркивание пропустил в сообщении, проблема была в скобках о которых я забыл в программе( Спасибо, на увеличение программа заработала заработала, а на уменьшение все равно в минус уходит( код выглядит так:
IF PLC_PRG.dzad < PLC_PRG.dcor THEN
PLC_PRG.dzad:=PLC_PRG.dzad-PLC_PRG.dcor;
END_IF
в чем может быть причина?

Евгений Кислов
24.01.2017, 21:58
извиняюсь за невнимательность подчеркивание пропустил в сообщении, проблема была в скобках о которых я забыл в программе( Спасибо, на увеличение программа заработала заработала, а на уменьшение все равно в минус уходит( код выглядит так:
IF PLC_PRG.dzad < PLC_PRG.dcor THEN
PLC_PRG.dzad:=PLC_PRG.dzad-PLC_PRG.dcor;
END_IF
в чем может быть причина?

У вас сейчас в условии написано "если задание меньше корректировки, тогда вычитай". Но вам-то нужно, чтобы вычиталось когда задание больше корректировки.

Svorog
25.01.2017, 20:03
У вас сейчас в условии написано "если задание меньше корректировки, тогда вычитай". Но вам-то нужно, чтобы вычиталось когда задание больше корректировки.

да, сглупил, спасибо.