Как выбрать из таблицы требуемое значение.
Re: Как выбрать из таблицы требуемое значение.
Мы будем переходить на v15, ещё подумаю, может дождёмся SP1. Но когда она появится, обязательно прыгаем на неё.
Re: Как выбрать из таблицы требуемое значение.
Коллеги, я что-то запутался, на чём и как это делается? Степ у меня полный, с SCL.
- Автоматизатор
- Профессионал
- Сообщения: 993
- Зарегистрирован: 09 окт 2012, 05:18
Re: Как выбрать из таблицы требуемое значение.
попробуй на нем написать для начала простое, типаdimon64 писал(а):SCL
Код: Выделить всё
"Table".Pressure[MW10] := MD100;
MD104 := "Table".Pressure[MW12];
Re: Как выбрать из таблицы требуемое значение.
Я так понимаю, без SCL не обойтись. Можно написать подробнее?Andrey.wys писал(а):В scl программа будет состоять из 3 массивов и 2-х циклов для определения номера элемента третьего массива.
-
- Любитель
- Сообщения: 70
- Зарегистрирован: 10 янв 2016, 00:35
Re: Как выбрать из таблицы требуемое значение.
Сейчас вам не готов написать программу, не на чем отладить.
Но выше вам уже все написали:
Берете 3 массива:
Заполняете их данными. Последние значения температуры и давления должны быть равны максимально возможному значению с датчиков
В первом цикле
Находим первый индекс. Во втором
второй.
И результат
В коде надо предусмотреть ошибки, инициализировать переменные и оптимизировать его(есть что).
См. http://samsebeplc.ru/Doc/Siemens/Berger ... trol_r.pdf
ЗЫ Не обижайтесь, но задачка для школьника.
Но выше вам уже все написали:
Берете 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: Как выбрать из таблицы требуемое значение.
Да я знаю, сын в школе подобные задачки решал. Но он информатику не очень любит, помочь не может, а я подобные вещиAndrey.wys писал(а):ЗЫ Не обижайтесь, но задачка для школьника.
вообще не изучал. В готовой программе ещё я могу покопаться, а вот самому что-то делать на SCL не приходилось. В любом случае
спасибо, буду разбираться.
Re: Как выбрать из таблицы требуемое значение.
Попробовал на 1200-м кусок программы сделать, что-то не работает. Чего не хватает?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Любитель
- Сообщения: 70
- Зарегистрирован: 10 янв 2016, 00:35
Re: Как выбрать из таблицы требуемое значение.
Я не работаю в TIA, но:
У вас должно быть 2 input переменных, 1 output.
Выложите исходник, там будет понятнее.
У вас должно быть 2 input переменных, 1 output.
Выложите исходник, там будет понятнее.
Re: Как выбрать из таблицы требуемое значение.
Заработало! При этом висит ошибка какая-то непонятная, контроллер в режиме RUN. Может кто подскажет, где собака порылась? Ну и при запуске симулятора программа падает, чего давно не случалось.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Любитель
- Сообщения: 70
- Зарегистрирован: 10 янв 2016, 00:35
Re: Как выбрать из таблицы требуемое значение.
1 и 2 массив увеличьте на единицу. Подумайте, что произойдет, когда i или j будет равно 5? Перечитайте мой пост, где я вам написал код.
Re: Как выбрать из таблицы требуемое значение.
Спасибо, я помню. Это тестовая программа, на самом деле таблиц несколько, они гораздо больше и разной размерности. Теперь надо усложнить задачу и выбирать табличное значение давления и температуры, ближайшее к показаниям с датчика.Andrey.wys писал(а):1 и 2 массив увеличьте на единицу. Подумайте, что произойдет, когда i или j будет равно 5? Перечитайте мой пост, где я вам написал код.
-
- Любитель
- Сообщения: 70
- Зарегистрирован: 10 янв 2016, 00:35
Re: Как выбрать из таблицы требуемое значение.
И всё-таки подумайте, почему программа падает и что за ошибка. У вас программа сравнивает i+1 элемент массива, которого нет, а должен быть. А по поводу ближайшего показания датчика - см формулу, которую вам написал Михайло.
Re: Как выбрать из таблицы требуемое значение.
"Моя" формула - это просто тупо усреднение по четырем ближайшим точкам. Необязательно к применению, но повысит точность.
Вы находите четыре значения i, i+1, j, j+1, между которыми находится искомая точка. Далее вы берёте значения четырёх ближайших точек, которые соответственно равны f(i,j), f(i+1,j), f(i,j+1), f(i+1,j+1) и подставляете это всё в формулу.
Особо нужно обрабатывать случаи, когда i и j выходят за пределы двумерного массива. Несоблюдение этого приведёт всё к той же ошибке, на которую жалуетесь: обращение к несуществующему элементу массива.
Вы находите четыре значения 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: Как выбрать из таблицы требуемое значение.
Программа падает потому что это TIA Portal, поделка для кружка "умелые руки", ну или в крайнем случае для автоматизации малой механизации. По поводу ошибки, да, ступил, сейчас всё OK, ошибок нет, но симулятор всё равно вылетает. Спасибо всем за помощь, пошел учить SCL, как выяснилось - вещь нужная.Andrey.wys писал(а):И всё-таки подумайте, почему программа падает и что за ошибка. У вас программа сравнивает i+1 элемент массива, которого нет, а должен быть. А по поводу ближайшего показания датчика - см формулу, которую вам написал Михайло.
- Автоматизатор
- Профессионал
- Сообщения: 993
- Зарегистрирован: 09 окт 2012, 05:18
Re: Как выбрать из таблицы требуемое значение.
Ну, еще немного от программиста зависит.dimon64 писал(а):Программа падает потому что это TIA Portal, поделка для кружка "умелые руки"
Re: Как выбрать из таблицы требуемое значение.
В данном случае ТИА Портал вылетает с ошибкой need to close. Не из-за некорректного кода.
- Автоматизатор
- Профессионал
- Сообщения: 993
- Зарегистрирован: 09 окт 2012, 05:18
Re: Как выбрать из таблицы требуемое значение.
Давно невидел такой штуки. Думал, что уже вылечили детские болезни.
С 300ом что? Когда снимают с продаж?
С 300ом что? Когда снимают с продаж?
Re: Как выбрать из таблицы требуемое значение.
Мне показалось, что они их 2024 или 2027 году прикроют. Ещё долго, но время летит быстро.
Re: Как выбрать из таблицы требуемое значение.
Я тоже так думал, однако нет... Ну да ладно, клепают по новой версии в год, к 20-й, наверное, всё получится.Автоматизатор писал(а):Давно невидел такой штуки. Думал, что уже вылечили детские болезни.
Re: Как выбрать из таблицы требуемое значение.
От программиста, который Портал писал? Тогда согласен. По уму, на кривые руки юзера Портала должен ругаться компиллятор, а не сама программа падать.Автоматизатор писал(а):Ну, еще немного от программиста зависит.dimon64 писал(а):Программа падает потому что это TIA Portal, поделка для кружка "умелые руки"