Страница 2 из 2

Re: Как выбрать из таблицы требуемое значение.

Добавлено: 12 янв 2018, 18:58
Михайло
Мы будем переходить на v15, ещё подумаю, может дождёмся SP1. Но когда она появится, обязательно прыгаем на неё.

Re: Как выбрать из таблицы требуемое значение.

Добавлено: 13 янв 2018, 10:49
dimon64
Коллеги, я что-то запутался, на чём и как это делается? Степ у меня полный, с SCL.

Re: Как выбрать из таблицы требуемое значение.

Добавлено: 13 янв 2018, 11:42
Автоматизатор
dimon64 писал(а):SCL
попробуй на нем написать для начала простое, типа

Код: Выделить всё

"Table".Pressure[MW10] := MD100;
MD104 := "Table".Pressure[MW12];

Re: Как выбрать из таблицы требуемое значение.

Добавлено: 14 янв 2018, 21:44
dimon64
Andrey.wys писал(а):В scl программа будет состоять из 3 массивов и 2-х циклов для определения номера элемента третьего массива.
Я так понимаю, без SCL не обойтись. Можно написать подробнее?

Re: Как выбрать из таблицы требуемое значение.

Добавлено: 15 янв 2018, 09:34
Andrey.wys
Сейчас вам не готов написать программу, не на чем отладить.
Но выше вам уже все написали:
Берете 3 массива:

Код: Выделить всё

P : ARRAY  [1 .. 16 ] OF //значения давления
   REAL ;   
   T : ARRAY  [1 .. 25 ] OF //значения температуры
   REAL ;   
   S : ARRAY  [1 .. 15, 1 .. 24 ] OF //значения веса
   REAL ;   
Заполняете их данными. Последние значения температуры и давления должны быть равны максимально возможному значению с датчиков
В первом цикле

Код: Выделить всё

FOR i := 1 TO 15 DO
IF pressure >= P[i] and  pressure < P[i+1] THEN
firstIndex:=i;
EXIT;
END_IF;
END_FOR;
Находим первый индекс. Во втором

Код: Выделить всё

FOR j:= 1 TO 24 DO
IF temperature >= T[j] and  temperature < T[j+1] THEN
secondIndex:=j;
EXIT;
END_IF;
END_FOR;
второй.
И результат

Код: Выделить всё

residualPressure:=S[firstIndex,secondIndex]
В коде надо предусмотреть ошибки, инициализировать переменные и оптимизировать его(есть что).
См. http://samsebeplc.ru/Doc/Siemens/Berger ... trol_r.pdf
ЗЫ Не обижайтесь, но задачка для школьника.

Re: Как выбрать из таблицы требуемое значение.

Добавлено: 15 янв 2018, 10:07
dimon64
Andrey.wys писал(а):ЗЫ Не обижайтесь, но задачка для школьника.
Да я знаю, сын в школе подобные задачки решал. Но он информатику не очень любит, помочь не может, а я подобные вещи
вообще не изучал. В готовой программе ещё я могу покопаться, а вот самому что-то делать на SCL не приходилось. В любом случае
спасибо, буду разбираться.

Re: Как выбрать из таблицы требуемое значение.

Добавлено: 18 янв 2018, 10:05
dimon64
Попробовал на 1200-м кусок программы сделать, что-то не работает. Чего не хватает?

Re: Как выбрать из таблицы требуемое значение.

Добавлено: 18 янв 2018, 12:34
Andrey.wys
Я не работаю в TIA, но:
У вас должно быть 2 input переменных, 1 output.
Выложите исходник, там будет понятнее.

Re: Как выбрать из таблицы требуемое значение.

Добавлено: 19 янв 2018, 11:31
dimon64
Заработало! При этом висит ошибка какая-то непонятная, контроллер в режиме RUN. Может кто подскажет, где собака порылась? Ну и при запуске симулятора программа падает, чего давно не случалось.

Re: Как выбрать из таблицы требуемое значение.

Добавлено: 19 янв 2018, 11:43
Andrey.wys
1 и 2 массив увеличьте на единицу. Подумайте, что произойдет, когда i или j будет равно 5? Перечитайте мой пост, где я вам написал код.

