Перейти к публикации

Sinumerik 840D. Сравнение переменных. Алгоритм сравнения


Рекомендованные сообщения

Всем привет...

Вот всплыла задача, после измерений по циклам renishaw сравнить между собой несколько переменных, выбрать минимальную (или максимальную).

Задался вопросом. Если точек немного, две или три или четыре, проблема решаема достаточно просто. А вот если их, скажем 50, то нужно бы написать какой то алгоритм. как это сделал? Может кто подскажет чего... Все что нашел, это команда сравнения двух значений MINVAL. Этого мало.

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

 

R101...R199 - входящие точки
 
R100 - Параметр условия. В начале цикла необходимо приравнять единице. В условии WHILE приравниваем его к кол-ву сравниваемых точек.
Получаем такой кусок
R251 - Переменная - флаг.
R250 используется, чтобы не стирать снятые значения замеров в параметрах R101....R199
 
R251=1                           ;Условие для приравнивания параметру R250 значения первой точки. Флаг
R100=1                           ; Приравниваем единице, так как сравниваем первую точку.
WHILE (R100=50)          ; Условие, где параметр R100 равен кол-ву сравниваемых точек
    IF(R251=1)                 ;Если флаг установлен, то приравняй значение первой точки R101 параметру R250
         R250 = R101
         R251=0                  ;Сняли флаг
     ENDIF
     IF(R250>R102)          ; Сравнение первой точки со второй
          R250 = R102          ; Если первая точка больше второй, то приравнять R250 меньшему значению
     ENDIF
     R100=R100+1             ; Добавляем единичку для сравнения следующих двух точек 
     Здесь должно быть +1 к значению индекса R-параметра
ENDWHILE
 
Если задачу решать в таком виде, то необходимо переписать условие IF так, чтобы к индексу R-переменных добавлялась единичка и в последующем сравнении сравнивались бы следующие точки
 
Вопрос.. как задать, чтобы изменялся индекс R-параметра для того чтобы брались последующие точки?
Сильно не бейте! +) Спасибо за участие.
Ссылка на сообщение
Поделиться на других сайтах


Но что вот сделать для того, чтобы адрес R-переменных добавлялся на единичку более?

Можно читать R[5] это эквивалентно R5, и позволяет читать переменные как массив.

 

def int _i

R1=R100

For _i=101 to 150

  if R[_i]<R1

  R1=R[_i]

  endif

Endfor

; в R1 min R100..R150

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




×
×
  • Создать...