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

Автоматизация технологических процессов, системы управления, АСУ ТП, АСКУЭ, программирование ПЛК, человеко-машинный интерфейс, сетевое оборудование, протоколы

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

Сообщение Михайло » 12 янв 2018, 18:58

Мы будем переходить на v15, ещё подумаю, может дождёмся SP1. Но когда она появится, обязательно прыгаем на неё.
Михайло
Администратор
 
Сообщения: 3724
Зарегистрирован: 19 сен 2012, 19:16

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

Сообщение dimon64 » 13 янв 2018, 10:49

Коллеги, я что-то запутался, на чём и как это делается? Степ у меня полный, с SCL.
dimon64
Любитель
 
Сообщения: 49
Зарегистрирован: 12 мар 2015, 14:30

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

Сообщение Автоматизатор » 13 янв 2018, 11:42

dimon64 писал(а):SCL

попробуй на нем написать для начала простое, типа
Код: Выделить всё
"Table".Pressure[MW10] := MD100;
MD104 := "Table".Pressure[MW12];
Аватара пользователя
Автоматизатор
Профессионал
 
Сообщения: 942
Зарегистрирован: 09 окт 2012, 05:18

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

Сообщение dimon64 » 14 янв 2018, 21:44

Andrey.wys писал(а):В scl программа будет состоять из 3 массивов и 2-х циклов для определения номера элемента третьего массива.

Я так понимаю, без SCL не обойтись. Можно написать подробнее?
dimon64
Любитель
 
Сообщения: 49
Зарегистрирован: 12 мар 2015, 14:30

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

Сообщение Andrey.wys » 15 янв 2018, 09:34

Сейчас вам не готов написать программу, не на чем отладить.
Но выше вам уже все написали:
Берете 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
ЗЫ Не обижайтесь, но задачка для школьника.
Andrey.wys
Любитель
 
Сообщения: 50
Зарегистрирован: 10 янв 2016, 00:35

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

Сообщение dimon64 » 15 янв 2018, 10:07

Andrey.wys писал(а):ЗЫ Не обижайтесь, но задачка для школьника.

Да я знаю, сын в школе подобные задачки решал. Но он информатику не очень любит, помочь не может, а я подобные вещи
вообще не изучал. В готовой программе ещё я могу покопаться, а вот самому что-то делать на SCL не приходилось. В любом случае
спасибо, буду разбираться.
dimon64
Любитель
 
Сообщения: 49
Зарегистрирован: 12 мар 2015, 14:30

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

Сообщение dimon64 » 18 янв 2018, 10:05

Попробовал на 1200-м кусок программы сделать, что-то не работает. Чего не хватает?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
dimon64
Любитель
 
Сообщения: 49
Зарегистрирован: 12 мар 2015, 14:30

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

Сообщение Andrey.wys » 18 янв 2018, 12:34

Я не работаю в TIA, но:
У вас должно быть 2 input переменных, 1 output.
Выложите исходник, там будет понятнее.
Andrey.wys
Любитель
 
Сообщения: 50
Зарегистрирован: 10 янв 2016, 00:35

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

Сообщение dimon64 » 19 янв 2018, 11:31

Заработало! При этом висит ошибка какая-то непонятная, контроллер в режиме RUN. Может кто подскажет, где собака порылась? Ну и при запуске симулятора программа падает, чего давно не случалось.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
dimon64
Любитель
 
Сообщения: 49
Зарегистрирован: 12 мар 2015, 14:30

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

Сообщение Andrey.wys » 19 янв 2018, 11:43

1 и 2 массив увеличьте на единицу. Подумайте, что произойдет, когда i или j будет равно 5? Перечитайте мой пост, где я вам написал код.
Andrey.wys
Любитель
 
Сообщения: 50
Зарегистрирован: 10 янв 2016, 00:35

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

Сообщение dimon64 » 19 янв 2018, 11:56

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

Спасибо, я помню. Это тестовая программа, на самом деле таблиц несколько, они гораздо больше и разной размерности. Теперь надо усложнить задачу и выбирать табличное значение давления и температуры, ближайшее к показаниям с датчика.
dimon64
Любитель
 
Сообщения: 49
Зарегистрирован: 12 мар 2015, 14:30

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

Сообщение Andrey.wys » 19 янв 2018, 16:46

И всё-таки подумайте, почему программа падает и что за ошибка. У вас программа сравнивает i+1 элемент массива, которого нет, а должен быть. А по поводу ближайшего показания датчика - см формулу, которую вам написал Михайло.
Andrey.wys
Любитель
 
Сообщения: 50
Зарегистрирован: 10 янв 2016, 00:35

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 выходят за пределы двумерного массива. Несоблюдение этого приведёт всё к той же ошибке, на которую жалуетесь: обращение к несуществующему элементу массива.
Михайло
Администратор
 
Сообщения: 3724
Зарегистрирован: 19 сен 2012, 19:16

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

Сообщение dimon64 » 20 янв 2018, 00:08

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

Программа падает потому что это TIA Portal, поделка для кружка "умелые руки", ну или в крайнем случае для автоматизации малой механизации. По поводу ошибки, да, ступил, сейчас всё OK, ошибок нет, но симулятор всё равно вылетает. Спасибо всем за помощь, пошел учить SCL, как выяснилось - вещь нужная.
dimon64
Любитель
 
Сообщения: 49
Зарегистрирован: 12 мар 2015, 14:30

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

Сообщение Автоматизатор » 20 янв 2018, 07:32

dimon64 писал(а):Программа падает потому что это TIA Portal, поделка для кружка "умелые руки"

Ну, еще немного от программиста зависит.
Аватара пользователя
Автоматизатор
Профессионал
 
Сообщения: 942
Зарегистрирован: 09 окт 2012, 05:18

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

Сообщение Михайло » 20 янв 2018, 08:31

В данном случае ТИА Портал вылетает с ошибкой need to close. Не из-за некорректного кода.
Михайло
Администратор
 
Сообщения: 3724
Зарегистрирован: 19 сен 2012, 19:16

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

Сообщение Автоматизатор » 20 янв 2018, 09:54

Давно невидел такой штуки. Думал, что уже вылечили детские болезни.

С 300ом что? Когда снимают с продаж?
Аватара пользователя
Автоматизатор
Профессионал
 
Сообщения: 942
Зарегистрирован: 09 окт 2012, 05:18

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

Сообщение Михайло » 20 янв 2018, 10:20

Мне показалось, что они их 2024 или 2027 году прикроют. Ещё долго, но время летит быстро.
Михайло
Администратор
 
Сообщения: 3724
Зарегистрирован: 19 сен 2012, 19:16

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

Сообщение dimon64 » 21 янв 2018, 01:21

Автоматизатор писал(а):Давно невидел такой штуки. Думал, что уже вылечили детские болезни.

Я тоже так думал, однако нет... Ну да ладно, клепают по новой версии в год, к 20-й, наверное, всё получится.
dimon64
Любитель
 
Сообщения: 49
Зарегистрирован: 12 мар 2015, 14:30

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

Сообщение dimon64 » 21 янв 2018, 01:29

Автоматизатор писал(а):
dimon64 писал(а):Программа падает потому что это TIA Portal, поделка для кружка "умелые руки"

Ну, еще немного от программиста зависит.

От программиста, который Портал писал? Тогда согласен. По уму, на кривые руки юзера Портала должен ругаться компиллятор, а не сама программа падать.
dimon64
Любитель
 
Сообщения: 49
Зарегистрирован: 12 мар 2015, 14:30

Пред.

Вернуться в АВТОМАТИЗАЦИЯ

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 2