Дипломна работа стр. 1 съдържание


ТУ-Варна ДИПЛОМНА РАБОТА



страница38/40
Дата29.10.2022
Размер0.94 Mb.
#115412
ТипДиплом
1   ...   32   33   34   35   36   37   38   39   40
DIPLOMNA
    Навигация на страницата:
  • СТР.59
ТУ-Варна



ДИПЛОМНА РАБОТА





СТР. 58




2 описание на физическите параметри на платката



  • дължина

  • ширина

  • брой слоеве / за целта, се определя

ширина на проводника
дебелина на платката
При всяко въвеждане от клавиатурата се прави проверка, за валидност на данните, т.е. дали набора входни параметри се намира вътре в тялото от решения на модела. Входните ограничения са взети от специализираната литература



ТУ-Варна



ДИПЛОМНА РАБОТА





СТР.59


/*****************************************************************************

Copyright (c) My Company


Project: METODIKA


FileName: METODIKA.PRO
Purpose: No description
Written by: Visual Prolog
Comments:
******************************************************************************/
domains
partdom = part(id,type,pins,area)
%boardimdom = boarddimension(board_length,board_width,board_thickness)
%boarddom = board(boardimdom,number_of_layers,partdom)
id,pins = integer
type = string
area = real
%total_number_of_pins,total_number_of_components,
board_width, board_length = real
number_of_regid_layers, number_of_flex_layers = real
%number_of_layers = number_of_layer(number_of_regid_layers, number_of_flex_layers)
%board_thickness, vias_diameter,part_width,part_length = real
line_width, gap_width = real
include "metodika.inc"
global facts
gap(real,real,real)
temp(real)
line(real)
compo(integer)
pin(integer)
tex(string)
determ bufferA(real)
bufferP(integer)
regid_limitation(real,real,real,real,real,real)
package_type(string,real)
types(string)
board_th(real,integer,integer)

predicates


metodika()
nondeterm add_drill(real)
nondeterm drill_limitation(real,real)
nondeterm area_limitation(integer,integer)
nondeterm line_limitation(real)
nondeterm count_area()
nondeterm count_pins()
nondeterm board_description()
nondeterm area_count(ref,real)
nondeterm pins_count(ref,integer)
nondeterm add_part(integer)
choose_technology()
nondeterm r(char)
nondeterm flex_board()
nondeterm regid_board()
nondeterm add_boardLengthWidthThickness()
nondeterm board_limitation(integer,integer)
nondeterm add_boardParameters(integer,integer)
nondeterm add_lineWidth()
nondeterm add_type()
nondeterm add_pins()
nondeterm add_body()
nondeterm body_count(integer,string)
nondeterm type_limitation(string)
nondeterm pins_limitation(integer)
nondeterm flexStepTrasse_limitation(integer,integer)
nondeterm regidStepTrasse_limitation(integer,integer)
nondeterm stepTrasse_limitation(integer,integer)
nondeterm flexline_limitation(real)
nondeterm regidline_limitation(real)
nondeterm add_Leyer(integer,integer)
nondeterm flex_board_thickness(real)
nondeterm add_thickness()
test_L(integer,integer,real)
test_W(integer,integer,real)
clauses

metodika():-choose_technology(),!.


choose_technology():-
write("изберете технология"),nl,
write("релефни печатни платки :1"),nl,
write("гъвкави печатни платки : 2"),nl,
write("изход : 3"),nl,
readchar(X),
r(X),!.

r(X):-
X='1',!,asserta(tex("regid")),


regid_board().
r(X):-
X='2',!,asserta(tex("flex")),
flex_board().
r(X):-
X='3',!,
exit.
r(_):-
choose_technology().
flex_board():-
db_create(part_db,"parts", in_memory),
add_part(1),
board_description(),
db_close(part_db),nl,nl,
db_delete("parts",in_memory),
choose_technology().

regid_board():-


db_create(part_db,"parts", in_memory),
add_part(1),
board_description(),
db_close(part_db),nl,nl,
db_delete("parts",in_memory),
choose_technology().

add_part(ID):-


write("желаете ли въвеждане Yes/No"),nl,readchar(C),C='y',!,
write("въведете данни за компонент :",ID),nl,
chain_insertz(part_db,"id",integer,ID,_),
add_type(),add_pins(),add_body(),nl,
IDi=ID+1,
add_part(IDi).
add_part(ID):-
ID>1,!,
write("край въвеждане компоненти в база данни"),nl.
add_part(ID):-
ID=1,nl,nl,
db_close(part_db),nl,nl,
db_delete("parts",in_memory),
choose_technology().

