×

1.1 Процесс расчета вибронагруженности человека

Вибрации, действующие на человека в различных условиях при эксплуатации каких-либо механизмов, практически всегда являются отрицательным фактором. В зависимости от применяемых норм и стандартов рассматривают различные уровни воздействия вибрации на человека, наиболее показательными из которых являются:
−    создающие дискомфорт вибрации,
−    вызывающие усталость вибрации при воздействии в течении рабочей смены,
−    угрожающие здоровью вибрации.
Оценка соблюдения норм и стандартов по вибрационному воздействию на человека в программном комплексе EULER выполняется в следующей последовательности:
−    моделирование и расчет движения элементов рассматриваемого механизма,
−    накопление статистических данных об ускорениях воздействующих на человека элементов рассматриваемого механизма на заданных интервалах времени,
−    обработка полученных данных и сравнение полученных статистических показателей с регламентированными нормами и стандартами величинами
−    графическое отображение полученных результатов.
При этом кроме стандартных инструментов моделирования движения элементов механических систем используются:
−    массив датчиков «vibration»,
−    реформы «включить процесс» и «выключить процесс»
−    отображение на графиках полученных результатов статистической обработки ускорений.
Пример расчета вибронагруженности приведен ниже.
 
Пример расчета вибронагруженности человека
// Тип модели испытания:  "Плавность_хода"
//    *Модель для определения параметров вибронагруженности при движении по дороге с микропрофилем
//    *Участок 0 - ровный участок.
//    *Участок 1 - переходный участок микропрофиля.
//    *Участок 2 - участок микропрофиля для выхода машины на установившийся режим.
//    *Участок 3 - участок микропрофиля для замера виброускорений
//     
// Исходные данные модели
//    Модуль подвески 
string string_W "файл КМ"="../../moduleW/UR-63095-O_(L2).elr";
//    Эквивалентная нагрузка на ось
scalar hW "высота параллелепипеда нагрузки"=2500 [mm];
scalar bW "толщина параллелепипеда нагрузки"=500 [mm];
scalar lW "ширина параллелепипеда нагрузки"=2500 [mm];
scalar zW "смещение параллелепипеда по Z"=200 [mm];
scalar mF "масса части рамы, приходящейся на ось"=2110 [kg];
scalar mK "масса подрессореной функциональной части, приходящейся на ось"=4645 [kg];
scalar fi "приведенная частота колебаний функциональной части"=5 [Hz];
scalar ksi "коэффициент демпфирования"=0.015;
scalar k "общая жесткость опор"=3400 [N/mm]*8;
//    манекен
scalar xE "X установки сиденья"=1750 [mm];
scalar yE "Y установки сиденья"=620 [mm];
scalar zE "Z установки сиденья"=400 [mm];
string string_E="../../load/_parts_UR-63095/seat+man.elr";
//    параметры испытания
scalar V0 "начальная скорость поддерживается програмным движением"=60 [ km/h ];
scalar T0 "время на уравновешивание"=2 [ s ];
scalar S1 "длина участка 1"=10 [m];
scalar S2 "длина участка 2"=45 [m];
scalar S3 "длина участка 3"=100 [m];
//    датчики вибрации на несущем модуле машины 
list nameVibr "имена датчиков вибрации"=list( "датчик 1", "датчик 2" );
list xVibr=list( 0 [mm], 0 [mm] );
list yVibr=list( 450 [mm], 450 [mm] );
list zVibr=list( 0 [mm], 500 [mm] );
//    площадка
//string string_MP "файл микропрофиля"="../../_road/profile/ISO_8608_21/cobblestone_29mm.elr";
string string_MP "файл микропрофиля"="../../_road/profile/ISO_8608_21/concrete_6mm.elr";
scalar mu_s "коэффициент трения скольжения"=0.9;
scalar k_r "отношение трения покоя к трению скольжения"=1.4;
scalar B "ширина площадки"=20 [m];
scalar dx "шаг изображения микропрофиля по координате X"=0.1 [m];
//    параметры интегрирования
scalar intMethod "метод интегрирования(1 - RK4_c; 2 - RKF5_a)"=1;
scalar stepStandard "стандартный шаг интегрирования"=0.001 [s];
scalar stepMin "минимальный шаг интегрирования"=0.0001 [s];
scalar stepMax "максимальный шаг интегрирования"=0.02 [s];
scalar errorInt "допустимая погрешность интегрирования"=0.005;
/////////////////////////////////////////////////////////////////////////////////////
//
// Исследуемые параметры модели ОХМ (должны быть переданы в агрегат модели aA)
scalar kV=32000 [ N ];
//
// Машина
scalar typeMTire "параметр выбора расчетной модели шин"=0;
sensor uS "управляющий сигнал угла поворота руля"=var( 0 [deg] );
sensor uA "положение сектора газа"=var( 0 );
sensor uB "положение сектора тормоза"=var( 0 );
scalar S01 "расстояние от исх. положения до начала переходного участка"=V0*T0;
scalar tVibr_begin "время начала расчета вибронагруженности"=(S01+S1+S2)/V0;
scalar tVibr_end "время окончания расчета вибронагруженности"=tVibr_begin+S3/V0;
node node_W=nodePoint( point( 0 [ m ], 0 [ m ], 0 [ m ] ) );
assembly aW=assembly( string_W, node_W, #kV = kV );
//
// Геометрия эквивалентной машины
point pK=move( aW.point0, projectZ, hW/2-zW+200 [mm] );
node nodeK=nodePoint( pK );
point pF=move( aW.point0, projectZ, 0.1*hW/2-zW );
node nodeF=nodePoint( pF );
solid sF=box( nodeF, bW, lW-885[mm], 0.2*hW, mass = mF );
solid sK=box( nodeK, bW+400 [mm], lW, hW-400 [mm], mass = mK );
body K=body( color = RGB( 204, 204, 204 ) );
body K < ( sK );
body F=body( color = RGB( 204, 204, 204 ) );
body F < ( sF );
//
scalar b=ksi*2*sqrt(k*mK);
scalar i=ksi/(PI*fi);
scalar ww=k/mK;
//scalar omega=sqrt(k/mK);
scalar omega=fi*2*PI;
scalar с=2*ksi/omega;
force force_FK=springTrans( F, pF, projectZ, K, pK, k, F01 = mK*10 [m/s2], damp = с);
joint joint_FK=translational( F, K, pF, projectZ );
joint joint_Base=rigid( list( F, aW.Base1 ) );
//
/*
// Манекен
point pE=point( -xE, yE, zE );
node nE=nodePN( pE, nodeK );
assembly aE "водитель"=assembly( string_E, nE, #tVibr_begin = tVibr_begin, #tVibr_end = tVibr_end );
joint rigid_EK=rigid( list( K, aE.B ) );
*/
// Дорога
//    микропрофиль
scalar BK "колея КМ для расчета микропрофиля"=fixValue( aW.yWC );
node node_MP=nodePoint( point( 0 [ m ], 0 [ m ], 0 [ m ] ) );
assembly aMP=assembly( string_MP, node_MP, #BK = BK );
//    площадка
scalar LM "база модуля"=1500 [mm];
scalar S0 "длина плоского участка"=LM*2+S01;
scalar SM "длина основного участка с микропрофилем"=S2+S3+LM*2;
string string_R "файл площадки"="_parts\road_v.elr";
scalar p0Z=worldZ( aW.pRoad );
point p0_Road=pointN( aW.node0, -LM*2, 0 [m], p0Z );
node node_R=nodePN( p0_Road, aW.node0 );
assembly aR=assembly( string_R, node_R, visible = hide:, #mu_s = mu_s, #k_r = k_r, #B = B, #S0 = S0, #S0M = S1, #SM = SM, #dx = dx,
     #h_L = aMP.h_L, #h_R = aMP.h_R, #hMax = aMP.hMax );
set ground = aR.Road;
gravity gravity1=parallel( reverse( projectZ ) );
//
// Остановка сборки при несоответствии длин микропрофиля в файле испытания и в файле микропрофиля
scalar Lmp "общая длина участка с микропрофилем"=SM+S1;
scalar model_crash=Lmp<=aMP.Lmp -> 0, 1/0;
//
point pCamera=pointToPlane( aW.node0, planePV( node_R, vectorZ( aW.node0 ) ) );
node cameraR=nodeYX( pCamera, vectorZ( aW.node0 ), vectorX( aW.node0 ) );
//
// Шины
scalar NWT "количество шин"=aW.WT.size;
list tire=listT( forceElement:, "tire2( aR.SRoad, aW.WT[~], aW.pWT[~], aW.vWT[~], aW.templWT[~], tireRing = aW.TRing[~] )", NWT );
//
// Параметры движения машины
string string_G="../../_parts/gauge_base.elr";
assembly aG=assembly( string_G, node_W, #nodeRBase = node_R, #nodeGauge = aW.node0 );
joint rigid_RG=rigid( list( aR.Road, aG.Road ) );
joint rigid_GG=rigid( list( F, aG.Gauge ) );
//
// Начальные условия
condition condition_V=transVelocity( aR.Road, vectorX( aW.node0 ), aW.Base1, aW.node0, V0 );
condition condition_W=rotVelocity( aR.Road, vectorZ( aW.node0), aW.Base1, 0 [rad/s]);
list condition_tire=listT( condition:, "wheelNoSlip( tire[~] )", NWT );
//
// Стабилизация курса и бокового отклонения
joint joint_stab0=user( aR.Road, aW.Base1, aW.node0, yesX:, noY:, yesZ:, noFiX:, noFiY:, noFiZ: );
//
// Поддержание скорости
sensor Vx1 "проекция скорости на продольную ось машины"=transVelocity( aR.Road, vectorX( aW.node0 ), aW.Base1, aW.node0, bodyFixVector = secondBody: );
motion motion_Vx1=ideal2( V0, Vx1, time );
//
// Датчики вибрации на раме машины
color color_BVibr=RGB( 255, 128, 0 );
scalar NVibr "число датчиков"=xVibr.size;
list nodeVibr=listT( node:, "nodePN( point( xVibr[~], yVibr[~], zVibr[~] ), aW.node0)", NVibr );
scalar rVibr=10 [mm];
scalar hVibr=100 [mm];
list solidX_Vibr=listT( solid:, "cylinder( move( nodeVibr[~], projectX, hVibr ), move( nodeVibr[~], projectX, -hVibr ), rVibr )", NVibr );
list solidY_Vibr=listT( solid:, "cylinder( move( nodeVibr[~], projectY, hVibr ), move( nodeVibr[~], projectY, -hVibr ), rVibr )", NVibr );
list solidZ_Vibr=listT( solid:, "cylinder( move( nodeVibr[~], projectZ, hVibr ), move( nodeVibr[~], projectZ, -hVibr ), rVibr )", NVibr );
list BVibr=listT( body:, "body( bodyGC = nodeVibr[~], color = color_BVibr )", NVibr);
list BVibr < ( nodeVibr, solidX_Vibr, solidY_Vibr, solidZ_Vibr );
joint joint_rigid_Vibr1=rigid( list( F, BVibr[1] ) );
joint joint_rigid_Vibr2=rigid( list( K, BVibr[2] ) );
list Vibration "виброускорения"=listT( sensor:, "vibration2( BVibr[~], nodeVibr[~])", NVibr );
event event_Vibr_begin=reformsBySensor( list( startProcess( Vibration ) ), time, tVibr_begin );
event event_Vibr_end=reformsBySensor( list( finishProcess( Vibration ) ), time, tVibr_end );
//
// Команды интегрирования
scalar TInterval=tVibr_end+0.1[s];
command dynam_RK4_c=constRK4( TInterval, stepStandard );
command dynam_RKF5_a=autoRKF5( TInterval, stepStandard, stepMin, stepMax, errorInt, errorInt );
//
// Дополнительные датчики
list h "ход подвески по центрам шин"=listT( sensor:, "bodyDisplacement( aW.Base1, aW.pWT[~], projectZ, aW.WT[~], aW.pWT[~] )", NWT );
//
// Команды исследования
command command1=plotFx( list( kV ), list( 85000 [ N ] ), list( 17 ), list( Vibration[1].Az_rms, Vibration[2].Az_rms ), dynam_RK4_c );
//
sensor_array aMIP=assemblyMIP( nodePoint( point( 0 [ m ], 0 [ m ], 0 [ m ] ) ) );
//
command command2=plotFx( list( fi ), list( 15 [ Hz ] ), list( 9 ), list( Vibration[1].Az_rms, Vibration[2].Az_rms, joint_FK.s ),
     dynam_RK4_c );
/\///////////////////////////////////////////////////////////////////////////////////
/\   Единицы измерения;
set units = SI;