PDA

Просмотр полной версии : Последовательный перебор значений



Вова13
09.09.2019, 20:15
Здравствуйте,попробую описать свою задачу.
В программе есть "Счет общий" ,счет ведется от 1 до 105,по этим числам в строке отображается клиент и номер датчика "D1..D105".
Также мне в эту строку нужно добавить значение с датчика .
Пример Такеда Предупреждение температура D15 = 25.4 °C.
25.4 это фактическая температура с датчика(с параметра который связан с ОПС сервером).
Эта температура так же должна чередоваться вместе с номерами датчиков и клиентами.
В момент когда счет будет 58,в тексте должен быть № датчика D58 и температура с датчика №58
В момент когда счет будет 98,в тексте должен быть № датчика D98 и температура с датчика №98 и т.д.
Вот поэтому мне нужно ,что бы на выходе программы было значение температуры с датчика и эти значения должны чередоваться.

Вова13
09.09.2019, 20:19
Вот как получилось организовать чередование клиентов через массив.(Каждый клиент соответствует определенному числу 1-105).
Чередование происходит простым алгоритмом ( ;Выход_Клиент_текст:=Текст_Клиент[Счет_общий];).
Вопрос: как вместо констант(текст в начальном значении массива) вставить переменные со значением температуры от датчиков?

44536

lara197a
09.09.2019, 22:35
В справке написано, как делается инициализация.
А практически через цикл FOR.
перебирайте номера от 1 до 105 и присваивайте значения датчиков переменным массива.
Периодически повторяйте цикл.
(С необходимой частотой обновления)

Вова13
10.09.2019, 10:07
В справке написано, как делается инициализация.
А практически через цикл FOR.
перебирайте номера от 1 до 105 и присваивайте значения датчиков переменным массива.
Периодически повторяйте цикл.
(С необходимой частотой обновления)
А Вы не могли бы ткнуть в то место, в справке, где описано как делается инициализация...?
Честно говоря ,я не понял то что Вы описали. Надеюсь прочитав в справке что то прояснится.
Спасибо.

lara197a
11.09.2019, 17:12
Справка- Содержание-Типы данных-Пользовательские-Массив.
Пример:
n:=0; (*Сбрасываю счетчик цикла*)
cN:=0; задаю диапазон для цикла от 0 до 29, всего 30 выполнить 30 раз. см. справку для FOR
nC:=29;
V:=30;

(*Инициализирую номера в массиве по событию (срабатыванию тригера)*)
R_TRIG_ini(CLK:=TRUE, Q=> );

IF R_TRIG_ini.Q THEN
FOR n:=0 TO 29 DO
L:=n+1;
ARX[L].Num:=L;
END_FOR
END_IF

Также присваиваются значения соответствующим переменным.