Разработка и применение пакета расширения Spektr_SM СВМ VisSim (1012865), страница 7
Текст из файла (страница 7)
Находим тйм перечисление: //((АРХ ВАТА(СУйшВш1об) вшпп( В)0 = П)0 ИЖМ ЛК% ); йейе ш шуВовЫе; 1в1 ш шу1пц СБЖп2 ш шуВЫпб; //') ')ЛРХ ВАТА н ййменаем ссс нй неречисленце". //((ЛРХ ВАТА(СУйшВ(й(о2) епвш ( 100 = 100 РОКМУ(К%' ); бевЫе д 1.; бовЫе б Т;йовЫй 4 2;4овЫе б 1е;ю1 д ВЛ21рн //((АРХ ВАТА Тйхим сбрййом, мы определлем переменные длй хрйненил йнй- чений пйрйиехров в диййосе до передйчи их й основнуш просрймму.
Теперь переходим в файл хйшйа(об,срр. Заменлем перечисле- //((АРХ ВАТА 1ЫТ(СУйшВ(а1о2) ш шу0овЫе 0.0; ш шу1п1 = О; ш шу81с(вб = Т('"'"»", //))АРХ 0АТА Р11Т //((ЛРХ ВАТА МАР(СУйпь1)1а!об) ВВХ Тех1(рВХ, 1ВС МТ ВОУВ1,К, ш туВопЫе); ВВХ Тех)(РВХ, П)С Мт 11хТ, ш )пу1пц; ВВХ ТехцрВХ, 10С МУ ЯТК1с16, ш шу$1с(пб); //ИАРХ ВАТА МАР нй перечисления: //((АРХ ВАТА 1)11Т(СУйш01й1о2) бовЫе б 1. = 3 боцЫе Й Т = 0.2; бовЫе д 2 И бовЫе Й Фе = 2"„1п1 д БА212 1; //))ЛРХ ВАТА 1М)Т О((АРХ 1)АТА МАР(СУзшР(а1ой) 00Х Тех((р()Х, 10С Х1, й Е); ППХ Тех((р()Х, 10С Т, г( Т); (ЮХ Тех((р()Х, ПХ' К.
д )г); 1ЮХ ТехЩЮХ, ЮС ТЗМА1.1, й (ей О))Х Тех((р1)Х, 11)С ХВЗ, г( ВА218); Д))АРХ 1)АТА МАР Таким ~браза~, мы устанавливаем начальные значения переменных в диалоге и определяем, какое поле соответствует какой переменной (например, поле с П) = 1ПС Х1 соответствует переменной д 1. и при и~менении параметров значение„введенное в это поле, будет сохраняться в указанной переменной). Отметим также„что для работы с параметрами в блоке в файле тв(.срр необходима: 1. Определить переменные, соответствуюп1ие параметрам в структуре ЗАРХХ1 1ХЕО, 2.
Константе ЗАРХХ1,1ХгО БТК задать в качестве значения строку, в которой перечислены типы переменных нз структуры ЗАРХХ1 1ХРО в соответствии с шаблоном: 1 — целое (!пФ); Р— с плавающей точкой 64 бита (64 Ы( Йоа(); 1 — с плавающей точкой 32 бита (32 Ыь Поа(); з — строка (вьг(пб); с — символ (сЬаг); Ь— байт(Ьу(е), 3, Написать обработку параметров в функция ЗАРХХ1РС.
4, Задать начальные аначения параметров а функции ЯЛРХХ1РС, используя передаваемую этой функцией переменную р1. Пример 1.13. Отредактировать файл гзйсрр под разрабатываемый диалог блока ЗАРХХ1, Ргюекие, Добавим параметры блока и создадим диалог для их изменения, Для этого найдем в файле твйсрр структуру: 1уребе1 а(гис( ( 1п( шу1п(; /У Айг) уоиг а(гис(иге соп(еп(в неге боийе шуОоиЫе; сйвг *3пу8(г;) 8АРХХ1 1ХРО; (уредеу а(гис( ( доиЫе 14 О Адб уоиг в(гис(иге соп(еп1в Ьеге дои)з)е Т; йоиЫе й; боиЫе (е; (п( ВА718;) 8АРХХ1 1ХГО; В этой структуре определнются переменные, в которых будут храниться значении параметров (Š— порядок усечення ДИПФ, "Т— постоянная времени апериодического звена; к — коэффициент Затем надо найти функцию 8АРМХ1Р1(ВАРгч(ч'1 1ХРО Фр() и добавить в иее следующую строчку: (ер1).ВАХ18 = 1; ("Р)).я 1," (ер)) Т = 0.2; (Вр))Л.
= 3; (ьр1)ЛВ = 2 Таким образом, задаются начальные значения параметров. Именно их будет использовать блок, если после его добавлении не вызывать аналог изменения парамет)юв. Далее находим функцию ВАРг)п)1РС(ВАРММ1 1(чРО "р(, )опй ВТПНСОНП(). Эта функпия вызывается прп щелчке правой кнопкой мыщи иа блоке в Окне модели т')В81пк Вамеиим ей*ело новым телом функнии: АРХ МА)(АОК ВТА'Щ А1НООИ(а((сМсз)п)е8(а(ВО ); СНМНВ)а)оя Фб)н) б)н = пезт СЩВНТЩВ)ОНО; й)и й 1, ж р(.); б)н-й Т=РЛ;й(ц-4 к =рь)цб)й-й «е .р)4е;сййч) ВАКИ рьВАХ)8; 0'00и-ВОМода)О- ЮСАг(СИ.) те(пгн 0; р)-Е ° Щ4 й; р(-Т= й)н й й рья .
0)(рй К рч(е «йн4 М'рьВАХИ = 0)0.4 ВАХИ) бе)е(е п)й; те(нгп 0 Ядесь мы сначала 'Обьявляем переменную типа диалога и создаем сзм диалог. Ватем записываем В его'переменные текущие значения параметров. Обрабатываем ситуапию, когда пользователь выбирает кнопку Сансе! (ничего не изменяется). Присваиваем параметрам значения„Введенные в диалОге„и уиичтОжаем диалог. Диалог создан. При формировании Проекта входу и выходу формируемого блока был присвоен тнп МАТК1)ь. Однако входу и выходу будет присвоен матричнын тин То~ько После некоторых изменений в файле тя'.срр.
Продемонстрируем внесение зтих изменений на примере блока ВАРЬ) Ы1, Пример 1.14. Отредактировать файл ть(.срр так, чтобы вход и выход блока ВАРХХ1 приняли матричный вид. Решение. В файле тв1.срр найти функцию ВАРХХ1Етеп( (Н1т'ХО Ь, 1п1 пгвй, 1тРАКАМ ттрагаш, ВРАКАМ 1рагаш). В ней найти следующий текст' К (рог( О) ге(пгп (ЕРВТК) ш()еаг(рог(-1 1(уре; // ге(ш и вса1ед ш( 1уре уог рог( -(рог1+1); // Неге Ы оп(рп(, хего Ьаве оп( рог( // 8е( веа1ей ш( гагйх Ю ( оп(1)евс(рог(),(уре == Т 8СА1 ЕО 1ХТ) ( оп(8)й=(816ХА(.е)г(нвввКсг(вжат'К 6ЕТ В(ОСК ОО)Р(Л;ЫосИ(ахвйе,Ох оп(818 +.= рог(, "оп(ИК-1уре =- Т 8СА(,ЕО 1ХТ; оп18(й-п.вса1ед(п1 гайхро(п1 - оп1Оевс(рогЦ.й(пг1; оп(Ид-п.вса1ейп1.погй1епй(Ь = оп(Оввс(рог().йгп2;) ге1пгп (1.РВТК)оп(Оввс(рог(1.(уре; и заменить его одной строкой: саве ЪУМ У8М 18 'т*ЕС СОХХЕСТ: // 8са1аг агй 1.
жМИх агй2 рог( = браганс и пгп ($.РВТК)(рог( = 1 ~ рог( -11//Хс(рйоа )хн( вон(рп( саве )т'М Ъ'8М А).1.0С 'т"гл,' ОСТРОТ: // Лйогм(е ша(г)х оп(рп( // Ове д(пгепвюпа о1 та(г(х оп (прп1 2 )п8)(( (816ХА(. РАК"')тмвипйецпе4( УК ОЕТ В1.ОСК )ХР()Т, ею ив, Ол 1Г(!п8(й(0(бг~% 1пиа10)-(уре жж Т МАТ ООИЦЕ) ( дип1 = (пИ810) плп-г(ип1; ппп2 ш8(й(0).п.шчйгп2; ) оп(8(й = (816ХА1, РАКе)тенипКег(пиг(( Ъ*:К ОЕТ В) О(Ж ОСТРОТ, (Раджа, 01 Маптх0ррвпип = (т'8 ВЕРО РЛИ")снввпйеппай( т'К ОЕТ В(ЙСК РАКАМ8, )Регат,й); оп1818(0),(уре Т МАТ ОООВЕЕ; оп(ВЦ0)плп = пм(йе()ес(вп(оп(8(й(\5плгь бип(,йгп21 // Айоса(е оп(рп( пмйтх Ьгеак; После етого вход и выход примут вид МАТК1К.
Чтобы работать с данным типом в нашей программе, необходимо добавить в ией функцию," допЫе егпхСЬес)г( МАТК1Х "т, ппяйпед )1, ппв1йпей 12) ( А88ЕКТ(11 тмВпг1); А88ЕКТО)2 ~~ 12 ш-й(|п2); ге1пгп Агп-о(()Ц + ()2) Ф п1-п(пъц;) бй и заменить функции: в(айс 1.РЯТК )пСхэ(ап1е)1) ("1пО"); Майе ).РВТК оы(СхМап1е(1)=("оп(0'"); 1уреде( Мгпс1 ( 'пй 1уре; 1п1 д)пз1; )п1 йш2Д АКО 0КВС; в1айс АКО 0ЕВС ш0еьсЦ ( (Т МАТ 0ОУВ1,К,1,16)): в(айс АКО 0КВС он10евсЦ = ( (Т МАТ 0ОЮВ1,К,1ЛО)); в(айс ш1 де(ВдоеИд(1.РАКАМ Ыос)сйапд1е) ( ге(ыгп т(вв1шйецыев((Ъ"К ОЕТ В).ОСК 10,Ыое)сйапд)е, О);) в1айс пй )пс1ндедрйе; Майе го)д рге6)ш1п(10 ( )пс1ыдедр(1е = О ) на функции: ав1айс МАТК1Х "РАВСА1, ша(Ке0ес1аге( МАТК1Х "ш, нпйбпед йш1, ппьдбпед йш2) ( ыпв)6пед )еп = йш1 "в(зео1(ш-д(О)); 11 (днп2) 1еп е - дпп2; ш = (МХГК1Хе)6геайоМ ш, в(зео1(МАТЕ)Х)+1еп); ш-йш1 = йш1; ш-д(ш2 = йп12; гМыгп ш;) Майе МАТК1Х "де(Ма(г(х( МАТК1Х "ш) ( ш1 а; 11 (ш) ге(ыгн 1п;,Ч А1геаду аВосМед п1 = шМКе0ес1аге( ш, 3, 3); П Айоса1е а 3х3 уо (а = О; а 3:а++) /,' 1п(йа1Ье опек оп йабопа1 МХ( ш, а,а) = 1; ге1пгп ш;) Майе ЛКО 0КВС )п0евсЦ = ( (Т МАТ 0ООВ).К,1 16)); Майе АКО 0КВС оп(0евеЦ = ( (Т МАТ 001)В).К,1„16)); Майе ш1 не(В)осИд().РАКАМ Ыос)сйапд)е) ( ге(пгп т)вв)шКецпев((Ъ'К ОКТ В).ОСК 10,Ыос)сйапд1е, О) ) Майе 1п1 (пс1ыдедр(1е; Майе тоЫ рге6)ш!п)1Ц ( (пс1ыдедр31е = О:) 1,7.!.5.
Формирование матра аной свлзи вход везход ло усеченной матрице ДНПФ элементарного ала талового звена Формируемый блок должен обеспечить выполнение операции свнзи зхол-зыхол. Это букет постигнуто только после релактироаанив некоторых функций пз файла тв).срр. Пролемонстрируем внесение этих измепепий нз примере блока 3АРЫЫ1. Пример 1.1б. Отредактировать файл тя.срр проекта блока ВАРХХ1 так, чтобы входной сигнал правильно преобразовывалса а выходной си~пал, Решение. Обработка входного спгиала и получение выходного происходит в функции ВАРХХ1(ЯАРХХ1 1ХРО "р),К)ОХА).
з(пВ(йЦ, В(ОХА1 он1В(йЦ). Разберем, что надо добавить в иее а данном случае. ( оздзем перемейные"ссылки нз матрицы входного н зыходио1'о сигналоа, далее работаем с нкмн: МАТК1Х "пйп1 =- (пВ(й(О)-н.пк МАТК1Х етОп11 = он1Яи(О),п.т; Выводим предупреждение в случае несоответствии размерностей входной матрицы порндку уссченил матрицы ДНПФ апериодичсского звона: (1((ерЦ,1. 1 пт)п1-йт1) ( МеззайеВох(Х1)1.1., Число строк должно равнлтьсн порлдку усечекин ДНПФ", "Еггог'*, МВ 1СОХЕККОК ~ МВ ОК); аезег((О);) Ма(пх (пО(пт)п)-й)гп1дп(п(-йпа2,0); Ма(г(х !п0(огб(го)п1-йт1, се11((йоойе)(пз1п).дпп2)~2.0),0); Ма(г(х АОн((("рЦЛ.,('рЦЛ,О)*, Ма(пх АОн(Гогб((ерЦЛ„нг1п1-пии2,0); Ма1г1х 1Ц("РЦЛ,(зрЦЛ„О)", Ма1г(х 12((арЦЛ.,("РЦ.).,ОК Ма(пх Р(("рЦЛ.
(арЦЛ.„О)," Ма(г1х АР((ерЦЛ.,("рЦЛоО); сп1р)х Т1; сптр1х йа; Присваиваем матрицу аходиого он~ нала вспомогательной матрнце 1п0. Доступ к элементам переменной типа МАТК)Х осу1цестзллетсл при поковки функции МХ: йийи( 1 = О; 1 1п1п1.а(Щ1,' 1++) йи(пи ):-" О„' ) га)п1-йга2; 1++) нзО((й) '- МХ(т1п1,1,) ); Колк выбрана дейстантельнал система базисных функций, то усеченную матрицу ДНПФ апериоднческого звена (фуикпнл зарпп1 из файла П()О ВАРХХ1,срр) умножаем на усеченную матрицу 11((ер(),ВА 218 ) б) (АОВ( Варпп1((ер()Л..("р().Т,(ер()Лс,(ер))ЛС, (ер().ВАЕ1В)еш0; 6Я()п( а = О; а т1п1-йш1; а++) (ог(ш( Ь'=" О; Ь пь(п1-йт2; Ь++) МХ(тОи(1,В,Ы = АОЩВ»(Ь3 ге(игп)» Дяя номяяехсиых систем базисных фуниций Входная матрица Образована ярияясыяаяием н мат)ише действитеяьной части усеченной матрицы НСХ Входного сигиаяа ее мнимой части. Поэтому сначада входная матрица привОднтся к номидеесиому Виду„а затем формируется усечсигщя матрица ДНПСР аяерноди 1есиого звена и умножается на уссченнуго матрицу НСХ входного сигнала, Результат этой операции — усеченная матрица НСХ Выходного сигнала преобразуется В две матрицы н я матрице дейстяитеяьнои части прицисыяается матрица мнимой части, а подученная матрица присваивается матрице Выхода: Ияе ( 11(1и1п1-йп~2 % 2 1 О) ( МСВВВВВВох(НЗЛЛ„ге)нсло етодбцов долзяио быть четным, "Вггог", МВ 1СО)ХКИВОК» МВ ОК); аа- аег((О)",» )ог(ш1 н = О; и ("р1)Л,; и++) ( Ци»(и( = 1» 11 = ВШЙ(("р))ЛС, ("РРСЦ; 'П =- соп1р1ех(1.0У(")и),Т,ОЬ 12 В + Т1е)1; 12 .
12лптегяе(); Ьа " сощр1ех((ер1).Ь„ОВ АР )шеТ1В12В11, "6и(1п1 1 = О; 1 нйп1-йиИ; 1++) (ог(ш( ) = 0; ) се11((йоиЫВ)(ш1п1-йгя2)~2,0)-10++) ( (1ВО(огб(1»(»»)-- СО1ир)ех(шО(1»(»»ЛВО(1»()+йоог((ооиЫВ)(ш)п1-йзп2)/2.0)1); » ш0(огб = АР" 1ВО(огб; 6и(ш( а =. О; а (ВРАЛЯ а++) йя(ш( Ь = О; Ь СВЩ(доиЫС)ОВЛВ1-йва2)/2.0).1; Ь++) (АОВ((огб(а»»Ь» = ()ВО(огб(а»»Ь»).гса1СЯ АОВ((огб(а»(Ь + ()оог((допЫВ) (т1п1-йш2)У2,0)» = ()п0(огб(айЬ»)Лша((();»(ог(ЬН ц = 0; ц ш1п1- йт1; ц++) (ог((п( ж = О; ж ж1п1-й1п2; В++) МХ(тОВ(1,ц,я) =- АОВИогб(ц»(тг»; ге(игп;» 1.Я. Формирование пП-файла блока н его включение н пакет расширении ЯреИг ЯМ+У)нЯ(ш+ЙИ Формирование проекта закончено.
Теперь надо созданную программу скомпилировать, выбрав пункт меню Впйй->Вп(Ы ЯАРХХзлШ. Если ие было ошибок при вводе, то в нижнем окне У1зпа1 С++ б появится сообщение: БАРХХ1.4И - О еггог(з), О агагп1пй(в)„а в папке ПРОЕКТ БАРХХ1 появится директория 1)еапя, в которой находится файла БАРХХх.д11. Для получения окончательной версии файл БАРХХ1лК1, которая не содержит отладочный код, в меню Вшй (построить) выбираем Бе1 АсИте СопИЕнгаИоп (установка активной конфигурации) и устанавливаем НГ(п32 Ке1еаве н п)юводим окончательнуээ компиляуию.