Komputerowe wspomaganie projektowania
Istota komputerowego wspomagania prac projektowych
Ponieważ projektowanie jest procesem przetwarzania masowej informacji, a komputer jest najpotężniejszym (poza mózgiem) narzędziem do przetwarzania masowej informacji, jest naturalne że niemal od początku rozwoju komputerów poświęcano szczególnie dużo uwagi tej klasie zastosowań komputerów.
W pierwszym okresie rozwoju komputeryzacji (w latach sześćdziesiątych) uważano, że w przyszłości będzie możliwe opracowanie takich programów i takiego sprzętu informatycznego, który w całości zastąpi projektanta; zatem mówiło się wtedy o automatyzacji projektowania.
Niestety, ścisłe algorytmiczne działanie komputera spowodowało, że szybko wyczerpały się możliwości nowych zastosowań technik komputerowych w projektowaniu.
W latach siedemdziesiątych stało się oczywiste, że należy dokonać rozdziału czynności projektowych na:
algorytmiczne (twórcze)
heurystyczne (decyzyjne)
Dla pierwszych czynności można stworzyć oprogramowanie i wykonywać je na komputerze, natomiast te drugie czynności można pozostawić człowiekowi (projektantowi). Oprócz tego w takim układzie jest potrzebne sterowanie przebiegiem sesji komputerowej i właśnie ta czynność decyduje o skuteczności jego działania. Tę funkcję także rozdziela się między obu "partnerów" :
komputer przechowuje wszystkie bieżące dane i rezultaty poprzednich działań projektowych i wyprowadza je na żądanie operatora w dowolnej przewidzianej postaci (wykres, rysunek, dźwięk, głos, inny komunikat) oraz "podpowiada" operatorowi, jaka powinna lub jaka może być następna czynność, zgodnie z przyjętą metodyką projektowania dla danego przypadku, wyprowadza też komunikaty o błędach i ostrzeżenia,
natomiast operator podejmuje wszelkie niealgorytmiczne decyzje o dalszym przebiegu sesji projektowej.
Tak zorganizowane komputerowe systemy działania nazywa się dialogowymi lub interaktywnymi. Istotne w tych systemach jest :
rozdział czynności między komputer i operatora,
bazy danych (stałe i dynamiczne zmienne),
sposób komunikacji między operatorem i komputerem.
Ponieważ każda procedura heurystyczna zawiera jakieś działania algorytmiczne, można się spotkać z wykorzystaniem komputera jako narzędzia wspomagającego - mówi się wtedy o projektowaniu wspomaganym komputerem.
Komputerowym wspomaganiem projektowania nazywa się proces użytkowania zbioru metod i środków informatycznych (komputerowych) wzmacniających możliwości twórcze konstruktora czy projektanta. Jest to zatem pewien system, składający się z trzech głównych elementów:
konstruktora lub projektanta, nazywanego dalej użytkownikiem, mającego odpowiednie kwalifikacje,
sprzętu komputerowego,
oprogramowania,
Taki trójelementowy układ nazywa się systemem CAD (ang. Computer Aided Design) lub systemem KWP (Komputerowego Wspomagania Projektowania).
Należy podkreślić, że CAD jest narzędziem wspomagającym pracę człowieka przy użyciu komputera, a nie eliminuje go z procesu projektowania.
Zauważamy również, że w procesie projektowania systemów powstają informacje potrzebne w kolejnych etapach procesu zaspokajania potrzeb w projektowaniu procesu, w wytwarzaniu, testowaniu, uruchamianiu i podczas eksploatacji. W tych etapach również można i trzeba wykorzystywać komputery, do których istnieje wiele efektywnych pakietów.
Powstała więc idea łączenia programów w większe całości, tzw. systemy programowe, w których programy te mogą wzajemnie przekazywać sobie dane za pośrednictwem plików dyskowych. W rezultacie dostępne są w sprzedaży duże pakiety programowe realizujące kompleksowe działania wspomagające prace inżynierskie.
Pakiety programowe realizujące kompleksowe działania wspomagające:
CAD (ang. Computer Aided Design) - konstruowanie i projektowanie wspomagane komputerowo,
CADD (ang. Computer Aided Design and Drafting) - wspomagane komputerowo geometryczne modelowanie (rysowanie) w zintegrowanym procesie konstruowania i projektowania,
CAM (ang. Computer Aided Manufacturing) - wspomagane komputerowo sterowanie procesem wytwarzania, z wykorzystaniem systemów sterowanych numerycznie (NC- ang. Numerical Control) i systemów sterowanych mikroprocesorami (CNC- ang. Computer Numerical Control),
CAD/CAM (ang. Computer Aided Design and Manufacturing) - zintegrowane (komputerowo wspomagane) konstruowanie i sterowanie produkcją z możliwością automatycznego tworzenia plików z danymi pośrednimi między kolejnymi fazami realizacji programu komputerowego,
CIM (ang. Computer Integrated Manufacturing) - zintegrowany, komputerowo wspomagany system technicznego i organizacyjnego przygotowania produkcji oraz nadzoru procesu wytwarzania (czasem niezbyt poprawnie ten skrót jest używany jako krótsza nazwa CAD/CAM,
CAT (ang. Computer Aided Testing) - sterowany komputerowo proces kontroli technicznej w procesie wytwarzania,
CAE (ang. Computer Aided Engineering) - łączne określenie komputerowego wspomagania prac inżynierskich, tzn. systemów łączących CAD, analizę pola (np. MES-metody elementów skończonych), obsługę eksperymentu, komputerowe sterowanie obiektami, edytory tekstów, bazy danych i inne.
Zakres komputerowego wspomagania prac inżynierskich
Do typowych działań, które mogą być wykonywane przez komputer zalicza się:
wykonywanie obliczeń w jednym przejściu, np. obliczanie naprężeń dla zadanej konstrukcji i dla zadanych obciążeń, wykonywanie obliczeń wytrzymałościowych, cieplnych, bilansów energetycznych, automatycznego zbierania danych i statystycznej obróbki danych; charakterystyczne jest to, że operuje się na dużych zbiorach i że realizowane są złożone obliczenia oraz wymagana stosunkowo prosta grafika,
wykonywanie obliczeń iteracyjnych jak przy optymalizacji czy symulacji, np. zadania optymalizacji statycznej (w konstrukcji) i zadania optymalizacji dynamicznej (w planowaniu procesów, harmonogramów); charakterystyczne jest to, że są realizowane złożone, powtarzające się i długotrwałe obliczenia oraz że użytkownik powinien mieć możliwość interwencji w trakcie obliczeń, po każdej iteracji,
wykonywanie dokumentacji rysunkowej, np. konstrukcyjnej: rysowanie brył, transformacja rysunków, przykładowo zmiana perspektywy rysunku czy łączenie (ang. linking) rysunku zbiorczego w części,
rysowanie wykresów, w tym trójwymiarowych, cieniowanych i innych,
wyszukiwanie informacji, np. o zadanych właściwościach materiału, wyszukiwanie dokumentacji, przeszukiwanie katalogu,
wspomaganie podejmowania decyzji (systemy ekspertowe, czyli doradcze); system zadaje użytkownikowi ciąg pytań, przy czym kolejne pytanie zależy od poprzednio udzielonych odpowiedzi, i na podstawie informacji uzyskanych od użytkownika system komputerowy proponuje mu decyzje,
edycję tekstów, np. opisów technicznych,
Zakres tematyczny CAD
Od pewnego czasu CAD jest samodzielnym przedmiotem nauczanym na wyższych uczelniach. Sytuacja ta może ulec zmianie, gdy wykorzystanie komputera będzie powszechne i naturalne, tak jak pióra, papieru i kalkulatora. Tematyka CAD zostanie wtedy włączona przez wykładowców do odpowiednich przedmiotów.
Typowy zakres tematyczny CAD jest następujący:
wprowadzenie do CAD: pojęcia podstawowe, metoda, algorytm, heureza, zmienne w projektowaniu, struktura procesu projektowania, integracja projektowania z pozostałymi działaniami,
edytory rysunków,
bazy danych: tekstowe i graficzne,
symulacja i animacja,
optymalizacja i polioptymatyzacja,
metoda elementów skończonych (MES) i metoda elementów brzegowych (MEB),
systemy ekspertowe (systemy doradcze),
Niekiedy włącza się także inne zagadnienia związane z projektowaniem, np.:
algorytmy sztucznej inteligencji (sieci neuronowe, algorytmy genetyczne),
edytory tekstów,
arkusze kalkulacyjne,
komputerowe systemy obsługi eksperymentów,
algorytmy statystycznego opracowywania wyników pomiarów,
algorytmy teorii drgań,
metody syntezy i analizy układów sterowania,
Ogólna budowa pakietów (systemów) CAD
Z punktu widzenia twórcy systemu można mówić o ośrodkach integracji systemu CAD, tzn. o logicznym rdzeniu systemu. Jest to pewien program (lub algorytm), któremu są podporządkowane inne metody systemu. Ośrodkiem integracji może być:
algorytm obliczeniowy, np. przy konstruowaniu odkuwek może to być metoda elementów skończonych,
baza danych, jak w przypadku projektowania modułowego,
grafika, np. w projektowaniu architektonicznym.
Typowe pakiety (systemy) CAD składają się z kilku części, często zwanych modułami lub programami. Z reguły są to osobne jednostki programowe, widziane przez system komputera jako niezależne pliki. Często mogą to być autonomiczne programy, które można uruchamiać niezależnie, np. program sprawdzający obliczeń wytrzymałościowych lub program symulacyjny. Typowe są następujące moduły:
procesor, który ułatwia wprowadzanie danych przez użytkownika; może to być np. moduł modelowania graficznego, który umożliwia dialogowe wprowadzanie cech konstrukcyjnych w formie graficznej i zapisanie ich w pamięci komputera w formie binarnej,
solver, który realizuje wszelkie wymagane obliczania, np. wytrzymałościowe, dynamiczne,
postprocesor, który umożliwia wyprowadzenie wyników obliczeń w formie najbardziej komunikatywnej dla użytkownika, w szczególności w postaci graficznej,
baza danych, można tu wyróżnić:
bazę danych stałych, wprowadzoną przez twórcę systemu, których użytkownik nie może zmieniać ani wymazać (np. niektóre reguły decyzyjne, komunikaty dla użytkownika), albo które może uzupełniać (np. dane o materiałach konstrukcyjnych), oraz
bazę danych zmiennych automatycznie uzupełnianą przez system w miarę postępowania sesji komputerowej i podejmowania przez użytkownika kolejnych decyzji akceptujących, np. o wymiarach projektowanego obiektu,
biblioteka procedur, które są przewidziane do używania nie w jednym, lecz w kilku modułach,
główny program zarządzający, który umożliwia użytkownikowi sterowanie przebiegiem procesu obliczeń, wprowadzanie nowych danych, obsługuje przerwania, steruje komunikacją między modułami itp.
Znaczenie systemów CAD
Najważniejsze korzyści wynikające z wykorzystania systemów CAD są następujące:
ułatwienie (praktycznie biorąc, umożliwienie) wyznaczania rozwiązania optymalnego,
podwyższenie jakości uzyskanego rozwiązania, np. przez to, że do obliczeń wykorzystuje się dokładniejsze modele matematyczne,
znaczne skrócenie czasu projektowania, w szczególności końcowych pracochłonnych etapów projektowania,
odciążenie projektanta od czasochłonnych i często nudnych prac rutynowych (jak np. kreślenia czy obliczania), co zachęca go do kontynuowania działań twórczych, np. projektowania wielowariantowego,
zwiększenie możliwości korzystania z istniejących (często już sprawdzonych w praktyce) rozwiązań projektowych, dzięki wykorzystaniu komputerowych baz danych istniejących norm, katalogów itp. ,
umożliwienie przeprowadzania symulacji zachowania się projektowanego obiektu w różnych warunkach, jeszcze na etapie projektowania, bez konieczności budowy prototypu i przeprowadzania kosztownych badań laboratoryjnych lub eksploatacyjnych,
Znaczenie systemów CAD i pokrewnych na świecie stale rośnie, gdyż efektywnie zwiększają one konkurencyjność producentów i zmniejszają ich koszty własne.
Wymagania stawiane systemom CAD
Użytkownik stawia wiele wymagań systemowi programowemu (popularnie zwanemu pakietem). Wymagania te stale rosną, w miarę rozwoju sprzętu, systemów operacyjnych i sieci komputerowych, a także dochodzą nowe wymagania w związku z gwałtownym poszerzeniem kręgu użytkowników o osoby z małą znajomością informatyki, a w szczególności komputerów i algorytmów pracy użytkowanych przez siebie programów.
Znajomość wymagań jest bardzo przydatna do oceny pakietów, gdy użytkownik staje wobec konieczności wyboru systemu. Podstawowym wymaganiem zawsze jest dobra dokumentacja użytkownika, zawierająca instrukcję instalowania, uruchomienia i obsługi, listę błędów, listę plików systemowych i inne użyteczne informacje. Poniżej omówiono typowe wymagania szczegółowe stawiane systemom CAD.
Wymagania dotyczące obsługi
Istnienie wygodnego systemu podpowiedzi (help); najlepiej jeśli jest kontekstowy, tzn. że na ekran wyprowadzana jest tylko informacja dotycząca bieżącej sytuacji lub wybranej w danej chwili opcji,
Możliwość automatycznego zabezpieczenia przed omyłkowym wprowadzaniem przez użytkownika niepoprawnych danych (np. liter zamiast liczb),
Możliwość przerwania danej sekwencji działań interaktywnych z użytkownikiem, np. możliwość przerwania wprowadzania długiego ciągu danych za pomocą klawiatury lub przerwania danej sekwencji obliczeń, gdy użytkownik stwierdzi, że ich kontynuacja jest bezcelowa, jak np. w procesie symulacji czy optymalizacji,
Możliwość zmiany tylko jednej wybranej danej wejściowej bez konieczności wpisywania z klawiatury wszystkich od nowa.
Przejrzystość działania, tzn. łatwość zrozumienia przez użytkownika algorytmów użytych w programie - co osiąga się przez dobrze napisaną i zorganizowaną instrukcję użytkownika (komentarze na ekranie),
Możliwość używania systemu w dwóch lub więcej wersjach obsługi: inna dla początkującego użytkownika (np. z automatycznym wyprowadzaniem zwięzłych komunikatów), inna dla doświadczonego (np. z wyprowadzaniem za pomocą kombinacji klawiszy, bez potwierdzania wprowadzonych danych), co może znaczenie przyspieszyć pracę, lub bez pokazywania menu, co zwiększa dostępne pole ekranu,
Dostarczenie przez producenta systemu wersji demonstracyjnej lub wersji szkoleniowej do szybkiego nauczania obsługi systemu nowych użytkowników,
Bogaty system dostępnych opcji, przy czym zlecenia opcji powinny być logicznie pogrupowane w hierarchiczne menu oraz intuicyjnie zrozumiałe bez koniecznośc wcześniejszego żmudnego studiowania dokumentacji systemu, powinny być także obsługiwane nie tylko za pomocą klawiatury, lecz także myszki lub rysownicy,
Możliwość uzyskania przez użytkownika aktualnej informacji o bieżącym stanie systemu,
Możliwość uzyskania przez użytkownika informacji o bieżącym trybie pracy systemu, np. graficznym lub znakowym, oczekiwanie na wprowadzenie danych liczbowych lub oczekiwanie na potwierdzenie,
Możliwość przerwania pracy bez utraty danych wejściowych i danych obliczonych do chwili przerwania, np. po przerwaniu pracy programu symulacyjnego przed zakończeniem obliczeń powinna istnieć możliwość wykreślenia dotychczas uzyskanych wyników,
Możliwość chwilowego wyjścia do systemu operacyjnego i uruchomienia innych programów zewnętrznych, a potem kontynuacji przerwanej pracy,
Zapewnienie wygodnej obsługi systemu, np. przez wykorzystanie okien dialogowych, obsługiwanych za pomocą myszki w trybie klikania lub toggle oraz istnienie nakładek na klawiaturę.
Wymagania dotyczące instalowania
Możliwość łatwego instalowania systemu, np. przez umieszczenie w pakiecie programu instalującego (INSTALL.EXE), zawierającego różne mechanizmy upraszczające instalowanie, np. automatyczne zmienianie plików konfiguracyjnych.
Wymagania dotyczące oprogramowania
Dostarczenie przez producenta systemu typowych modułów programowych, które po prostym uzupełnieniu stają się modułami użytkownika, np. tabliczka rysunkowa (bez napisów) w edytorze rysunków albo moduł modelu matematycznego symulacji (bez prawych stron równań różniczkowych),
Istnienie bogatej biblioteki procedur i funkcji matematycznych,
Istnienie wygodnego ekranowego edytora alfanumerycznych danych wejściowych lub edytora do kodowania modelu matematycznego (np. symulacji czy optymalizacji),
Łatwość tworzenia i edytowania baz danych i baz wiedzy; ewentualnie z automatycznym wpisaniem na żądanie użytkownika do tych baz wyników konkretnej sesji obliczeniowej (np. w systemie ekspertowym),
Wymagania dotyczące uruchamiania
Istnienie efektywnego systemu wykrywania syntaktycznych błędów programu uruchomieniowego (ang. debugger) wyprowadzającego zrozumiałe i jednoznaczne informacje dla użytkownika,
Istnienie efektywnego systemu wykrywania błędów obliczeniowych; trafne i jednoznaczne komunikaty o znalezionych błędach i ich przyczynach,
Efektywne narzędzia do uruchamiania, testowania i weryfikacji działania programu,
Możliwość objaśniania (na żądanie użytkownika) otrzymanych wyników (np. w systemie ekspertowym),
System powinien być dobrze przetestowany, aby nie zawieszał się przy nietypowych zestawach danych wejściowych.
Wymagania związane z działaniem programu
Zapewnienie dużej szybkości działania - co osiąga się przez zastosowanie efektywnych algorytmów matematycznych i dobrą organizację pamięci,
Istnienie kompromisowego podziału systemu na moduły i pliki dyskowe, tak aby uzyskać szybką pracę systemu i jednocześnie małą zajętość pamięci operacyjnej.
Wymagania dotyczące możliwości przystosowania do specyficznych potrzeb użytkownika (ang. customizing)
Możliwość tworzenia makroinstrukcji, tzn. ciągu poprawnych (i legalnych w danym systemie) zleceń, ewentualnie z parametrami, które mogą być argumentami tych makrozleceń,
Możliwość automatycznego tworzenia pliku rejestrującego kolejno wprowadzane zlecenia; ewentualnie z rejestracją czasu zegarowego (ang. log-file), co może być pomocne np. przy tworzeniu makroinstrukcji,
Możliwość pracy dwumonitorowej (jedne drogi monitor graficzny, drugi tani o małej rozdzielczości do dialogu alfanumerycznego),
Możliwość uruchomienia systemu pod różnymi systemami operacyjnymi,
Zapewnienie łatwego przystosowania systemu do specyficznych potrzeb określonego użytkownika (ang. customizing of the system), np. przez możliwość :
dostępu użytkownika do zmiennych systemowych,
konfigurowania sprzętowego (ang. config),
konfigurowania wyglądu ekranu z danymi,
tworzenia własnych matryc zleceń dla digitizera,
tworzenia własnych dokumentów - wzorców, np. "ślepych" rysunków, wykresów czy formularzy (ang. templates), i zapamiętywanie ich jako plików dyskowych.
Wymagania sprzętowe
Wymagana jak najmniejsza pamięć operacyjna (RAM) i zewnętrzna pamięć dyskowa (dysk twardy), niekonieczny procesor,
Możliwość instalowania systemu na różnych komputerach i w różnych konfiguracjach sprzętowych, np. przy istnieniu różnych kart graficznych, z koprocesorem arytmetycznym lub bez niego, z ograniczoną pamięcią operacyjną RAM, możliwość założenia dysku wirtualnego (RAM-dysku) itp., możliwość instalowania w obecności różnych kart graficznych.
Wymagania dotyczące ochrony zbiorów
Ochrona zbiorów jest to uniemożliwienie czytania, kopiowania, zapisywania oraz omyłkowego lub świadomego usuwania plików dyskowych przez niepowołane osoby; osiąga się to np. przez zastosowanie hasła, przez szyfrowanie plików z danymi lub przez ograniczenie uprawnień dla poszczególnych użytkowników w sieciach komputerowych, a w najprostszym przypadku przez rozdzielenie plików tego samego systemu na różne katalogi,
Należy zapewnić zabezpieczenie plików (np. rysunku zapisanego na dysku) przed usunięciem spowodowanym nieprzemyślanym (lub machinalnym) naciśnięciem dowolnego klawisza, automatyczne tworzenie kopii bezpieczeństwa itp. .
Wymagania dotyczące współpracy z otoczeniem programowym i sprzętowym
Komunikacja z innymi systemami jest to możliwość wczytania danych uzyskanych jako wynik działania innych systemów (np. wyniki optymalizacji są wprowadzane do edytora rysunku) i odwrotnie - możliwość zapisania danych wyjściowych w formacie czytelnym dla innych systemów (szczególnie zalecane są tu formaty powszechnie uznane),
Możliwość fizycznego dołączania różnych urządzeń zewnętrznych wejściowych (np. myszki, skanera czy digitizera) oraz wyjściowych (np. drukarki czy plotera); oczekuje się też bogatego zestawu programów obsługi różnych typów i producentów tych urządzeń (ang. drivers),
Opcjonalna możliwość graficznego lub alfanumerycznego wyprowadzania informacji wynikowych (np. w systemach metody elementów skończonych lub w metodach polioptymalizacji),
Opcjonalna możliwość graficznego lub alfanumerycznego wprowadzania informacji (np. w systemach metody elementów skończonych lub w programach przetwarzania obrazów),
Możliwość automatycznej samoobrony systemu przed wirusami znajdującymi się w plikach zewnętrznych z danymi wejściowymi,
Możliwość czytania istniejącego pliku danych, utworzonego pod starszą wersją systemu, gdy użytkownik chce go wykorzystać w nowej wersji danego systemu (ang. upgrade).