Според действащите до края на 1990г закони, по специален закон всяко предприятие беше длъжно
да използва 1.3% от бюджета си за Развитие и Технологично Обновление (фонд РТО). Това включваше
само иновационната разработка - труд, материали за изработване на прототип, закупуване на техническа
литература, присъщи разходи за командировка и пр.
А след това изграждането на оборудване се финансираше отделно като капиталова инвестиция.
Mного често предприятията, които нямаха собствени ресурси за разработка на иновации (хора, материална база) правеха по- простички неща по линия на ТНТМ, но сериозните задачи възлагаха на Научно – Изследователският Сектор (НИС) при техническите университети (тогава ВМЕИ). И ВМЕИ-тата печелеха нелошо от това.
В програмите на НИС работеха и студенти. За това, което работехме почасово, според участието ни се заплащаше до половин минимална работна заплата на месец. Но за нас не бяха приоритет парите от тази дейност, а възможността да научим нещо повече от редовният курс на обучение, да правим реални неща и да придобием реален инженерен опит и практика.
Повечето от темите по НИС бяха интердисциплинарни и несвързани пряко с изучаваните от нас специалности и ни бяха наистина интересни. Всичко това носеше два много важни резултата:
Първо (което беше пряката полза) - Доста от нещата, които правехме бяха наистина
иновативни, като ние правехме разработките реализируеми с достъпната тогава за соц-индустрията
компонентна база.
Тогава Соц-лагера беше в полуембарго от страна на запада – ситуация, която е актуална и сега,
макар че в България произвеждахме електронни компоненти и платки наистина на световно ниво.
Понякога с разработките си заобикаляхме и патентни защити, които не биха позволили на индустрията
ни да произвеждаме и изнасяме копираме изделия защитени с авторски права.
И второ – (което според мен беше по- голямата полза) - че като вторичен продукт на
тази развойна дейност излизаха и обучени във всяко едно отношение хора (техническо, организационно,
административно), които да могат да я вършат - и преподаватели и бъдещи инженери. И това беше една
сериозна надстройка на образованието което получавахме. Ние придобивахе опит в реална развойна дейност,
работа в екип, конюнкурни и организационни знания, знания за финансирането на темите, за авторски
права...
Сега от курса, който изучавах (QA) научавам, че в повечето екипи в които съм участвал тогава, от
години методът на работа и организация на работа, макар и с размити граници е бил доста подобен на
KANBAN организация от Agile методите, но "обърнат наопъки" - ако някой изостава със задачата си -
другите участници (най - често преподавателите) му помагаха, за да не изостане тяхната работа,
коколкото тя зависи от изоставащият.
Oсвен това, тогава нямаше QA като роля и член на екипа, а първо всеки сам следеше за качеството на работата си
(White box testing), а след това и ръководителите на проекта и останалите членове на екипа.
Все пак тогава тия методи за работа и управление са се раждали или прохождали и ние не знаехме за тях.
Освен това нямаше и "вътрешна" документация (например за тестове и бъгове), но създавахме добра и подробна
външна конструкторска документация за индустриално производство. Продуктът ни обикновено беше действащ прототип
и папки с пълна документация за производство и поддръжка. В НИС рядко се произвеждаше повече от един екземпляр
- прототип.
Някой от проблемите които тогава решавахме, сега изглеждат тривиални и ги има решени като даденост във всеки
смартфон, или се продават готовни направени изделия и програми.
Според някой хора понякога в НИС преоткривахме топлата вода и велосипеда и имаше иронични подмятания от типа
"Те хората (разбирай на запад) това вече са го направили!" Направили, но ние решавахме практически проблеми как може
да се произведат изделия или оборудване с достъпната за наскомпонентна база (защото друга невинаги беше достъпна),
както и да може да се продава продукцията на нашите предприятия без чужди претенции за авторски права...
Години по- късно научавам, че в края на 80-те години, България е била на 5-то място в света по общ обем на производството и износ на радиоелектронни изделия. А как според Вас става това без разработки и развойна дейност? Голям дял от развойната дейност беше по НИС на 4-те технически ВУЗ-а в страната.
И aко сега някой гледа с насмешка на описаното по- долу над което сме работили - то нека опита да го направи
сам "от нулата" с компютър, ОС, програмни езици и знанията и интернет ресурса с които разполага към момента.
Но тогава Microsoft беше слабоизвестна у нас фирма чиито DOS (2.0, 3.3) все пак ползвахме, Стив Джобс беше младеж,
който едва ли все още беше сънувал смартфон, а по нашите земи нямаше интернет, откъдето да сваляме каквото си
искаме, наместо да го напишем сами. Имаше малко, но умно написани книги и едно списание "Компютър за вас"
откъдето научавахме повече как и защо се правят нещата, а не да ги копираме.
(Вече към края на 1990г някой хора започнаха да използват BBS, но при тогавашното нямане на компютри и дефицит на телефонни постове и това беше рядко срещана възможност. И да имаш - малцина други имат и няма кой знае какво и от къде да изтеглиш.)
Имахме интересни идеи и за лични проекти. И те бяха наистина интересни и правени "по любов". Но тогава
хората нямаха домашни компютри на които да работят и по ред причини нямаше как да имат. А в института, компютрите,
макар и разпределени по лаборатории бяха малко. Използвахме ги по договорка и заявка съвместно с преподавателите
като не оставаха без някой да работи на тях.
Тогава масово разпространените
компютри бяха ПРАВЕЦ 82 (на цената на половин нов лек автомобил) и Правец-16 - аналог на IBM XT (почти цял
автомобил).
И по поставените задачи по НИС и по лични проекти - най-често пишехме и обмисляхме софтуера вкъщи на хартия а в
института по най-бързият начин го въвеждахме (единият диктува, другият въвежда), разпечатвахме ако има къде - да
си го гледаме за грешки у дома и го тествахме когато можем, дори и през 15 минутните (тогава) междучасия, или
висяхме в залите за свободен достъп който все пак някой катедри предоставяха, записвахме се за радиолюбители, за
да имаме достъп до компютъра в радиоклуба (подпомаган от организация за съдействие на отбраната), където имаше
ПРАВЕЦ 82, предоставен от военните за ползване от членовете му. Нерядко оставахме нелегално или полулегално нощем
в института да работим в лабораториите, от които иначе легално имахме ключове за да работим денем по теми по НИС.
(Тогава още не се крадеше и контролът позволяваше студенти - ентусиасти и особено дипломанти към края на срока за
дипломна работа оставаха да работят нощем).
Аз участвах в работата по НИС в няколко катедри и работехме в различни направления. По стечение на обстоятелствата започнах и продължих работа по проекти, в които най – често се разработваха цифрови хардуерни устройства и заедно с това същият екип - най-често самите разработчици пишехме и софтуерът за това, кой каквото е конструирал - най-често докато се изработят по поръчка голите печатни платки, които като правило насищаше с компоненти, оживяваше и тестваше пак този, който ги е конструирал.
Упоменатите преподаватели с които сме работили са с тогавашните си научни титли и длъжности, като с някой през годините не съм имал повече контакти и не знам как са се развили в административно и академично отношение.
Разработки по НИС и лични проекти, по които съм работил:
• Термоконтролер за управление пещи в завода за стъкло в Белослав - 1987 г. (ръков. доц. инж. И. Атанасов,
гл.ас. инж. Д.Славов, ст.ас. инж. Г. Сотиров) кат. СТ ...
Базиран на процесор и периферия от фамилията 68xx на Motorola. Контролерът управляваще пещите чрез софтуерен ПИД регулатор.
На базата на шлосерските си умения аз извършвах помощни работи по изготвяне на кабелни форми, изчисляване на охлаждания и
изработка на крепежни и охлаждащи компоненти. Заедно с това се запознавах с микропроцесорната система, работата в екип
(в I курс).
Паралелно с това продължавах да се занимавам сам с програмиране като ползвах достъп до компютрите в лабораторията. Тогава се
задълбочих в числените методи като най - достъпен за момента "жанр", а впоследствие се заех с математическото моделиране и
започнах да се изучавам в "Теория на игрите".
• Комуникационна система за Управление на градския транспорт – ръков. доц.инж. И.Атанасов,
гл.ас. инж. Д.Славов, ст.ас. инж. Г.Сотиров) кат. СТ 1987-88г (Assembler 6800, 6502, Apple II Basic)
Всъщност от няколко години това се прави по европрограмата за „Интегриран градски транспорт” за проследяване на
единиците от общественият транспорт с GPS, усъвършенстване на управлението и оперативният контрол на транспортната
система и подаване на информация на информационни табла по спирките.
Преди няколко години искаха да слагат GPS даже по контейнерите за боклук в София, но в ония години нямаше достъпна
GPS технология за каквито и да било цели, но от друга страна не ни беше и нужен - градските автобуси се движат по
фиксиран маршрут, от който при нормална работа не е коректно да се отклоняват.
Системата предвиждаше изнесени по спирките или сградите до тях комуникацонни модули, които автоматично да обменят
дискретни съобщения с автобусите по радиоканал с обхват 30-50м - районите около спирките, а с диспечерският пункт
наземният модул на спирката да комуникира по некомутируема телефонна линия (твърда връзка, без номеронабиране).
По нея трябваше да се подава и информация на информационните табла на спирките за пристигащи автобуси и време до
пристигането им.
Тогава нямаше интернет, а решението да направим свой интерфейс за комуникация по некомутируема
телефонна линия по ред причини беше по-просто от използването на външни модеми ИЗОТ 8004Е, каквито вече се произвеждаха
у нас.
След като приближаващият до спирката автобус се свържеше автоматично с модула на спирката, модулът трябваше автоматично
да изгради комуникация по некомутируемата линия с диспечерският компютър и да докладва, а той да идентифицира автобусите
по ID на устройството в него, да регистрира пристигането на автобуса, запис в база данни за следене на маршрутите и с
възможност за изпращане на персонализирани или циркулярни (до всички) пейджинг съобщения до автобусите от диспечерският
център. Устройствата в автобусите бяха с модули от 16 бр. 7-сегментни индикатори, които изписваха 'течащи' надписи и се
наложи да се направи подпрограма на BASIC за диспечерската програма, който да транслитерира буквите в знаци на кирилица
или латиница, а съобщенията, които можеше да се изпращат бяха зададени в таблица порди ограниченият брой използвани
символи, за да има минимална смес между кирилица и латиница (шльокавица или маймуница), които да могат да се четат
смислено от водачите на автобусите.
Аз написах на асемблер за 6800 (СМ601) софтуерният протокол за управление на серийна комуникация на устройството през
ASIA (бълг. аналог СМ603), управляващо TTL токов интерфейс от фамилията 75XX за обмен по некомутируемата (без
номеронабиране) телефонна линия.
Не знам по какво той се различаваше коренно от протокола за обмен по радиоканала и защо не използвахме него.
Подобен софтуерен протокол по- късно срещнах в българските фонокартни телефони, където работих но не през токов
интерфейс, а там вече беше изграден софтуерен модем, макар и работещ на 300 bit/s срещу ИЗОТ 8004Е.
Наложи се поради заболяване на дипломант пак аз да напиша същият протокол за обмен и за диспечерската машина, но на
асемблер за процесор 6502.
Реално повече изучавах асемблера и как се тества модулна единица софтуер отколкото обема работа който свърших,
но вече пишех на асемблер (и то за два разнотипни процесора) и тествах написаното.
Работих и по диспечерската програма на Apple Basiс, която осигуряваше UI и командваше комуникационният модул и
комуникационният протокола, който писах. Темата остана недовършена, поради отказ от страна на "Градски транспорт" и
спиране на финансирането и.
• Програмен модул за интерфейсен обмен м-у едноплатков компютър и PC (отделно вграждаем програмен
модул в EPROM-a на едноплатков. компютър) за обмен между между PC, работещо с кросс асемблер и едноплатков компютър
за развойна дейност и обучение - рък. гл.ас. инж. Д.Славов, кат СТ 1988г - Assembler за 6800
Всъщност темата по която работеше екипа беше съвсем друга, но това, което поех като задача беше ценен инструмент
за работата по темата, за да могат бързо и лесно да въвеждат и тестват написаните от тях модули. Тя трябваше да се
направи възможно най-бързо, докато останалите от екипа разработваха техните частии да остане в "китчетата" като базов
инструмент.
Едноплатковите компютри с процесор 6800 на Motorola (бълг. аналог СМ601) бяха широко разпространени във ВМЕИ и
се използваха както за обучение по програмиране на асемблер, постановки за лабораторни упражнения, така и за развойни
дейности по каквито работехме по НИС. Бяха известни като "китчета", и на тях се работеше само чрез ръчно въвеждане на
програмите и данните в 16-тичен код.
Интерфейсът им беше клавиатура от 32 клавиша, 16 от които за 16-тични числа и 16
служебни, 16 бр. седем сегментни индикатора, сегментите на които се управляваха от софтуера, няколко PIA MC6821
(бълг. аналог СМ602) и няколко ASIA (СМ603) освен системните,които обслужваха клавиатурата и индикацията. Голяма екстра
беше че все пак имаха батерийка, която да удържа CMOS паметта с въведеният код. До тогава пишехме асемблерските програми
на хартия и ги асемблирахме ръчно. Сдобихме се с кросс асемблери за различни процесори, които бяха компилатори и даваха
програмен код за съответният процесор, но понеже нямаше комуникация между PC и едноплатковият компютър, изпечатвахме
машинният (шестнадесетичен) код за китчето и го въвеждахме ръчно.
Модулът който написах беше нужен, за да не се въвежда всяка програмна единца на ръка както до момента, както и за
улеснено тестване на програми при развойна дейност или препрограмиране на действащи индустриални устройства базирани
на същата фамилия, която беше разпространена, понеже компонентите се произвеждаха в България.
Целта беше код в "S" формат, изготвен от кроссасемблер да се прехвърля по стандартен сериен кабел от PC през COM
порт (RS232), какъвто имаше и "китчето". За по- лесно - чрез стандартна DOS-овска команда COPY - ( COPY име_на_файл >
[com1] или [com2] )
В "S" форматът кодът беше разбит по блокове. Всеки блок имаше начален адреси на разполагане в паметта, съдържание
и контролна сума на блока, но той идваше от файл, който кросс асемблера генерираше за печат и в него шестнадесеттичните
числа бяха заместени с ASCII кодовете с които да се изпечатват.
"Китчето" макар и модифицирано беше залегнало като база в мобилният и стационарният модул на задачата за управление
на моболният транспорт и пробите в лабораторията се извършваха на него, така че вече имах познания и опит и с него и
с писането на протоколи за обмен между устройства от предната задача. Дадоха задачата на мен, защото ръководителите
на проекта сметнаха че ще е полезно да доусъвършенствам опита си за бъдещо приложение наместо някой да "прохожда" в
материята. Освен това резултатът им трябваше БЪРЗО.
При стартиране от нейният адрес, моята програмка очакваше пакети инфорация през COM порта, синхронизираше се по
протокол с PC, получаваше информацията поблоково, прекодираше кода от ASCII формат в HEX код, формираше контролна
сума и я сравняваше с изпратената и при коректна транслация зареждаше изпратеният код в RAM-a на указаните в
блоковете адреси. След приключването на трансфера и зареждането "китчето" изписваше надпис за готовност и можеше
да се стартира заредената програма от началният и адрес. За улеснение бях направил програмката сама да намира от
кода началният адрес и да стартира заредената потребителска програма по подразбиране от него.
Съдържанието на EPROM-a на "китчето" го имаше дизасемблирано, но без коментари и трябваше да проуча как работи
системният му софтуер, защото някой подпрограмки ми бяха нужни (четена на клавиатурата, извеждане на течащи надписи
на 7-сегментните индикатори; прекодиране от ASCII в шестнадесетичен код и др)
В голяма степен трудността идваше от това, че EPROM-a (2 KB - колкото програмата "Монитор" на ПРАВЕЦ 82)
беше пълен с програмни модули от системен характер, писани разностилно - явно от различни хора и навярно в различно
време, с фиксирани начални адреси, които се ползваха и за системни цели и от различни потребителски програми.
И трябваше да се запази съвместимостта между системните и старите потребителски програми. "Китчетата" се ползваха в
много катедри, като имаха описание на системното им ПО.
Аз трябваше да разположа програмта си в оскъдно място в "дупките" между модулите на EPROM-a.
Докато работех по нея и я тествах разположена в RAM, а не в EPROM, нейният код се въвеждаше на ръка и се пазеше от
резервираното захранване от батерийка, а когато беше готова я прекомпилирах с адресите на които трябваше да е
разположена в EPROM-a и я дозаписахме.
• Хардуерно проектиране на разширителен модул - системен часовник за компютър съвместим на PC ХТ и адаптиране
на BIOS за него. - кат. СТ, ръков. гл. ас. инж. Д. Славов (Orcad 3.x, Protel PCB, Assembler 8086/8088) 1988г
Сега това устройство може да се види във всеки WINDOWS в Device Manager/ System Devices/ System Timer и
надали някой му обръща внимание като на всяка даденост, но IBM XT/ Правец 16 нямаха хардуерно устройство системен
часовник ( Programmable Interval Timer - PIT) и при включване винаги започваха да броят от 1.1.1980г И вмъкваме редове в
AUTOEXEC.BAT файла на DOS за задаване на дата и час, за да имат коректно време на запис файловете и някой
системни функции, които се емулираха софтуерно. Впрочем тогава у нас не бяха познати и ранните версии на WINDOWS.
След като се запознах с графичният редактор за печатни платки, аз проектирах ISA платка с PIT от фамилията 68xxx на
Motorola (защото такъв намерихме наместо предназначеният за целта I8253 PIT на Intel), наситих я с компоненти и я
оживих.
Имаше взет от другаде BIOS за PIT, но не беше за същият ПТМ и се трябваше да се адаптира за да се инициализира чипа и
да се генерират и обслужват прекъсванията както от I8253. Сложното беше, че трябваше да се запозная с 8086,
който беше нов за мен процесор и със съвсем друга концепция и организация на цялата процесорна система.
Беше интересно впечатлението от това да монтираш в PC разширителна платка, и да я пуснеш в действие която си
проектирал на същото това PC, на което беше адаптиран и BIOS-а на платката.
• Програма за реологичен анализ на скални материали ( Apple II Basic, Assembler 6502
– Правец 82 ) рък. гл. ас. Румен Цанев (сега доцент) кат. "Математика" за нуждите на Геолого -
Проучвателно предприятие - Варна 1987-88г (документирана - наградена с
диплом
на 3-то място в областта „Математическо моделиране” на републиканският кръг на студентска
научна сесия – форум за приложни студентски разработки
Съществуват геоложки методи за изследване на скални материали, които са евтини и служат за косвено
потвърждение на възможността или категорично отричане на възможността за съществуване на някой видове
залежи. Този дял от геоложките проучвания се нарича Реология.
Методът представлява проучване на деформационните свойства на скална проба от проучваното евентуално
находище, шлифова се до определени размери ( цилиндър с височина 70 мм и диаметър 36 мм). На нея се
монтират тензодатчици за измерване на линейните изменения в размерите на пробата и се натоварва на
натиск с хидравлична преса.
Kамъкът, макар и да е пословично твърд, в действителност далеч не е така и в резултат на натиска
той като всяко реално тяло има еластичност и се подчинява на закона на Хук, има си еластичен модул
на Юнг, а заедно с това в зависимост от предисторията (която се изследва) на скалата, се проявяват
и закъсняваща еластичност и вискозни процеси (слягане и остатъчна деформация).
Моята програма изследваше ръчно снетите от тензодатчиците данни за деформацията на скалният
материал, и през обемисти и трудоемки до тогава ръчни изчисления (в които се използваше много
математическа статистика) изчисляваха 14 реологични коефициента, които геолозите анализираха.
Като начало се запознах с методиката на изчисление и изчислих с калкулатор тестов приемр с реални
данни за запознаване и да имам някой ключови междинни резултати при тестването на програмният
продукт.
Когато започнахме разработката, само екип от италиански геолози бе започнал работа по темата, което
ние с научният ми ръководител Румен Цанев следихме през бюлетините и експрес журналите на патентното
ведомство и доста скоро изпреварихме италианският екип.
Предвижаше се като следващ етап (за което щях да съм особено полезен като специалист по електроника)
автоматизирано снемане на даниите от тензодатчиците, които трябваше да се свалят през времеви интервали в
минути изчислени по експоненциален закон от началото на натоварването и последните няколко измервания се
падаха нарядко и в странни времена от денонощието.
Но "Геолого проучвателно предприятие" не осигури финансиране за първият етап и го направихме на ентусиастки
начала, не намериха за нужно да финансират и автоматизираното сваляне на данните и ние не работихме по този
проблем. После дойде така наречената "демокрация" и проекта увисна. Интереса към него се върна в началото на
1991г, когато американска геолого-проучвателна фирма, търсеща петрол и газ в наши териториални води предложи
аналогичен софтуерен продукт за 90 хиляди USD (тогава тристаен апартамент в центъра на Варна струваше 3-5
хиляди $), но по ред причини не можахме да продължим проекта.
Просто информативно какви бяха другите наградени студентски разработки на този форум -
Първо и второ място бяха "Математически модел на изграждане на невронна мрежа и създаване на асоциативна памет"
и "Матем. модел на ембрионално развитие",
което илюстрира какви теми и ниво на подготовка за тях са имали макар и единици от студентите. Математическият
модел на невронна мрежа сега е в основата на "копаенето" на криптовалути.
• Текстов редактор за рутинна офис дейност за ПРАВЕЦ 82 - Личен проект 1988-89г
През годините така и не видях текстов редактор за Apple II / Правец 82 за офис текстообработка и изготвяне
на документи, какъвто беше MS WORD, а определено беше нужен и полезен. Идеята беше създаването на функционален
аналог на някогашният DOCS 2.0 за Правец 16, който пък беше аналог на ранна версия на MS WORD за DOS и насочен
към писане и автоматизирано оформление на протоколи от лабораторни упражнения или конструкторска и технологична
документация.
В него беше предвидено да изготвя автоматично рамки и антетки (Хедъри) на страниците от ASCII символи за
псевдографика, динамично да генерира хедъри с надписи в тях и номер на страница (печатаем или не), да
оставя в текста полета за фигури и графики и като далечна цел - да импортва графични обекти, каквито още
нямаше. В него вид би служил и за създаване на фирмени бланки и документи, но... тогава у нас още нямаше
и фирми. Интересно за мен беше изготвянето на цялостен концептуално завършен продукт за масова употреба от
потербители, които не са програмисти. Въпреки че и шрифта на Apple/ПРАВЕЦ и шрифтовете на тогавашните
принтери бяха monospace (с еднаква широчина на символите), беше предизвикателство и създаването на
алгоритъм, който да следи динамично дължината на реда в брой символи, обособен от ширината на мястото,като
се имат в предвид местата с включените полета за графични изображения ("обтичането" на обекти с текст по
време на въвеждането му или вкарване на поле за графичен обект във вече въведен текст - това, което сега
прави тагът "<float>" в HTML - Такава автоматична функция все още няма в MS WORD и
OpenOffice, а тогава аз съвсем нямаше откъде да я видя).
Взаимствах от списание "Компютър за Вас" алгоритъм за буквопренасяне, който да се съобразява с
фонетиката на сричките и да поставя тирета за пренасяне на правилните места в края на реда, като
го доразвих така, че в случай на корекция (и промяна на дължината на реда) на вече написан текст
да коригира динамично въведените буквопренасяния след мястото на корекция до края на абзац.
Беше предвидено внасянето на болдван и италик шрифт, които също щяха да променят дължината на реда
при разпечатване заедно с управлението на принтера, което да се вземе в предвид от програмата -
редактор и да се преизчислява печатаемата дължина на реда заедно с вместването на реда в рамка и
буквопренасянето, но поради липса на време не беше направено.
И така - идеята беше потребителят да се съсредоточи над това което пише (и което е основната му работа),
с отделяне на минимално внимание на подреждането и арнжирането на текста.
Антетките за хедъри и таблиците бяха от ASCII символи използвани за псевдографика. Предвиждах да
направя опция, с която да бъдат създавани както сега се задават или чертаят таблиците в MS WORD, но
поради липса на време създадох само 2 готови от ASCII символи като шаблони и един шаблон - правоъгълник
чиито размери обаче се дефинираха от потребителя за запазване на места за полета в текста за залепване на
хартиени графики и фигури, каквато беше практиката с документацията до момента. Графични формати тогава
все още не съществуваха. Във всеки случай не и за 8 битови машини. Или и да са били замисляни - ние не
знаехме за тях.
Поради липса на речникова база в електронен формат не беше предвиждана правописна проверка на текста, но
неправилно написаните думи създаваха проблем със сричко-пренасянето, като го правеха на неправилни места.
(Недовършен, макар и доста напреднал заради работа по други по- големи задачи, работени в съавторство.
• Програма за символно интегриране и диференциране и символна обработка на математически
аналитични изрази (извеждане на формули)(BASIC за Правец 82 - Личен проект в съавторство с К.Секов) 1988-89г
И двамата прекъснали по слаб успех работехме заедно.
Замисълът беше да се използва за обработка на аналитични изрази и извеждане на формули при изчисляване
на електромагнитни процеси и минимизиране на електромагнитният шум в силови DC-AC инвертори при преобразуването
на постоянно напрежение в променливо ~220V чрез стъпаловидната псевдосинусоида през трансформатора, а като
ширпотреба - в помощ на учебният процес.
И за двете цели за удобство на потребителите беше по- целесъобраазно входящите аналитични изрази да се
въвеждат от потребителя в диалогов режим (все пак написан на синтаксис на BASIC) през потребителският
интерфейс, а не да се редактират като редове-оператори в тялото на програмата както във всички видяни до тогава
от нас програми. След това скрито му добавяше номер на ред и имитирайки редактиране на програмата. през междинен
запис на дискета добавяше реда в тялото си като изпълним. Впоследствие по същият начин ракурсивно добавяше
изразите които се получаваха от предната операция ( опростяване на израз, интегриране, или диференциране.
Има едни формулки за диференциране на сложна функция от функция от типа u'(v(x)) = u'v + v'u и др.). Идеята за
саморедактирането на програмата дойде от един трик от книгата
"Листото"
на Боян Янков и Мишел Аврамов, който аз доразвих. Без него всъщност принципно нямаше как да стане
цялата обработка на аналитичните изрази и вмъкването на резултатните изрази в алгоритъма - това е изпълнимо
само за интерпретатори, какъвто беше на ПРАВЕЦ ][ (А сега и в Java Script и др. ПЕ )
В програмата имаше и модул за разлагане на произволни периодични сигнали в ред на Фурие (естествено не
само тривиалните) с цел анализ на хармониците, които внася инвертора в псевдосинусоидалното напрежение,
който извършва и анализ на остатъчните хармоници след филтрацията им от трансформатора на инвертора и
представя формално описание на резултата чрез аналитичен израз и табулограма на хармоничният състав.
А ранна версия на MatLab (на Хавайският университет) за аналитична обработка на математически изрази
видяхме едва година и половина - две по- късно (под DOS, естествено - Windows тогава все още беше просто
екзотична DOS-овска графична надстройка)
По- късната цел беше да се конструира и контролер, през който да сваляме автоматично точки от сигнала
(така, както се надявах да продължим с "Геоложки Проучвания"), и те да бъдат подлагани на анализ. На
практика това щеше да бъде хардуерно констриуране на цифров осцилоскоп и писане на софтуера му, като и
апаратната част и софтуера да работят в реално време. Година по- късно реализирах и това в Система за
снемане на индикаторна диаграма на дизелов двигател към катедра ДВГ
• Проектиране на цифров волтметър с АЦП СМ751 (изцяло хардуерен), работещ по метода на двойното интегриране. (Protel PCB) (1988-89г, кат. СТ, ръководители доц. инж. Атанасов, гл.ас. инж. Д. Славов Сега подобни, но компактни и с доста повече опции се продават на цена до към 20 лв с кабелите и батерията (което дава процентно доста от цената), но тогава просто нямаше. Целта беше да се създаде възможност за производство поне на малки серии за нуждите на лабораториите от нашата катедра и другитe катедри на института.
• Проектиране и изработка на механична конструкция, възли и механизми на ВЕИ 1988-89г - ПНИЛ по ВЕИ
- кат. АП, ръководител доц. инж. Т. Пазвантов
От първият си работен ден след конкурс за мястото, аз започнах като майстор -специалист - V-ти разряд
без изпитателен срок, без степени като "стажант", "Ученик" и пр. Най-високият беше VII разряд, до който за
изпит допускаха след 15 години непрекъсната работа по професията или 20 ако имаше прекъсвания.
Проектът включваше конструиране и якостно изчисляване и оразмеряване на възлите, анализ на натоварвания и
вибрации породени от механичната работата на ВЕИ, изготвяне на черновата за конструкторска и технологична
документация, изработка на някой металорежещи инструменти за изработка на механични елементи и възли и
специализирани инструменти за сглобяване на съоръжението, леярски модели за някой детайли.
Особенното в проекта беше, че по моя идея и без да давам обяснение кое защо е замислено по съответният
начин, замислих принципът на работа на повечето възли и механизми да позволява отделните машинни елементи
да бъдат произведени без изисквания за точност, което е еретична идея за машиностроенето. Целта на идеята
ми беше от една страна без изискванията за точност да се облекчи и поевтини серийното им производство.
От друга - като не се изисква точност - това да да компенсира износването на машинните елементи в
резултат на многогодишна работа, а с това да се поевтини поддръжката и да се удължи експлоатационната
годност на съоръжението, като се има в предвид, че подобни профилактики и ремонти изискват специализиран
кран, работи се на трудно достъпни места и др. неудобства и оскъпявания.
След като по настояване на ръководителя доц. Пазвантов избрахме корпуса на кулата да е пресечен конус от
4мм ламарина, аз направих математически модел на вибрациите, породени от въртящите се възли и обтичането
на лопатките на витлото и кулата за проверка или избягване на напрежения от стоящи вълни и умора на метала
в една точка или линия заради особености на заваръчната конструкция на корпуса. (Заваръчният шев обикаляше
конуса спираловидно и имаше опасност да се натоварват от вълните на вибрациите (падаща и отразена) определени
зони от него, от което да се появят пукнатини в заваръчните шевове и пречупване на кулата.)
• Система за управление на ветрено-енергийно съоръжение - в ПНИЛ по ВЕИ 1989г в Съавторство с
К. Секов - Apple BASIC, Асемблер 6502 за Правец82
Tази система трябваше да е проектира от други хора на по- късен етап, но ние самоволно се заехме с
нея на ентусиастки начала и когато на ръководителят на темата разбра, че я правим тя беше в такава
напреднала фаза и не си струваше да спираме.
По принцип икономически ефект от възобновяемите източници на електроенергия има само, ако те работят
паралелно с електроснабдителната мрежа чрез паралелно свързване към нейни съоръжения (към трафопост).
И когато има подходящи условия (вятър, слънце) подаваната от тях електроенергия води до понижена
консумация от подаваната от енергийната систерма към трафопоста електроенергия.
Вариантът със зареждане на акумулатори е абсурдно скъп, защото и акумулаторите са скъпи и с кратък живот,
скъпа утилизация на старите батерии, скъпи силови електронни преобразуватели (инвертори). И това
икономически би обезсмислило идеята за използването на тази енергия. Сега за политиците стана модерно
да говорят за електроснабдяване от гигантски акумулатори, но те явно не са наясно с материята.
При работа на такова съоръжение има два фактора, от които идва нужда механиката да бъде регулирана.
От една страна непостоянните скорост и посока на вятъра, а от друга страна променливата електроконсумация,
понеже електрическият генератор се явява (променлив) механичен товар на съоръжението.
Механиката се задвижваше от електродвигатели, управлявани от електроника и беше проектирана да може да
променя динамично ъгъла на атака на лопатките на витлото и азимута на остта на витлото така, че равнината
на въртене на витлото да е изложена срещу вятъра с максималната си проекция, а ъгъла на наклон на
плоскостите на лопатките на витлото да осигуряват оптималният въртящ момент.
Освен това поради особенности на конструкцията на витлото беше съвършенно недопустимо то да бъде обдухвано
отзад, защото тогава лопатките му щяха да се пречупят, а изработването и смяната им е сложна и скъпа.
На пръв поглед би било просто да се направи "опашка" на генератора като на ветропоказател. Но витлото за
125 KW беше с диаметър 20м със скорост на въртене по техн. задание до 120 об/мин и само трите лопатки на
витлото му тежаха малко повече от половин тон, роторът на генератора който то въртеше през редуктор тежеше
над 1300 кг, като се въртеше с до 1500 оборота в минута. При такива скорости и маси изчисленият жироскопичен
ефект би бил такъв, че за да се ориентира съоръжението по вятъра с опашка като на ветропоказателите, трябваше
опашка с голяма площ и дължина до 40м (при 20м височина на кулата на съоръжението), което беше технически
абсурдно. Още по- абсурдно би било за 50 метрова 3 мегаватова кула каквито тогава планираха, а сега строят
масово. Целта беше системата без съществена преработка да може да се използва и за по- мощни (и големи) ВЕИ.
Освен това се очакваше от поривите на вятъра конструкцията да се клати както ветропоказателите (подобни на
ефект на пререгулиране по диференциален закон на управление) и това да внася неточност.
И оставаше нерешен по механичен път въпроса за синамична промяна на ъгъла на атака на лопатките на витлото.
Имахме като даденост датчици за скорост и посока на вятъра, които аз вече бях изработил по заданието за
даденият етап на темата. Те бяха наградени със сребърна значка на всесъюзната изложба в Москва 1989г, но
ръководителят ни дори не ми каза за отличието, а научих за него от другаде. (Дефакто - макар и непризнат
съм носител и на такава награда.)
Анемометърът за измерване на скоростта на вятъра въртеше прозрачен оптичен диск с черни и прозрачни сектори,
а датчикът за посока на вятъра - диск с концентрични пътечки и разграфени така, че да формират 8 битов код
на Айткен за избягване грешката между две съседни състояния (ако в устройството попадне прах или влага и
оптичният диск се изпоти).
Ако приемем грешката от квантуване на две съседни стойности половин квант, то тогава имахме 512 нива на
квантуване на панорамата от 360 градуса и посоката се определяше с точност 360/256 * 2= 0.703 градуса
Сега такива датчици се предлагат в интернет за по 40-60 лв + доставката, но тогава малко западни фирми
произвеждаха такива, а от социалистическият блок - само един полски институт. А моите бяха с по- добра
чувствителност, впоследствие се оказа и с по- добра климатична устойчивост (влага, температури).
Принципът на работа беше следният:
Приемаме че нашето съоръжение е отправна точка. Вятърът има скорост (големина на скоростта) и посока
спрямо стационарната отправна точка и може да бъде представен като вектор в полярна координатна система
с център нашето съоръжение. Но векторът се явява и комплексно число в Декартовата...
Вятърът обаче представлява хиляди тонове въздух, който е механически инертен и поради собствената
му маса и триене в релефа и скоростта и посоката му не могат да се променят със скок.
Системата през равни интервали от време (20 сек.) снема показанията на датчиците, екстраполира в
реално време стойностите на скоростта и посоката на вятъра за след 20s и авансово задвижва ВЕИ за
отработване на необходимите екстраполирани корекции на азимута на остта на витлото и ъгъла на атаката
на лопатките за края на предстоящият 20 секунден период.
Независимо от големината на корекцията, тя се изпълнява с нужната за случая скорост за време, колкото е
периода на сканиране и екстреаполация (т.е. 20 сек), което предполага че би трябвало в почти всеки един
момент ориентацията и ъгъла на атака на лопатките да апроксимират оптималните според промените на вятъра,
ако нямаме в предвид времето за измерване и екстраполация.
Грешката внесена от времето за екстраполация и изчисляване на корекцията по нея трябваше да се коригира.
Управлението на двигателите се извършва от софтуера и програмируем хардуерен интерфейсен контролер, а
грешката от закъснението заради екстраполацията се коригирав изчисленията на софтуера, изчисляващ
екстраполацията.
Единствено при бурева ситуация (вятър над 20м/с) програмата не гонеше никаква оптимизация, а управляваше
съоръжението така, че само да се предпази от напора на вятъра за да се опази конструкцията. За целта
витлото продължаваше да се адаптира по посоката от която идва вятъра с ос срещу вятъра и лопатки посрещащи
вятъра с атакуващият си ръб - положение с почти нулев въртящ момент, макар и без да генерира.
Това също не можеше да се реши само чрез механика.
Приехме "на око" честота на сканиране и екстраполиране през 20 секунди с идеята машинното време за
изчисления на екстраполацията да заеме процентно малко време от периода между две сканирания, за
да не внася голяма грешка във времето за механично отработване на корекциите, които в началото на
всеки период корекциите бяха леко "форсирани" (диференциален закон на управление) за да се компенсира
времето за екстраполация от програмата и с това да се намали грешката. При всяка екстраполация
програмата извършваше и оценка на грешката между прогнозата и новата реална скорост и посока на
вятъра. И по- късно, когато системата влезе в действие при реални условия, получихме усреднено около 94%
съвпадение в екстраполираните точки на прогнозите с реалността и около 92% съвпадение на физическото
положение на кулата с реалният вятър, но без данни за междинни точки от движението на съоръжението до
екстаполираната точка и оценка на тоталната грешка.
Корекциите бяха малки като стойности, а сгъстявайки сканирането и апроксимирането на стойносто щяхме да
увеличим осезателно процента време за екстраполацията в рамките на един цикъл измерване - изчисление,
което усложняваше компенсациите на времезагубата от екстраполацията и навярно би повишило грешката във
физическото положение на кулата спрямо вятъра.
Резултатът надхвърли очакванията ни и по ред причини не сме се занимавали да го оптимизираме повече -
Още повече че вече не работехме там и нямаше как в удобно за нас време да ходим на ветреният полигон
при системата за проби.
Аз констриурах контролера за четене на информация от датчиците, написах на асемблер за 6502 модула за
четенето им и на BASIC екстраполацията. Камен беше специалност АП и беше голям фен на предмета
"Автоматизация и управление на ел. задвижванията", (който преподаваше ръководителят ни доц. Пазвантов)
Той конструира контролера, силовият интерфейс за управление и написа на асемблер подпрограмките за
управлението на двигателите през контролера, след като моите модули зададат екстраполираните стойности
за корекция.
Четенето на показанията на на анемометъра и "ветропоказателя" ставаше през PIA на отделен контролер със
собствена адресна дешифрация и таймер, който да задава периода за сканирането им, предизвиквайки прекъсване.
Към контролера добавих едно важно хардуерно разширение:
За да се застраховаме от зависване на софтуера и изгубване на управлението, доразвих адресната дешифрация и
добавих и втори хардуерен таймер, базиран на популярната интегрална схема 555.
Единият таймер чрез прекъсване предизвикваше четенето на датчиците през 20s.
Вторият - След зареждане и стартиране на ОС и програмата, тя променяше един векторен адрес за обслужване
на ресета и инициализираше контролера и PIA-то, да се запусне за изработване на единичен импулс за 20 секунди,
който по заден фронт на импулса през същото PIA да подаде заявка за прекъсване.
В хода на работа на програмата, тя в определени моменти от изпълнението си, макар и не през равни интервали
от време извършваше фиктивен запис в регистър на PIA-то и 20-те секунди започваха да текат отново. (Идеята
дойде от принципа на действие на стълбищният автомат)
Това налагаше "развързването" на двата таймера - понеже единият не броеше времето винаги през 20s.
Ако липсваше преинициализация, контролерът през PIA-то подаваше IRQ с който през промененият вектор адрес да
рестартира системата. При Правец 82 при ресет програмата си оставаше заредена в паметта и се предаваше
управлението в директен режим или на DOS ако е зареден.
Програмата правеше специални записи в неизползвани области от RAM паметта ( за да не пише на дискетното
устройство, понеже това би износило дискетата физичеки и създава предпоставка за краш на системата),
разпознаваше дали се стартира първоначално или се връща след загуба на контрол и установяваше ВЕИ
по различен начин до натрупване на данни и точки за екстраполиране за да влезе отново в нормалният си цикъл.
Забавно ми е да си спомням за самонагаждащата се система когато правя странички с респонсив дизайн. -
Самонагаждащи се машинни механични възли, корекция на геометрията на съоръжението...
Захранването на компютъра беше предвидено да е през инвертор от акумулаторите на съоръжението предвидени
за сервизни цели, и ги имаше като даденост в съоръжението. По принцип това захранване трябваше да е по-
надеждно поддържано от съвременните UPS-и за да не се допуснат щети по съоръжението в резултат на липса
на управление и обдухване на витлото откъм задната страна. Но докато имахме касателство към разработката,
това не беше изпълнено и компрометираше нашата система.
През 2008г (19 години по- късно) беше обявена тема за докторска дисертация за управление на ВЕИ към катедра
АП, но по ред причини тогава нямах възможност да работя по нея и да спазвам срокове, иначе бих защитил
докторат с нещо което вече съм правил.
Процесите с промянатa на вятъра освен инертността си са вероятностно предопределени от предишните състояния
на процеса и се наричат СТОХАСТИЧНИ процеси. Те се проявяват и в поведението на финансовите пазари и същият
математически апарат би могъл да послужи за автоматично изготвяне на краткосрочни прогнози и автоматично
закупуване и продаване на активи от програми - роботи в стоковите и фондовите борси при спокоен пазар когато
няма непредвидени събития обуславящи пазара (войни, други политически събития, природни катаклизми).
Сега от доста години в борсовата търговия се използват такива програми роботи, след като има среда за обмен
на информация за цени и пазари в реално време, каквато тогава нямаше.
• Разработване на стотици чужди курсови работи, проекти и дипломни работи (предимно срещу заплащане)
по ОЦМПТ, Мат. анализ - числени методи, предмети свързани с процесорни системи на спец. СОТС (предмета ООТ),
АП, Микроелектроника ( Assembler 6800, Fortran 77, Basic, Pascal и още доста) 1988-1992
Най-често пишех на ръка програмите. асемблерските ги асемблирах ръчно на хартия (и в час работехме
така), като от много работа бях научил наизуст и доста от шестнадесеттичните кодове на инструкциите на 6800 и
6502 и рядко ползвах таблицата, а отместванията изчислявах наум. Рутинно пишех така уверено, че с изключение
на един-единствен случай те тръгваха от пръв опит за въвеждане, стига опитът да е правилен.
Освен комерсиалната страна на въпроса, тази "ширпотреба" ми беше ценна че отигравах куп детайли - гъвкаво
алгоритмично мислене, запознаване с купища числени методи, изработване на алгоритми за намиране къде е
разположена полезната част от графика и изолирането и, автоматично премащабиране на графики с цел по-
ефектно визуализиране, (сега това го виждам по графиките на валутните курсове в някой сайтове),
смяна на базиса при изчертаване на екрана и принтиране (понеже координатите на точките на монитора се
падат в 4-ти квадрант, но с обърната абсциса), всевъзможни прекодирания, сортирания, действия с масиви,
"умни светофари". Често паралелно със заданието си поставях сам измислени от мен допълнителни изисквания
- за моя тренировка и самоусъвършенстване (и не на последно място за мое развлечение) - в рамките на едно
решение да напиша асемблерската програма с най-малко байтове, или да я минимизирам цялата или отделни
модули от нея в най-малко машинни цикли (машинни тактове), или най-малко редове на сорса, или асемблерски
програми, които вписват в тялото си кодове на инструкции и след това си ги изпълняват (но пък няма да
работят, ако са записани в EPROM), и пр.
Все пак гледах все пак да не правя неща, които очевидно не пасваха на нивото на подготовка на студента
за когото са (примерно изпозване на рекурсивни подпрограми което той не би могъл да разбере и обясни
на защитата). Винаги проектирах и хардуерните задания към курсовите работи, като обаче се придържах
предимно към цифрови. Не поемах ангажимента да изготвям "белова" оформена с рамки и "чисти" чертежи за
представяне понеже и беше нерентабилно, а поръчителят съвсем нямаше да се запознае със съдържанието на
курсовата си работа или проекта и просто нямаше как да ги защити.
Пък и би изглеждало странно да речем 1/4 или 1/3 от курсовите работи в някоя група да са написани с
един и същи почерк, а хората да не могат да обяснят как работят програмите и проектираният хардуер.
• Проучване на фабричните разпечатки на BIOS-а на IBM-PC и "монитор" на Apple ][ с цел "крадене на
хватки" (сега това е популярно като "усвояване на лайф хакове") 1990-91г от системното програмиране и
познания за организация на системата, специфични адреси, процедури и пр., проучване на работещ софтуер с цел
"адаптирането" му. И сега като видя в някой сайт интересен трик, надничам в кода как е направен или
какви разширения са използвани с цел бъдещо използване от мен.
• Сваляне на схемите на работещи устройства с цел копиране на изделията за различни цели
• Работа по написването на системният софтуер на едноплатков компютър за развойна дейност с процесор Intel 8085 за нуждите на развойно звено в "Електроснабдяване" Задачата поех аз заради натрупаният опит и знания за системният софтуер на аналогичният едноплатков компютър на Motorola и знанията за организацията на BIOS-a на XT и в Apple - "монитор" - Недовършен в напреднала фаза поради отпадане на необходимосттаи прекратяване на финансирането от "Електроснабдяване" - рък. гл. ас. инж. Д. Славов, кат. СТ 1989-90г
• Система за снемане на индикаторна диаграма на дизелов двигател за изследване характеристиките на
работа на гориво нагнетателната помпа на дизеловият двигател в опитната част към дисертация за "Конвертиране
на конвенционален дизелов двигател за работа с пропан-бутан" - дисертацията на рък. инж, гл.ас. Славчо Жечев
кат. ДВГ, лаб. "Гориворазпръсквателна апаратура" (1990г, р-л инж, гл.ас. Славчо Жечев, Apple BASIC, Асемблер
6502 за Правец82)
Индикаторната диаграма представлява графика от налягането в цилиндър на нагнетаталната помпа на дизеловият
двигател на всеки градус от завъртането на коляновия вал на двигателя. За конвенционален дизелов двигател това
са до 2000 оборота в минута, до 570 атмосфери налягане при впръскване. При високи налягания, обаче пропанфутанът
се свива, което променя количеството впръскано гориво. Освен това той е по- ниско калоричен, но по- лесно запалим
от дизеловото гориво и всичко това налагаше промени по нагнетателната помпа, които бяха обект на дисертацията.
До момента това се правеше на стенд, като системата получаваше синхронизация за градусите от завъртането и за
начало на оборот от оптични двойки, следящи перфориран диск монтиран на коляновият вал и запускаше осцилоскоп, а
от екрана на осцилоскопа се правеха снимки с лентов фотоапарат + цялата романтика по проявяването на снимките.
В новата система използвахме перфорираният диск, оптичните двойки и наличните датчици като даденост (а то други
варианти и нямахме), напрежението което даваше пиезодатчика монтиран в цилиндър на нагнетателната помпа като
сигнал, се съгласуваше през предусилвател и усилвател които инж. Жечев конструира, имайки опит от дотогавашният
си начин на работа с високоомният пиезодатчик, изискващ и особено високоомен вход на интерфейса, който снемаше
сигнала от него. Аз констриурах контролера с 12 битово АЦП СМ757 и специално разработената за целта аналогова памет
(Sample and hold) от дискретни елементи (ОУ, CMOS ключ, R-C група), управлявана по софтуерен път от PIA
(както контролера с таймерите в системата за управление на ВЕИ) и написах софтуера за управление на измерванията
и записване на резултата ( Асемблер за 6502 - ПРАВЕЦ 82), Впоследствие и модул на Apple BASIC, който да визуализира
графично резултата, да дава възможност за мащабировка и курсор-линия за посочване на интересни точки, визуализация
на стойности и поставяне на маркери. 1990-91г. По старият (фотографски) метод нямаше принципната възможност да се
получат точни стойности от графиката на диаграмата и по тях да се правят по- обстойни анализи. Пресмятаха ги по
деленията на екрана на осцилоскопа след оценка на мащабирането. Със системата, която направихме налягането се
получаваше в цифров вид като конкретна величина за всяка точка с оценка на грешката от квантуване по време и
даваше много повече информация.
Елементарните сметки показват, че при 2000 об/мин, един градус от оборота на двигателят се превърта за около 83
микросекунди. Бавният от днешно гледище Правчо с неговият 1 MHz тактова честота ( всъщност 1.017 за получаване
чрез делене на честота за видеоизхода) и алгоритъма на измерващата програма и хардуера на контролера можеше да
измерва при минимално време на цикъла сканиране - запис - ново запускане на аналоговата памет 47 микросекунди,
а за избягване на грешки - 53 микросекунди, с време между две сканирания за синхронизация 6 машинни такта.
Времето на цикъла сканиране-запис би позволило да се сваля същата диаграма при повече от 3500 оборота в минута.
"Правчо" се превърна в история, непозната за новото поколение IT специалисти, но дизелов двигател, работещ на
3500 оборота все още не е създаден...
• Програма - игра на покер с елементи на блъфиране (личен проект 1988-90г)
Програмата играеше хитро, но без да лъже потребителя, като обаче следи картите които са били обявявани и играни
(От 1996г в САЩ "следенето на картите" е забранено със закон).
Програмата анализира поведението на опонента, изчислява кои карти са в неизвестност (а те са в опонента или в
банката) и според преценката си изготвя математически модел модел на блъф.
В програмата се използваше вече доразвитата идея за вмъкване на програмни редове в програмата, като обаче
тя сама динамично си ги генерираше в процеса на изпълнение по своя логика и самомодифицираше алгоритъма си.
Сега такива възможности откривам в JavaScript, но за съжаление все още нямам голяма практика в писането на
JS и не съм опитвал дори и за свой тест да направя самомодифицираща се програма.
Имаше сериозни проблеми с анализа за премахване или игнориране на вече ненужни редове, поради което трябваше
всеки път да се стартира от едно и също начално съдържание, което беше проблем и цел на бъдещо алгоритмично
надграждане. Това правеше невъзможен и опит за втори блъф в една игра - наследяваха се стари модели базирани
на предишни ситуации а не бях доработил критерий за разпознаване на авто генерираните редове.
Програмата нямаше графичен интерфейс и визуализация на картите, а играеше с буквено - цифрени означения за тях,
като по ред причини не ми остана възможност да работя над графичен интерфейс и довеждането и до продаваема
компютърна игра. (1990г - букет от политически вълнения, стачки, купонна система за хран. продукти, режим на
тока, принудителна работа по строежи за изхранване). По принцип и особено на него етап това не ми беше и цел.
Целта ми беше формирането и доразвиването на поведенчески алгоритмичен модел, както и алгоритъм на "мислеща"
програма но по ред причини това не беше донаправено. Междувременно сорсът на програмата беше нелепо унищожен
- (намокрена от дъжд кутия с дискети с всички дотогавашни проекти).
• Разработка на датчици и централи за СОТ с цел започване на малък бизнес.
Използвахме разработки от курсовите си работи по "Осигурителна техника" от предният семестър, които доведохме
до реални изпълнения с достъпна за момента елементна база.
Бяхме импонирани от нашумялата тогава поредица от филми за Индиана Джоунс, където Инди се натъкваше на разни
хитроумни капани, а стандартни датчици за СОТ просто все още не се продаваха. Поне не в бившият соцлагер.
Идеята се обезсмисли търговски, но не и технически заради невъзможност да осигурим реакция по защита (посещение от
патрулка или друга физическа охрана) на обекта със задействан СОТ и финансова и законова възможност за поемане на
застрахователни ангажименти, което и обезсмисли по- нататъшната работа по разработките и изграждане на СОТ.
Все пак разработихме капацитивен датчик за присъствие със самокомпенсация на измененията от влагата във въздуха,
сензорна цифрова ключалка със time-out защита при сгрешен код в добавка при сгрешена цифра,сензорната част се
отцепваше и през нея при докосване се разреждаше кондензатор с малък капацитет, зареден от мрежата през диод
(310V по върхова стойност) - безопасно, но неприятно - колкото да възпрепятства посегателствата ,
инфрачервени датчици за пресичане на охранявана зона, защитени срещу "заслепяване" с лампа,
Централка за СОТ с възможност за оповестяване по телефонна комутируема линия с номеронабиране.
(съавторство с Атaнac. Собаджиев) 1990-91г
• Опит за създаване на система за гласово разпознаване на команди чрез автокорелационна функция и
самообучаване чрез съпоставяне на предишни изговори на командата. - Личен проект 1990-91г
За да бъде разпозната гласова команда, според теоремата на Котелников трябва да разполагаме с минимум 3 точки от най-високочестотният хармоник в разложението на сигнала в ред на фурие. При изговаряне сканираните точки от звука се запазваха в масив. При неколкократен изговор на една и съща команда по леко различен начин (желателно от различни хора) отделните изговори след нормиране по продължителност да се сравняват и така да се оформи звуков "профил" на командата, но с отчитане на изместването на честотният спектър на записа след разтягането или свиването на продължителността му във времето. Позвуков анализ със сравняване в правописна речникова база данни тогава по ред причини беше практически невъзможно - трудности с позвуковият анализ, (макар че вече имаше "говореща програма от Борислав Захариев" - тя беше насочена към синтезирането и извеждането на фонетични звуци, а не на разпознаването им), нямаше достъпна речникова база данни, а обемът памет и скоростта на дисковите операции при липса и на търсачки (всъщност нямаше интернет) правеха задачата принципно нерешима и без да говорим за разпознаване на говор в реално време. И сега гласовото разпознаване на смартфоните, след като се сканира и дигитализира аудиосигнала,работи само когато има връзка с интернет, по причина, че в самият апарат няма сериозен правописен речник база данни (е има заради Т9, но е доста беден), а алгоритъмът на разпознаване на думи със сигурност ползва през интернет роботи, работещи по алгоритмите на OCR програмите за разпознаване на сканиран текст.
(Всъщност това беше доработка на софтуера и контролера на системата за снемане на индикаторната диаграма от дизелов двигател и добавяне на софтуерни модули за корелационен анализ, понеже направеното по хардуера до момента се нуждаеше само малки добавки, за да може да се ползва за целта. Трябваше да се добави към контролера малък модул с таймер 555 (като в контролера за управление на ВЕИ), който след като бъде запуснат, чрез генерирана тактова поредица да синхрониозира сканиранията на точки, наместо импулсите от оптодвойките на диска, закрепен на коляновият вал. от системата за индикаторната диаграма на дизеловата помпа. А с таймерите вече имах практика.
По задачата, обаче имаше много сериозен технически проблем за разрешаване - липса на памет.
Ако за гласовите команди приемем за честотна лента стандартната телефонна лента (300 Hz-3.4 KHz, която е
най-тясната, с най-ниска горна гранична честота и най- нискокачествена от дефинираните и сега като стандартни), то
излиза че според теоремата на Котелников, за да свалим 3.4KHz с по 3 опитни точки в рамките на периода на най-високата
честота от сигнала, то за секунда запис трябва да извършим над 10 000 измервания. При 8 битово сканиране (което не е
толкова точно и създава възможност за грешки в разпознаването) това са малко над 10 килобайта за секунда, За 12 или 16
битово - двойно повече. И обработката на еднократно изговорена простичка команда с ниско качество на звука като HOME
(изчисти екрана) би било таванът на възможностите на Правец 82 (Apple][ ), който имаше малко под 48К програмно достъпна
памет, която се ползваше и за програма и за данни и съвсем пък нямаше да се съберат в нея и записани и съпоставими данни
от предни гласови сканирания. Явно паметта беше крайно недостатъчна. Само файла, който четете в момента
е поне двойно по-голям без картинките в него. Нямаше и алгоритми за аудио компресия, но и да имаше - те биха натоварили
процесора и биха били неприложими в реално време. Това наложи създаването на модул с допълнителна памет и контролер за
управлението й.
По конюнктурни причини нямах достатъчен достъп до компютър XT на който да работя. Под DOS можеше да се управляват едва до
640 KB памет, а доста от достъпните XT-та в института не бяха наситени с 640КB или 1 MB памет, а с едва 256 КB памет и това
слабо променаше нещата. Нямах и компоненти и време и пари за създаване на втори контролер - за XT, като се има впредвид че
и целта ми беше друга, а контролерът - инструмент за постигането и.
Проектирах модула памет с контролера за управление за ПРАВЕЦ 82, даже поръчах и ми изработиха печатната платка. Междувременно докато чаках да ми изработят проектираната гола платка и да набавя памет, бях написал софтуера за свалянето на гласовите команди и разпознаването им чрез автокорелационната функция, но до реализация не се стигна по финансови причини - нямах пари за паметите, макар че имаше от къде да ги купя.
Години по- късно научих, че по същото време Creativ Labs е създавал прототипът на неговият легендарен Саундбластер просто за да извлича звук или да получава звуков сигнал от микрофон, а екип от специалисти на Lotus-Intel-Microsoft е създавал модул памет и протокол за управлението й станал известен като LIM стандарт за разширителен модул за памет за IBM съвместими машини, който по същество прави същото, и ползван макар и за кратко.
Аз се опитах да направя две неща, конкуриращи световното ниво (звуков вход и модул за управление на разширителна
памет), за да ми послужат като инструменти за решаването на трети проблем каквото решение тогава нямаше публикуван аналог
(разпознаване на гласови команди) - сам и само с джобните си пари, което се оказа критично твърде близко до успеха.
Сега гласовото разпознаване работи във всеки смартфон с Android от 2.2 нагоре, а за повечето други ОС работи, но все
още не и на Български език...
Обичам гласовото разпознаване!!!
• Система за измерване на постъпващото количество въздух в цилиндъра на ДВГ 1990г - р-л доц. инж. Пилев -
кат. ДВГ, инж. ас. Трифон Узунев (Тонев)
(цилиндърът не беше действащ, а монтиран на стенд, за измерване промяната на потока въздух всмукван от стенда след
промяна на геометрията на въздуховода на цилиндровата глава. Цел - получаване повече въздух за по- голямо количество
въздух за горивна смес, а горивото лесно можехме да регулираме и така с повече горивна смес да повишим мощността на
двигателя без да се увеличава работният му обем и без да се променя цялата конструкция на двигателя, освен простата
и евтина за изработка глава. Това би позволило и модернизирането на стари двигатели.
- Проектирах и изработих аналогова измервателна система за измерване на дебит на въздушен поток.
• Макет на Бордови компютър за мотокар (развойно на Assembler 6502 за Правец 82 за прототип, кат. ДВГ,
лаб. "Гориворазпръсквателна апаратура", съавторство с Б. Алексиев кат. ИТ, рък. доц. Пилев и гл. ас. инж. С. Жечев,)
1990-91г
Тогава изнасяхме за СССР един мотокар с едноцилиндров дизелов двигател, който заради единственият си цилиндър даваше
такива вибрации, че за 3-4 месеца пломбите от зъбите на мотокаристите изпадаха, а за 6-7 месеца непрекъсната работа
на такъв мотокар от вибрациите ставаха импотентни заради което и често ги сменяха. В края на 80-те години СССР се
отвори към света, руснаците станаха придирчиви и вече не искаха да купуват такива мотокари. И тогава някой се
договорил българският производител да електронизира с процесорна система мотокарите докато се организира производството
на подходящ за целта дизелов двигател, а новият модел да бъде по условие електронизиран.
Двигателят се управляваше чрез софтуерен ПИД регулатор (пропорционален - интегрален - диференциален), който написа
Б. Алeксиeв на асемблер и който регулатор освен оптимизираше работните характеристики на двигателя, заедно с оптимизацията
трябваше да даде теоретично до 18% икономия на гориво.
Педалът за газта беше заменен с "електронен педал" (колкото при изпълнение на реален мотокар да не се променят
двигателните навици на мотокаристите впредвид текучеството им),
Системата снемаше данни от прдала за газта и от оборотите на двигателя, като се разчиташе на адекватно превключване
на скоростите от мотокариста. След преизчисляване и сравняване можду "заданието" от педала и оборотите на натовареният
двигател, се коригираше количеството подавано гориво.
Натоварването беше различно, защото освен относително постоянната маса на мотокара, теглото на товара силно варираше, а
това променяше и режима на двигателя, и характеристиките, които оптимизирахме.
Корекцията ставаше - чрез хидравлична система, задвижвана от дизелово гориво под ниско (до 70 атм) налягане, идващо от
гориво подкачващата помпа през магнитвентил, който проектирах и изработих аз. (нали преди бях стругар и шлосер).
Рейката на дизеловата помпа беше закачена на пружина, а в обратна посока я притискаше хидравлика, командвана от
процесорната система през магнитвентила. В процеса на регулиране, в някой ситуации магнитвентила се задействаше за
корекции десетки пъти в секунда и така през впръсканото гориво се контролираше режима на двигателя.
Отчитането на реалните обороти на двигателя след задаването им през газ-педала
ставаше чрез магнитен датчик, понеже нямаше нужда от детайлност каквато даваше оптичният датчик, но имаше проблеми с
мястото за монтажа му и замърсявания на оптиката при реална експлоатация.
За прототип на бордовият компютър използвахме Правец 82, защото го имахме наличен, вече имахме опит в създаването
на контролери и компоненти за контролерите. Процесорът на Правец 16/XT работеше на 8 или 10 MHz (8086, 8088), ISA
шината му на 4.77 MHz и намирането на някой компоненти за таква честота (АЦП/ЦАП, буфери и др) през Лукановата зима
беше проблем.
Правец 82 беше несъизмеримо по- удобен за развойна дейност, а и не си позволявахме да изпозваме по-бърз процесор от
тоя, с който се предвиждаше да се прави изделието, за да не се окаже на следващ етап, че заради многотo математика в
реално време, със задачата се справя само стендовият макет. В добавка все пак имаше флопидисково устройство заради
което да не се налага непрекъснато да изтриваме и записваме EPROM памети или да перпрограмираме (пак като EPROM-и)
едночипови компютри. И едните и другите имаха ресурс на циклите програмиране / изтриване, а ни еползвахме самоделни
"изтривалки" направени от счупени живачни лампи с неустановени дължина на вълната и интензитет на UV лъчите.
Иначе за индустриална реализация на следващ етап беше предвидено след пренаписване на целият софтуер на асемблер за
едночипов микрокомпютър и да се проектира тропинизирана платка за защита от масла, нафта и влага.
Пренаписването на изцяло друга платформа не ни притесняваше заради опита придобит от по- раншни подобни задачи, макар
че се очертаваха трудности с математическяит апарат на ПИД регулатора. а Бoян Алekcиев беше спец. ИТ и също работеше
интензивно по НИС и лични проекти.
Ресурсът на процесорната система на Правец 82 с неговият 1 MHz тактова честота беше предостатъчен да обслужва в реално
време всичко това + ресурс за добавяне на антиблокираща система на колелата, както и система за следене начина на
ползване на мотокара в реално време и водене на статистика за това (моточасове, процентно време работа на празен ход,
дори изчисляване по преходните характеристики на вероятна маса на превозваният товар).
А предвиденият Intel-ски едночипов микрокомпютър работеше на 2 MHz, със сигурност би покрил ресурсно задачите и имаше
повече от достатъчно вградени интерфейси, но с неголямо количество памет. В края на разработката вече имаше едночипови
компютри на Intel от 4 MHz серия.
3 дни преди да дойде приемната комисия и да отчетем етапа на темата, едно уплътнение на магнитният вентил който аз
направих протече. Ръководителите на темата забраниха да го разглобя и поправя, за да не спре съвсем макета и да ни
откажат плащане по етапа на темата, понеже законът за РТО вече беше отменен и довършвахме и се плащаха само стари
започнати задачи. Затова този път аз написах втори ПИД регулатор (пак на асемблер), който да компенсира отклоненията
породени от теча на дизелово гориво за магнит вентила.
На тестовите изпитания въпреки очевидният теч и грешките
които би трябвало да породи, системата се самокоригираше и работеше коректно, което беше отчетено като сериозен плюс
извън техническото задание.
Малко по- късно окончателно спря дейността по НИС и фонд РТО, а с него и финансирането и прекратихме работата.
През 1999-2000г попаднах на система за мониторинг на корабни двигатели от една специализирана испанска фирма, проектирана
по същото време, базирана на същият процесор 6502, но тя не управляваше двигателя, а само следеше неговата работа.
• Метод за анализ и конструктивно оразмеряване на аналогови RC филтри - по същество симулатор на
електронни аналогови схеми с възможност за виртуална настройка на схемата от симулатора по задание на конструктора в
диалогов режим ( АЧХ, АФХ, ГВЗ, коеф. на усилване). ръководител ас. инж. Атанас Стоянов - Документирано - моята
дипломна работа.
(По същество това беше математическо моделиране на работата на електронни схеми и автоматизираната им оптимизация. -
Turbo Basic v. 1.0 - Научна обосновка - материалът и методите изучавани по "Теоретични основи на електротехниката",
Линейна Алгебра и Аналитична Геометрия, Теория на графите, Теория на електронните схеми. Теория на устойчивостта)
Такъв софтуерен продукт беше нужен на ПНИЛ по телекомуникации под ръководството на инж. н.с. Ивайло Чернев за
проектирането на заместващи оригиналните (и скъпи) комуникационни модули за изграждане на телексна връзка по радиоканал
с честотна модулация за нуждите на БМФ.
Електрониката за морски цели тогава се ползваше някакъв норматив от часове за които производителят гарантираше безотказна
работа, след което модулите на устройствата (както и при военните) се подменяха независимо от доброто им състояние.
Доставяха се от английски производител на доста висока цена във валута.
По него време БМФ беше петият по големина търговски флот в света, броят плавателни съдове беше голям и с това нуждата
от подобни разработки беше остра. Затова бяха нужни филтри с особено точно моделирани характеристики. Впоследствие проектът
се провали по финансови причини (БМФ се отказаха темата), но аз продължих със започнатата разработка и я издигнахме като
предложена тема за дипломна работа.
До момента много често такива филтри изчислявахме по разни неясно как изведени формули, взети от книжки с приложни схеми,
но при реализация често те нямаха нищо общо с предварително изчислените характеристики. Най-лошото е, че липсваше единна и
надеждна методика за изчисляването им. За удобното въвеждане на формалното описание на схемата (топология и стойности)
реших да използвам таблицата на връзките за опроводяване, създадени някоя от индустриално съвместимите CAD системи за
проектиране (OrCAD, CadStar и др), което е и без това е необходим етап при проектирането на електронно изделие с
CAD система. Тя дава еднозначна и удобна за обработка информация за възлите на схемата и стойностите на компонентите.
Изхождайки от опита и идеите ми придобити от работата над правената 2 год. по-рано системата за символна обработка на
аналитични изрази, първоначалният ми замисъл беше да разработя алгоритъм, който по топографията на схемата да съставя
предавателна функция, която аналитично да подлагам на параметрична многомерна минимизация с цел настройка. Но подходът
се оказа неудачен по ред причини:
Едната беше, че в някой случаи даже ръчно и чрез разни евристични подходи не беше възможно да се синтезира предавателна
функция на някой популярни активни схеми (съдържащи усилвателни елементи) от разпространените тогава книжки по електроника
които се използваха и всъщност работеха добре, а от там и невъзможността за създаване на алгоритъм, който от топология
да генерира предавателна функция.
Алгоритъмът за синтез на предавателна функция се усложняваше непредсказуемо, когато активните компоненти трябваше да се
заменят с еквивалентни заместващи схеми, където в моделите на компонентите се вмъкваха нови възли и клонове, което променяше
динамично цялата топология на схемата и от там затрудняваше създаването на алгоритъм за създаване на предавателна функция.
Друг сериозен проблем беше, че предавателната функция не се занимаваше с постояннотоковият режим на схемата, заради което
би могло усилвателните елементи да са близо до напрежението на насищане или запушване или направо да са наситени
или запушени и да не работят със сигнал въпреки добре моделираните променливотокови характеристики, а продуктът да не
открива това. Затова се ориентирах към друг подход:
След изчисляването по старите методики да се получат долу-горе желаните характеристики и работни точки, колкото за задаване
на коректни начални стойности на компонентите (макар и не съвсем точни) от които да тръгне оптимизацията на схемата.
А продукта да моделира финно характеристиките й като коригира стойностите на пасивните компоненти без да променя топологията
на схемата.
За да прочете топологията на схемата, моят продукт трябваше да прочете таблицата на връзките, която се изготвяше автоматично
от схемият редактор с който е проектирана принципната схема. Тази таблица е съществено необходима за редактора за проектиране
на опроводяването на печатни платки и се изготвя автоматично.
Таблицата на връзките може да бъде представена в различни формати, но по същество описва възлите на електрическата или
електронната схема.
След това програмата отваряше малка база данни оформена като таблица за разпечатване, в която бяха постоянно токовите
и променливо токовите параметри на активните компоненти, зададени от производителите им и зареждаше необходимите, ако са
представени в базата. Иначе спираше и искаше допустими заменки на компонентите.
След това по тази таблица на връзките, чрез включването на компонентите с техните параметри и стойности да изгради
еквивалентна схема, като замени активните компоненти с техните еквивалентни заместващи схеми с включени виртуалните
възли от екв. зам. схема.
При постоянно токовият анализ се отчитат характеристиките на нелинейните и активните компоненти за определяне на
постоянно токовият им режим и работните им точки.
Анализът започваше с проверка на електрическата коректност на схемата, Изчисляваше напреженията и токовете за да няма
недопустими стойности, оценяваше възможността за частично запушване или насищане на активен елемент при подаване на
променливотоков сигнал и едва тогава пристъпваше към приемане на задание за оптимизация (настройка) на схемата.
Поради липсата на предавателна функция нямаше възможност за проверка дали схемата може да работи по желаният от нас
начин - примерно нискочестотен фултър да заработи като лентов или високочестотен), коeто беше минус на метода.
Но да не забравяме, че продуктът беше "интелигентен калкулатор за констуктори", нямаше действащ световен аналог, а го
правех сам.
В процеса на оптимизация програмата "обикаляше" по пасивните компоненти на схемата и местеше с малки стъпки стойностите им,
като извършваше частна минимизация по всеки компонент.
Анализите при всяка стъпка винаги бяха първо по постоянен ток за определяне на работните точки и постояннотоковите
напрежения на входовете заради променяните стойности на пасивните елементи и след това с променливотоков сигнал, като след
всяка промяна на стойност (ако схемата е активна) се тестваше възможността за самовъзбуждане на схемата и превръщането й
в генератор и ако да - не възприемаше промяната. Нямах време да разработя по- икономичен критерий са устойчивост, който
да пести итерации.
След изчерпване на възможностите за оптимизация при даден процент на изменение на стойностите на компонентите, се намаляваше
стъпката на промяна на стойностите като се съобразяваше със стандартният ред на компонентите от съотв. клас на точност и се
извършваше целият цикъл отново.
По същество извършваше многомерна оптимизация, като гонеше най-добрата корелация между "профила" на филтъра, посочен от
точките в техническото задание и зададеният коефициента на усилване, и това което се получава при минимизацията. (както
профила за сравнение при автокорелационната функция за гласовото разпознаване)
Проблемът опира до методите от математическата статистика изучавани по физика за оценка на грешката, по принцип нямаше
как да се гони идеалното съвпадение между задание и изчислена схема. Но ако успеем да постигнем корелация на целият профил
90-95% резултатът би бил отличен. Все пак говорим за проценти съвпадение по абсолютни стойности на комплекс от сигнал и нива
най-често задавани в децибели. (3dB определящи честотите на срязване са 0.7171 от нормалното ниво, което е около 28% разлика
спрямо абс. ниво в честотата на срязване, а тук говорим за 5-10% разлика в корелацията сумарно на целият профил сумарно и в
абсолютни стойности, а не децибели - вкл. и наусилването)
Предвидени бяха възможност за задаване на желаните характеристики по различни приети в електрониката начини - като честоти
на срязване и стръмности (децибели или непери на декада- комуникациите и сега ползват извънсистемната единица непер), така
и точка по точка (честота - ниво) с цел да се компенсират дефекти в аудио характеристиките на тонколони или др. специфични
цели. Всъщност всеки усилвател за музика може да се разглежда като филтър от 20 Hz до 20 KHz.
Идеята за "изкривяване" на характеристиките на усилвателя взаимствах от темата за пригаждане на конвенционален дизел за
работа с пропанбутан, където чрез промяна на на геометрията на гърбичките от гърбичният механизъм на нагнетателната помпата
се променяха параметрите на впръскване и от подобно "изкривяване" на гърбици при изчисляване на гърбични повдигателни
механизми за ДВГ по методът Полидийн за което бях помагал в една дипломна работа.(отново математическо моделиране)
По техн. задание продуктът е насочен към проектиране на аналогови RC филтри, но след добавянето само на няколко
програмни реда (мисля че 4), включващи индуктивности в схемата на базата на дуалността, той можеше съвсем пълноценно да
обработва всякаква аналогова схема (RLC - активни и пасивни) по подобие на PsPice на "OrCAD System Corporation", чийто
аналог в крайна сметка се оказа, че е.
Работещ симулатор PsPice видях за пръв път две седмици преди датата за защита на дипломната си работа, когато беше твърде
късно за каквото и да е взаимстване, като и двата продукта (PsPice и моят) удивително си приличаха по замисъл и работа,
затова и по-късно с лекота усвоих PsPice за сравнително сложни схеми. Разликата е, че PsPice за полупроводниковите елементи
използва моделът на Gomel-Poon, а аз използвах изучаваният от нас във ВМЕИ модел на Еберс - Мол, Всъщност той всъщност е
орязана версия на моделът на Гумел-Пун и беше залегнал и в изготвените от производителя на тая база модели на компоненти
родно производство, които бяха публикувани в техническата литература. Заради вътрешните разлики в моделите (а те имаха
различен брой възли в екв. заместв. схеми) нямаше как да се взаимства алгоритъмът от там, друг е въпроса, че да получиш
сорсовият код от компилирана и линквана програма е задача, съизмерима по сложност с получаването обратно от омлета на
яйца в изходният им вид. Месеци след получаването на заданието за дипломна работа попаднах на описанието на алгоритми за
цифрова филтрация, които биха решили много по- елегантно и евтино проблемът, станал повод за дипломната работа но
необходимостта вече беше отпаднала, заданието вече спуснато, а темата за симулацията на схеми ми беше много интересна.
Изборът на Borland Turbo Basic беше по много причини. Той работеше както със синтаксис на APPLE Basic като на ПРАВЕЦ 82,
така и със синтаксис, почти еднакъв с новопоявилият се, но оценен като переспективен още с появата си Borland C. Tова
позволяваше едновременно и да се ползват стари модули, писани за други цели и впоследствие при евентуално развитие продуктът да
се прехвърли на C с минимален труд по преработката и тестването на голяма част от тях. От друга страна обемът работа по
задачата беше огромен и обхващаше както материята изучавана по няколко основни и обемисти учебни дисциплини, така и моделирането
им с голяма част от изучаваният математически апарат и изборът на език на който да бъде изпълнена задачата не натоварваше с
допълнително изучаване и на него.
Възползвах се и от това, че дори част от замисленият потребителският интерфейс беше отработен на базата на стари поръчкови курсови
работи - програмата сама избираше за визуализация полезната част от графиката, служебните съобщения по анализа на схемата се
извеждаха в рамка като табела и съобразена с размера на изписване на съобщението. (Като Pop Up прозорци с рамки от псевдографични
символи. Сега в HTML и CSS това прави в BOX моделът с Border - примерно за създаване на бутони за менюта), но при мен и с нарисувани с
псевдографика "винтчета" в ъглите й, и автоматично се разполагаше върху графиката така и там, където по възможност няма да закрие
полезна графична информация (Което вече бях правил за друго).
Тъй като двата модула (постоянно токов и променливотоков) бяха големи, имах вече познатият проблем с малкото памет и управлението
на паметта под DOS - до 640KB вкл. паметта за стек и др. системни цели.
Затова ги оставих като два отделни модула, които се командваха от един BAT файл, през който двата модула се викаха един друг
и го пренаписваха динамично. По този начин те нямаха възможност да си предават параметри, затова ги записваха във файл с данни.
Публикация за опция за софтуерна настройка на аналогови схеми от PSPice излезе едва 6 години по- късно през 1998г но
тогава още нямах достъп до интернет за да си изтегля демо. След това не съм го следил.
• Програма за преработка на база данни на служба 144 от БТК - 1993г - за целите на служба 144 (телефонни услуги) - Borland
Turbo Basic 1.0 -
Базата данни беше във формат "непрекъснат ред" (без елементи за указване край на поле със записи за абоната, в който единственият
критерий е дължината на отделните полета и общата дължина на записа, ако те са спазени - вероятно по подобие на формата от лентовите
запаметяващи устройства от предишните поколения "динозаври" за изчислителни центрове).
Базата беше с многобройни увредени по различни начини записи - вероятно от спирания на тока по време на запис на данни, с множество
нецели или полета с разменен ред на полетата в записа и така цели поредици (неустановимо колко) от следващите неувредени записи бяха
практически неразпознаваеми от системата, защото не беше спазен форматът на предшестващите записи.
Програмата трябваше да чете, намира и разпознава типа на записите, да отделя "здравите" в един файл, като по възможност разпознава и
разменя полетата със сгрешен тип на записите, а увредените (или каквото е останало от тях) в друг файл.
След това да пресортира записите от азбучен ред по имена на абонатите на телефонни номера и така те да могат да бъдат проверени по
абонатните книги и как са заведени за плащане, понеже имаше и доста телефони "фантоми" които се плащаха, а не се знаеше чии са.
Информацията от увредените записи след сравняване да се издирва и възстановява ръчно, понеже повредите в БД бяха разнообразни и беше
невъзможно да се дефинират критерии за ефективна автоматична обработка..
Работата беше прекратена след като програмата беше практически готова и покриваше всички тестове заради обявяване на измислен
конкурс до който не бях допуснат като служител на БТК. До цялата база БТК не предоставяше достъп за да не се изнася телефонният
указател и други фирми да печелят от него. Спечели го известна фирма, която изобщо не познаваше ситуацията с базата данни. А аз
загубих умишлено програмното досие - Като са толкова велики да спечелят конкурс на който дори не познават условията на задачата
- да се справят и без него. И естествено не дадох нито софтуера си, нито информация за него.
И програмистите от фирмата, която спечели конкурса по документи се мотаха с дни да разгадават формата, семантиката и състоянието на
записите в БД, а аз преди да получа програмното досие го бях разгадал за едно кафе време, разглеждайки го с PCTools-a като знаех
адресите и телефоните на няколко човека, които познавах и с няколко позвънявания на тел 144 за адресите и телефоните на случайни
хора за сверка на това какво намирам аз в базата данни и какво четат в 144 за тях.
• Преработка на дизасемблираният от мен софтуер на BG фонокартен телефонен апарат, с цел отстраняване на бъгове и премахване на възможностите да се копират фонокарти директно на монтираните за ползване и работещи апарати (Assembler 6800) 1994-95г
• Работа в съавторство по софтуера за телетаксуващо устр-во хотелски тип с таксуващ сигнал от АТЦ 16 KHz и разработка на импулсно захранване, модула индикация и филтрите за 16 KHz на устройството за получаване на таксуващи импулси от АТЦ. (Ассемблер за едночипов компютър 68HC11, Orcad-SDT/ PCB, PsPice, )- Частен проект 1995-1996г съавторство с ас. инж. Любомир Атанасов кат. СТ и ас. инж. П. Павлов кат. АП
...