This is topic Языки программирования in forum Пользователи для пользователей at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/50/t/000064.html

Posted by Ольга1988 (Участник № / Member № 5428) on :
 
С помощью FBD моделирую сигнал, этот же сигнал мне нужно разложить в ряд Фурье. На каком языке программирования это лучше сделать?
И еще вопрос. Можно ли строить графики не от времени, а от какой-либо другой величины?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
В Trace Mode 6 нет штатных решений такой задачи.
Можно попытаться писать программу на языке ST. Или подключить внешнюю библиотеку, которая будет осуществлять разложение сигнала.
Однако, более рационально поискать какие-либо численные методы приближенного решения задачи.

Можно строить тренды типа "Тренд XY".
 
Posted by Ольга1988 (Участник № / Member № 5428) on :
 
А можно поподробнее про внешнюю библиотеку?
Я учусь в ВФ МЭИ, Trace mode 6.07, он у нас лицензионный, только вот номера лицензии не знаю.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
В разделе "Описание языка ST/Функции Техно ST/Внешние библиотеки" дана спецификация вызова внешних библиотек, написанных на произвольных процедурных языках и загружаемых в ОС.
 
Posted by Ольга1988 (Участник № / Member № 5428) on :
 
Здравствуйте. Для расчета коэффициентов ряда Фурье нужен интеграл, в языке FBD есть такой блок, но в языке ST можно создавать циклы, что тоже необходимо мне при разложении сигнала. Подскажите, можно ли как-то в ST извлекать интеграл или в языке FBD существует блок способный заменить цикл (то есть значение переменной менялось последовательно от 1 до N с шагом 1)?
 
Posted by Nico (Участник № / Member № 5342) on :
 
в языке FBD циклов нет
каждая отработка канала вызывающая программу может являться итерацией
 
Posted by NestorIT (Участник № / Member № 4337) on :
 
Реализовать на ST любым известным численным методом интегрирования:
Метод прямоугольников
Метод Эйлера
Метод Рунге-Кутта
и т.п.
 
Posted by Ольга1988 (Участник № / Member № 5428) on :
 
Ребят, подскажите пожалуйста, где ошибка:
PROGRAM
VAR_INPUT Доля_потерь : REAL; END_VAR
VAR_INOUT Трд : REAL; END_VAR
VAR_OUTPUT Потери_эл_эн : REAL; END_VAR

for Трд := 1 to 200 by 1 do
Потери_эл_эн = [ ( 974.64 ** 2 + 619.31 ** 2) / 384.51 ** 2 ] * Трд * 24 * ( 384.51 / 1.7 )* [ Доля_потерь + ( 1 - Доля_потерь ) * 1.2 ];
end_for;

END_PROGRAM

E0011: Синтаксическая ошибка
 
Posted by NestorIT (Участник № / Member № 4337) on :
 
Квадратные скобки
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Топик переносится в раздел "Пользователи для пользователей".
 
Posted by Ольга1988 (Участник № / Member № 5428) on :
 
PROGRAM
VAR_INPUT Доля_потерь : REAL; END_VAR
VAR_OUTPUT Трд : REAL; END_VAR
VAR_OUTPUT Потери_эл_эн : REAL; END_VAR
VAR_OUTPUT Потери : REAL; END_VAR

for Трд := 1 to 200 by 1 do
Потери_эл_эн [Трд]= ( ( 974.64 ** 2 + 619.31 ** 2) / 384.51 ** 2 ) * Трд * 24 * ( 384.51 / 1.7 )* ( Доля_потерь + ( 1 - Доля_потерь ) * 1.2 );
Потери = Потери_эл_эн [Трд];
end_for;

END_PROGRAM


Подскажите пожалуйста, в данной программе нужно задать Трд как одномерный массив, как это сделать?
 
Posted by NestorIT (Участник № / Member № 4337) on :
 
Или все-таки массивом должен быть Потери_эл_эн? Но в любом случае программы в ТМ, к сожалению, обмениваться массивами не могут (а иногда очень хочется), т.е. ни входы, ни выходы массивами сделать не получится.
 
Posted by Ольга1988 (Участник № / Member № 5428) on :
 
По задумке Трд - это время работы двигателя в сутках, а Потери_эл_эн - это потери электрической энергии,в кВт*ч, напрямую зависящие от Трд. Собственно хотелось бы выводить на экран количество прошедших дней, то есть Трд, и потери_эл_эн за прошедшее количество дней. Насколько я поняла если в программе написать просто Потери_эл_эн = ... , то будет считаться сразу сумма всех потерь за 200 дней.
 
Posted by Ольга1988 (Участник № / Member № 5428) on :
 
Ребята, подскажите, пожалуйста, как на ST сделать одномерный массив.
 
Posted by NestorIT (Участник № / Member № 4337) on :
 
Для локальных/глобальных переменных создаете так же, как и для аргументов: имя и тип данных, а в столбце [] пишите 1..200 (или 0..199 - как удобнее). Но сделать массив для аргументов программы - невозможно.
 


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2