add_type():-


write("тип корпус на компонента "),nl,readln(Type),!,nl,
type_limitation(Type).
add_type():-
nl,nl,
write("некоректни данни"),nl,
add_type().

add_pins():-


write("брой изводи : "),nl,readint(Pins),!,nl,
pins_limitation(Pins).
add_pins():-
nl,nl,
write("некоректни данни"),nl,
add_pins().
add_body():-
retract(pin(Pins)),
retract(types(Type)),
body_count(Pins,Type).

body_count(Pins,Type):-


Type="dip1",!,retract(package_type(Type,Width)),
InLine=Pins/2,PartLength=InLine*2.54,
write("дължина корпус на компонент :",PartLength," мм"),nl,
write("ширина корпус на компонент :",Width," мм"),nl,
Area =(PartLength/100*Width/100),
chain_insertz(part_db,"area",real,Area,_),
assert(package_type(Type,Width)).
body_count(Pins,Type):-
Type="dip2",!,retract(package_type(Type,Width)),
InLine=Pins/2,PartLength=InLine*2.54,
write("дължина корпус на компонент :",PartLength," мм"),nl,
write("ширина корпус на компонент :",Width," мм"),nl,
Area =(PartLength/100*Width/100),
chain_insertz(part_db,"area",real,Area,_),
assert(package_type(Type,Width)).
body_count(Pins,Type):-
Type="dip3",!,retract(package_type(Type,Width)),
InLine=Pins/2,PartLength=InLine*2.54,
write("дължина корпус на компонент :",PartLength," мм"),nl,
write("ширина корпус на компонент :",Width," мм"),nl,
Area =(PartLength/100*Width/100),
chain_insertz(part_db,"area",real,Area,_),
assert(package_type(Type,Width)).
body_count(Pins,Type):-
Type="dip4",!,retract(package_type(Type,Width)),
InLine=Pins/2,PartLength=InLine*2.54,
write("дължина корпус на компонент :",PartLength," мм"),nl,
write("ширина корпус на компонент :",Width," мм"),nl,
Area =(PartLength/100*Width/100),
chain_insertz(part_db,"area",real,Area,_),
assert(package_type(Type,Width)).
body_count(Pins,Type):-
Type="pingrid",!,retract(package_type(Type,Width)),
InLine=Pins/8,PartLength=InLine*2.54,
write("дължина корпус на компонент :",PartLength," мм"),nl,
write("ширина корпус на компонент :",Width," мм"),nl,
Area =(PartLength/100*Width/100),
chain_insertz(part_db,"area",real,Area,_),
assert(package_type(Type,Width)).
body_count(Pins,Type):-
Type="to",!,retract(package_type(Type,Width)),
InLine=Pins/4,PartLength=InLine*2.54,
write("дължина корпус на компонент :",PartLength," мм"),nl,
write("ширина корпус на компонент :",Width," мм"),nl,
Area =(PartLength/100*Width/100),
chain_insertz(part_db,"area",real,Area,_),
assert(package_type(Type,Width)).
body_count(Pins,Type):-
Type="flatpack1",!,retract(package_type(Type,Width)),
InLine=Pins/2,PartLength=InLine*1.27,
write("дължина корпус на компонент :",PartLength," мм"),nl,
write("ширина корпус на компонент :",Width," мм"),nl,
Area =(PartLength/100*Width/100),
chain_insertz(part_db,"area",real,Area,_),
assert(package_type(Type,Width)).

body_count(Pins,Type):-


Type="flatpack2",!,retract(package_type(Type,Width)),
InLine=Pins/2,PartLength=InLine*1.27,
write("дължина корпус на компонент :",PartLength," мм"),nl,
write("ширина корпус на компонент :",Width," мм"),nl,
Area =(PartLength/100*Width/100),
chain_insertz(part_db,"area",real,Area,_),
assert(package_type(Type,Width)).
body_count(_,Type):-
Type="flatpack3",!,retract(package_type(Type,Coef)),


Сподели с приятели:
1   ...   32   33   34   35   36   37   38   39   40




©obuch.info 2024
отнасят до администрацията

    Начална страница