Professional Documents
Culture Documents
Visio-PC5design 2016-03-31 PDF
Visio-PC5design 2016-03-31 PDF
Máy phát q(t) = (x,y,z, Vx, Vy,Vz, B,E,D) Giám sát & Hiển
Tham số mục tiêu thị
q!(t) = (x!,y!,z!,Vx!,Vy!,Vz!, B~,E~,D~)
q(t) = (B,E,D)
q!(t)
status(t)
PC5
Khối tính toán
tọa độ bắn đón
Motion
UKB
MÁY CHỈ HUY Control
C(t)
M
Motor
Ay
Tham số Bm Vxp By
By Điều khiển
mục tiêu ~ Em Vyp Ey Pháo
φ
B~,E~,D~ Dp Vzp Ty
Module sử
lý nhiễu
Wb, We, Vdp δ
PC4
S={B,E,D} Nguồn phát
nhiễu
PC1 PC3
Máy phát tham số M={x,y,z,Vx,Vy,Vz,B,E,D} Giám sát & Hiển
mục tiêu chuẩn thị
q!(t)
status(t)
C(t)
PC2
MCH Core
Sơ đồ kết nối PC2-PC5-PC3
PC1
Máy phát tham số M={x,y,z,Vx,Vy,Vz,B,E,D}
mục tiêu chuẩn
PC2 PC3
q!(t) + status(t) Giám sát & Hiển
MCH Core
thị
PC2-UKB
PC5
q!*(t) Tính toán tọa q*(t)
độ bắn đón
q*(t) = H packet
PC5-UKB
= (xy,yy,zy,x*,y*,z*, By,φ,τy, status{})
PC6
q#(t) Pháo
Motion Control
q!*(t) = K packet
= (x!,y!,z!,Vx!,Vy!,Vz!,
Bm,Em,Dm,Kh,Ho,status{})
Rada
Gói tin "K"
GIAO DIỆN PC5-HMI
DП βП εП
Пx Пy ПH
Cập nhật lượng sửa theo Công tắc bắn tránh Công tắc dừng khẩn cấp
độ cao (pháo quay lệch 180o) (tất cả dừng tại chỗ)
PC5-UKB
PC4
Máy chỉ huy
status(t)
q!(t) + q~(t)
status(t)
B B(t)
E E(t) +
D D(t)
PC4
Khoá chuyển
C/tắc ZIPd
động cự ly
(TT2)
(TT2)
Mục tiêu tốt
(D buông ZIP)
D=800m/vòng D=300m/vòng
PC3
Giám sát & Hiển
thị
C(t)
B~ Bm Vxp By
By
E~ q~(t) Em Vyp Ey
φ
D~ Dp Vzp Ty
Ty2 = Ft(h1,d1)
=> {x+Vx*Ty2, y+Vy*Ty2, z+Vz*Ty2}
=> {h2,d2,Ty2}
A0
Ty3 = Ft(h2,d2)
=> {x+Vx*Ty3, y+Vy*Ty3, z+Vz*Ty3}
=> {h3,d3,Ty3}
? (ABS(d3-d2) < Epsilon)
Ty1 = Ft(h0,d0) A2
=> {x+Vx*Ty1, y+Vy*Ty1, z+Vz*Ty1}
=> {h1,d1,Ty1} A3
A1
β0
β2 y
x P
β1
O
Ty3 = Ft(h2,d2)
=> {x+Vx*Ty3, y+Vy*Ty3, z+Vz*Ty3}
=> {h3,d3,Ty3}
? (ABS(d3-d2) < Epsilon)
Ty2 = Ft(h1,d1)
=> {x+Vx*Ty2, y+Vy*Ty2, z+Vz*Ty2}
=> {h2,d2,Ty2}
A3
Ty1 = Ft(h0,d0)
=> {x+Vx*Ty1, y+Vy*Ty1, z+Vz*Ty1} A2
=> {h1,d1,Ty1}
A1
{x,y,z}, {Vx,Vy,Vz} =>
{h0,d0,Ty0=0}
A0
y
x P
β3
β2
β1
β0
O
delta_h hy1
h,hy
A
Ay1
Ay
h
β
βy
βy1 d
delta_By
d
y B
dy1 dy
delta_d
h
D1 = {delta_h1, delta_d1} Z1
D2 = {delta_h2, delta_d2}
Z2
Ay Aq1
delta_d A0
Ty = Ft(h,d)
{xy,yy,zy,By,Ey,Dy} Q2
{x0,y0,z0,Vx,Vy,Vz} =>
Aq1 = {) {h0,d0,Ty0=0}
Q1
Qy1 = {By-delta_d1, Ey-delta_h1, Dy}
Tq1 = Ft(h1,d1)
Start
Rs232_init(COM1)
Rs232_init(COM2)
table_init(....)
TEST Dialog
fork()
new thread
- Thời gian đạn bay
- Lượng sửa
execp() - ...
? exitcode ? exitcode
? COM Ready
find_gussed_coor(ntype_packet *npack
=> gussed_coor *local)
Update_packet(string *txt =>
union {ntype_packet *npack, stype_packet *spack})
TEST_Diagbox_Update(gussed_coor *gcoor)
find_gussed_coor(ntype_packet *npack
=> gussed_coor *pool)
build_packet(
(ntype_packet *npack, gussed_coor *gcoor)
=> string *buf)
Send_child(exitcode)
Exit
BMAX = 8
Buffer ofs = (npkts % BMAX) = 3
int npkts => 11
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ...
... 5 6 7 0 1 2 ...
Real Buffer
PC2
"K" Packet
Tọa độ tương ứng với MCH
DataValid = FALSE
FireReady = FALSE
PC5: Lược đồ xử lý gói tin K,H,D
(2016-03-31)
D=sqrt(X^2+Y^2+Z^2)
d=sqrt(X^2+Y^2)
V=sqrt(Vx^2+Vy^2+Vz^2)
E=ATAN(Z/d)
D < 10000m
To
False && V < 260m/s
&& ( E > -1-00 && E < +14-50) W, Bw
? Mo
Vo
Πo
Πxyz
DataValid = TRUE
Các bảng tra lượng sửa
theo (h,d,DELTA,Ki)
(Tương ứng với PHÁO)
{x,y,z,h,d} = coor-transf() // => PHÁO
DataValid = TRUE
&& Ty < 15s
&& (Vty > -0.9 && Vty<3.1)
CHUYỂN ĐỔI HÊ THAM CHIẾU
{Xy,Yy,Zy}=Fxyz(Hy,dy,By)
φ=Fp1(h,d)
α=Fp2(h,d)
FireReady = TRUE
???
No-Valid
Valid
H # Xy Yy Zy X* Y* Z* By φ Ty Sf
Sp=PAUSE Sp=MOVE
D # Sp B φ Sr B φr
Return FALSE ReturnTRUE
PC6
PC5: Lược đồ tính tham số bắn đón
struct catchinginfo {
int status; // -1: not-catched;
// 0: deviation > 1m; (LOOP limit)
// >0: deviation < 1m
double deviation;
// Meeting Point
double Ty;
double Ayx; double Ayy; double Ayz;
double hy; double dy; double By;
// Shoting point
double hs; double ds; double Bs;
double Es; double Alpha;
// Correction info
double Zbtotal; double Zhtotal; double Zdtotal;
double Zbself; double Zbwpass;
double Zhvo; double Zhmass; double Zhatm; double Zhwup; double Zhtemp;
double Zdvo; double Zdmass; double Zdatm; double Zdwup; double Zdtemp;
};
PC5: Tính tham số lượng sửa
Nguồn & Cấu trúc dữ liệu
THAM SỐ LƯỢNG SỬA: ĐẦU ĐẠN THAM SỐ LƯỢNG SỬA: MÔI TRƯỜNG BẢNG TRA H,H, THAM SỐ => LƯỢNG SỬA
struct bulletinfo { struct envinfo { struct bullet_tables {
// Bullet mass and % difference with standard // Batteries Base // Bullet's Attribute Tables => value =
double mass; double baseBn; double baseEn; double baseDn; F(h,d,table)
double mass_percent; double baseXn; double baseYn; double baseZn; void *Time_table; // Time Tu
void *Elevation_table; //
// Muzzle Velocity and % difference with standard // Rada void *Zbself_table; // driff =>Zbself
double vo; // double radaBn; double radaEn; double radaDn; void *Zbwpass_table; // wind pass => Zbw
double vo_percent; // % Vo change; double radaXn; double radaYn; double radaZn;
void *Zhwup_table; // wind up => Zhwup
// Unit for change values // Atmosphere in Bar and % difference with Ph=0 void *Zhatm_table; // Atmosphere =>Zhatm
double Uw; // Unit for Wind speed (=10m/s), double atm_bar; void *Zhvo_table; // Velocity => Zhvo
double Uatm; // Unit for Atmosphre change = 1%; double atm_percent; void *Zhmass_table; // Mass => Zhmass
double Umass; // Unit for Mass change = 2/3% void *Zhtempo_table; // Temperature =>
double Uvo; // Unit for Vo change = 1% // Wind speed (m/s) & direction in Radian Zhtemp
double Utemp; // Unit for Tempo change = 1% double wind_vw;
} double wind_bw; void *Zdwup_table; // Zdwup
void *Zdatm_table; // Zdatm
// Temperature and % difference with 20oC (Kelvin) void *Zdvo_table; // Zdvo
double temp_degrees; void *Zdmass_table; // Zdmass
double temp_percent; void *Zdtempo_table; // Zdtemp
} }
H,d,By
LƯỢNG SỬA
// Trajectory correct infomation by (B,H,d)
struct trajcorrect {
double wpass;
double wup;
// Correction by ...
double Zb_self; TỔNG SAI LỆCH (do lượng sửa)
double Zb_wpass; Zb = SUM(Zb-i);
Zd = SUM(Zd-i);
double Zh_atm; Zh = SUM(Zh-i);
double Zh_vo;
double Zh_to;
double Zh_mass;
double Zh_wup;
double Zd_atm;
double Zd_vo;
double Zd_to;
double Zd_mass;
double Zd_wup;
}
PC5: Lược đồ tính tham số bắn đón
Input: {x,y,z,Vx,Vy,Vz}; các hàm tra đặc thù (môi trường, loại đạn, ...)
Output: Ty,By,Ey, Zb,Zh,Zd, ngóc ngẩng, ...
BEGIN
x,y,z,Vx,Vy,Vz
*tables[]
ts = ty
hy = Az Ty = Fty (hs, ds, By, table[])
dy = sqrt(Ax*Ax + Ay*Ay)
By = safeATAN(Ax,Ay)
Ax = x + ty * Vx
ty = Fty (hy, dy, By, table[]) Ay = y + ty * Vy
Az = z + ty * Vz
hy = Az
dy = sqrt(Ax*Ax + Ay*By)
Ax = x + ty * Vx By = safeATAN(Ax,Ay)
Ay = y + ty * Vy Ey = safeATAN(hy,dy)
Az = z + ty * Vz Tìm điểm gần đúng
(dưới 0.5 sec)
TRUE
False
hy = Az
dy = sqrt(Ax*Ax + Ay*Ay) try = try - 1
By = safeATAN(Ax,Ay)
try = 0
False
?
struct spline {
//
int pnum; // Number of points
double x[];
double y[];
double z[];