Re: Как выбрать из таблицы требуемое значение.

Добавлено: 19 янв 2018, 11:56
dimon64
Andrey.wys писал(а):1 и 2 массив увеличьте на единицу. Подумайте, что произойдет, когда i или j будет равно 5? Перечитайте мой пост, где я вам написал код.
Спасибо, я помню. Это тестовая программа, на самом деле таблиц несколько, они гораздо больше и разной размерности. Теперь надо усложнить задачу и выбирать табличное значение давления и температуры, ближайшее к показаниям с датчика.

Re: Как выбрать из таблицы требуемое значение.

Добавлено: 19 янв 2018, 16:46
Andrey.wys
И всё-таки подумайте, почему программа падает и что за ошибка. У вас программа сравнивает i+1 элемент массива, которого нет, а должен быть. А по поводу ближайшего показания датчика - см формулу, которую вам написал Михайло.

Re: Как выбрать из таблицы требуемое значение.

Добавлено: 19 янв 2018, 17:03
Михайло
"Моя" формула - это просто тупо усреднение по четырем ближайшим точкам. Необязательно к применению, но повысит точность.
Вы находите четыре значения i, i+1, j, j+1, между которыми находится искомая точка. Далее вы берёте значения четырёх ближайших точек, которые соответственно равны f(i,j), f(i+1,j), f(i,j+1), f(i+1,j+1) и подставляете это всё в формулу.
Особо нужно обрабатывать случаи, когда i и j выходят за пределы двумерного массива. Несоблюдение этого приведёт всё к той же ошибке, на которую жалуетесь: обращение к несуществующему элементу массива.

Re: Как выбрать из таблицы требуемое значение.

Добавлено: 20 янв 2018, 00:08
dimon64
Andrey.wys писал(а):И всё-таки подумайте, почему программа падает и что за ошибка. У вас программа сравнивает i+1 элемент массива, которого нет, а должен быть. А по поводу ближайшего показания датчика - см формулу, которую вам написал Михайло.
Программа падает потому что это TIA Portal, поделка для кружка "умелые руки", ну или в крайнем случае для автоматизации малой механизации. По поводу ошибки, да, ступил, сейчас всё OK, ошибок нет, но симулятор всё равно вылетает. Спасибо всем за помощь, пошел учить SCL, как выяснилось - вещь нужная.

Re: Как выбрать из таблицы требуемое значение.

Добавлено: 20 янв 2018, 07:32
Автоматизатор
dimon64 писал(а):Программа падает потому что это TIA Portal, поделка для кружка "умелые руки"
Ну, еще немного от программиста зависит.

Re: Как выбрать из таблицы требуемое значение.

Добавлено: 20 янв 2018, 08:31
Михайло
В данном случае ТИА Портал вылетает с ошибкой need to close. Не из-за некорректного кода.

Re: Как выбрать из таблицы требуемое значение.

Добавлено: 20 янв 2018, 09:54
Автоматизатор
Давно невидел такой штуки. Думал, что уже вылечили детские болезни.

С 300ом что? Когда снимают с продаж?

Re: Как выбрать из таблицы требуемое значение.

Добавлено: 20 янв 2018, 10:20
Михайло
Мне показалось, что они их 2024 или 2027 году прикроют. Ещё долго, но время летит быстро.

Re: Как выбрать из таблицы требуемое значение.

Добавлено: 21 янв 2018, 01:21
dimon64
Автоматизатор писал(а):Давно невидел такой штуки. Думал, что уже вылечили детские болезни.
Я тоже так думал, однако нет... Ну да ладно, клепают по новой версии в год, к 20-й, наверное, всё получится.

Re: Как выбрать из таблицы требуемое значение.

Добавлено: 21 янв 2018, 01:29
dimon64
Автоматизатор писал(а):
dimon64 писал(а):Программа падает потому что это TIA Portal, поделка для кружка "умелые руки"
Ну, еще немного от программиста зависит.
От программиста, который Портал писал? Тогда согласен. По уму, на кривые руки юзера Портала должен ругаться компиллятор, а не сама программа падать.