📄 hdd2.mdl
字号:
Tag "__orphan__"
Ports [5, 0, 0, 0, 0, 0, 1]
Position [190, 200, 300, 260]
Orientation "left"
SourceBlock "mblibv1/Sensors & \nActuators/Joint Stiction Ac"
"tuator"
SourceType "msb"
PortType "blob"
PhysicalDomain "Mechanical"
ActuationStyle "Force"
AngleUnits "deg"
ArcVelocityUnits "deg/s"
ArcAccelerationUnits "deg/s^2"
CoordPositionUnits "m"
VelocityUnits "m/s"
AccelerationUnits "m/s^2"
ForceUnits "N"
TorqueUnits "N-m"
ClassName "JointStictionActuator"
DialogClass "EventActuatorBlock"
Primitive "R1"
FrictionalForceUnits "N"
ExternalForceUnits "N"
FrictionalTorqueUnits "N-m"
ExternalTorqueUnits "N-m"
LockingTolerance "1e-2"
}
Block {
BlockType Reference
Name "platter"
Ports [0, 0, 0, 0, 0, 1]
Position [52, 90, 248, 110]
Orientation "up"
NamePlacement "alternate"
SourceBlock "mblibv1/Bodies/Body"
SourceType "msb"
PhysicalDomain "mechanical"
SubClassName "Unknown"
PortType "workingframe"
LConnTagsString "CS1"
ClassName "Body"
DialogClass "MechanicalBodyBlock"
Mass "0.01"
MassUnits "kg"
InertiaUnits "kg*m^2"
Inertia "eye(3)"
Shape "Cylinder"
ShapeDims "[1 1]"
ShapeUnits "m"
ShapeUse "false"
Density "1"
DensityUnits "kg/m^3"
DensityUse "false"
CG "Left$CG$[0 0 0]$WORLD$WORLD$m$[0 0 0]$Euler X-Y"
"-Z$deg$WORLD$false"
WorkingFrames "Left$CS1$[0 0 0]$CG$CG$m$[0 0 0]$Euler X-Y-Z$de"
"g$WORLD$true"
}
Block {
BlockType SubSystem
Name "preamp"
Ports [0, 2, 0, 0, 0, 1]
Position [340, 96, 415, 154]
TreatAsAtomicUnit off
Port {
PortNumber 1
PropagatedSignals "ang vel"
ShowPropagatedSignals "on"
TestPoint off
LinearAnalysisOutput off
LinearAnalysisInput off
RTWStorageClass "Auto"
DataLogging off
DataLoggingNameMode "SignalName"
DataLoggingDecimateData off
DataLoggingDecimation "2"
DataLoggingLimitDataPoints off
DataLoggingMaxPoints "5000"
}
System {
Name "preamp"
Location [137, 137, 662, 270]
Open off
ModelBrowserVisibility off
ModelBrowserWidth 200
ScreenColor "white"
PaperOrientation "landscape"
PaperPositionMode "auto"
PaperType "usletter"
PaperUnits "inches"
ZoomFactor "100"
Block {
BlockType Reference
Name "Platter Sensor"
Tag "__orphan__"
Ports [0, 2, 0, 0, 0, 1]
Position [80, 30, 120, 70]
SourceBlock "mblibv1/Sensors & \nActuators/Joint Sensor"
SourceType "msb"
PortType "blob"
PhysicalDomain "Mechanical"
Muxed "off"
Pose "off"
Angle "on"
AngleUnits "deg"
ArcVelocity "on"
ArcVelocityUnits "deg/s"
ArcAcceleration "off"
ArcAccelerationUnits "deg/s^2"
CoordPosition "on"
CoordPositionUnits "m"
Velocity "off"
VelocityUnits "m/s"
Acceleration "off"
AccelerationUnits "m/s^2"
Quaternion "on"
QuaternionDT "off"
QuaternionDDT "off"
QuaternionUnits "off"
OutputVector "[ 1 1 ]"
ClassName "JointSensor"
DialogClass "MechanicalSensorBlock"
Primitive "R1"
Force "off"
ForceUnits "N"
Torque "off"
TorqueUnits "N-m"
ReferenceFrame "Absolute (INERTIAL)"
ReactionSensedSide "Base"
ReactionReferenceFrame "Absolute (World)"
ReactionForce "off"
ReactionForceUnits "N"
ReactionMoment "off"
ReactionMomentUnits "N-m"
Port {
PortNumber 1
Name "angle"
TestPoint off
LinearAnalysisOutput off
LinearAnalysisInput off
RTWStorageClass "Auto"
DataLogging off
DataLoggingNameMode "SignalName"
DataLoggingDecimateData off
DataLoggingDecimation "2"
DataLoggingLimitDataPoints off
DataLoggingMaxPoints "5000"
}
Port {
PortNumber 2
Name "ang vel"
TestPoint off
LinearAnalysisOutput off
LinearAnalysisInput off
RTWStorageClass "Auto"
DataLogging off
DataLoggingNameMode "SignalName"
DataLoggingDecimateData off
DataLoggingDecimation "2"
DataLoggingLimitDataPoints off
DataLoggingMaxPoints "5000"
}
}
Block {
BlockType Sum
Name "Sum"
Ports [2, 1]
Position [255, 30, 275, 50]
ShowName off
IconShape "round"
Inputs "|++"
InputSameDT off
OutDataTypeMode "Inherit via internal rule"
}
Block {
BlockType Constant
Name "convert angle to LUT index"
Position [250, 80, 280, 110]
Orientation "up"
NamePlacement "alternate"
Value "180"
}
Block {
BlockType Lookup2D
Name "stored bits"
Position [390, 27, 445, 78]
InitFcn "COLINBITS=[-ones(1,180) ; ones(1,180)];\nCO"
"LINBITS = reshape(COLINBITS, 360, 1);\nCOLINBITS=[COLINBITS COLINBITS]; "
" "
RowIndex "[1:360]"
ColumnIndex "[1:2]"
OutputValues "COLINBITS"
ShowAdditionalParam on
LookUpMeth "Use Input Nearest"
InputSameDT off
Port {
PortNumber 1
Name "bits"
TestPoint off
LinearAnalysisOutput off
LinearAnalysisInput off
RTWStorageClass "Auto"
DataLogging off
DataLoggingNameMode "SignalName"
DataLoggingDecimateData off
DataLoggingDecimation "2"
DataLoggingLimitDataPoints off
DataLoggingMaxPoints "5000"
}
}
Block {
BlockType Constant
Name "track number:\nthe arm motion\nwould drive "
"here"
Position [330, 50, 360, 80]
}
Block {
BlockType PMIOPort
Name "head"
Position [25, 43, 55, 57]
Port "1"
Side "left"
}
Block {
BlockType Outport
Name "ang_vel"
Position [175, 53, 205, 67]
}
Block {
BlockType Outport
Name "data"
Position [490, 48, 520, 62]
Port "2"
}
Line {
Name "angle"
Labels [0, 0]
SrcBlock "Platter Sensor"
SrcPort 1
DstBlock "Sum"
DstPort 1
}
Line {
SrcBlock "track number:\nthe arm motion\nwould drive "
"here"
SrcPort 1
DstBlock "stored bits"
DstPort 2
}
Line {
SrcBlock "Sum"
SrcPort 1
DstBlock "stored bits"
DstPort 1
}
Line {
SrcBlock "convert angle to LUT index"
SrcPort 1
DstBlock "Sum"
DstPort 2
}
Line {
Name "ang vel"
Labels [0, 0]
SrcBlock "Platter Sensor"
SrcPort 2
DstBlock "ang_vel"
DstPort 1
}
Line {
LineType "Connection"
SrcBlock "head"
SrcPort RConn1
DstBlock "Platter Sensor"
DstPort LConn1
}
Line {
Name "bits"
Labels [0, 0]
SrcBlock "stored bits"
SrcPort 1
DstBlock "data"
DstPort 1
}
}
}
Block {
BlockType DiscretePulseGenerator
Name "reset after transient 100s"
Position [730, 328, 775, 362]
AttributesFormatString "A = %<Amplitude>"
Period "100000"
PulseWidth "90000"
PhaseDelay "10000"
SampleTime "0.01"
}
Block {
BlockType Reference
Name "spin motor"
Ports [0, 0, 0, 0, 0, 2, 2]
Position [137, 140, 188, 195]
Orientation "up"
NamePlacement "alternate"
SourceBlock "mblibv1/Joints/Revolute"
SourceType "msb"
PhysicalDomain "mechanical"
SubClassName "Unknown"
PortType "blob"
LConnTagsString "__newl0|SA1"
RConnTagsString "__newr0|SA1"
NumSAPorts "2"
CutJoint "off"
MarkAsCut "off"
Primitives "revolute"
PrimitiveProps "R1$WORLD$[0 0 1]$revolute"
ClassName "Joint"
DialogClass "JointBlock"
}
Block {
BlockType Reference
Name "spin stand"
Tag "__orphan__"
Ports [0, 0, 0, 0, 0, 0, 1]
Position [130, 240, 170, 280]
Orientation "up"
NamePlacement "alternate"
SourceBlock "mblibv1/Bodies/Ground"
SourceType "msb"
PortType "workingframe"
PhysicalDomain "Mechanical"
DialogClass "GroundBlock"
ClassName "Ground"
CoordPosition "[0 0 0]"
CoordPositionUnits "m"
StateVectorMgrId "-1"
}
Block {
BlockType Constant
Name "zero"
Position [320, 235, 350, 265]
Orientation "left"
Value "0"
}
Line {
LineType "Connection"
SrcBlock "spin stand"
SrcPort RConn1
DstBlock "spin motor"
DstPort LConn1
}
Line {
LineType "Connection"
SrcBlock "platter"
SrcPort LConn1
DstBlock "spin motor"
DstPort RConn1
}
Line {
LineType "Connection"
SrcBlock "motor forces\ndrive and friction"
SrcPort RConn1
DstBlock "spin motor"
DstPort LConn2
}
Line {
LineType "Connection"
SrcBlock "spin motor"
SrcPort RConn2
DstBlock "preamp"
DstPort LConn1
}
Line {
Name "disturb"
Labels [0, 0]
SrcBlock "Friction disturbance"
SrcPort 1
DstBlock "Sum1"
DstPort 1
}
Line {
SrcBlock "Friction/back emf coeff"
SrcPort 1
DstBlock "Sum1"
DstPort 2
}
Line {
Name "Friction proportional to ang vel"
Labels [1, 0]
SrcBlock "Product"
SrcPort 1
Points [-35, 0; 0, -275]
DstBlock "motor forces\ndrive and friction"
DstPort 2
}
Line {
SrcBlock "DC Drive signal"
SrcPort 1
DstBlock "Sum3"
DstPort 1
}
Line {
SrcBlock "Sum3"
SrcPort 1
DstBlock "motor forces\ndrive and friction"
DstPort 1
}
Line {
SrcBlock "Gain"
SrcPort 1
Points [-80, 0]
DstBlock "Sum3"
DstPort 2
}
Line {
Labels [0, 0]
SrcBlock "From1"
SrcPort 1
DstBlock "Scope"
DstPort 2
}
Line {
Labels [0, 0]
SrcBlock "preamp"
SrcPort 1
Points [0, 0; 265, 0]
Branch {
Points [170, 0; 0, 50]
DstBlock "Scope"
DstPort 1
}
Branch {
Points [0, 30]
DstBlock "Goto1"
DstPort 1
}
}
Line {
SrcBlock "zero"
SrcPort 1
Points [0, 0]
Branch {
Points [0, -10]
Branch {
DstBlock "motor forces\ndrive and friction"
DstPort 3
}
Branch {
DstBlock "motor forces\ndrive and friction"
DstPort 4
}
}
Branch {
DstBlock "motor forces\ndrive and friction"
DstPort 5
}
}
Line {
Name "f_error"
Labels [2, 0]
SrcBlock "CDR"
SrcPort 1
Points [0, 0; -10, 0]
Branch {
Labels [1, 0]
Points [0, 70]
Branch {
Points [235, 0]
Branch {
DstBlock "RMS"
DstPort 1
}
Branch {
Labels [2, 0]
Points [0, -85]
DstBlock "Scope"
DstPort 3
}
}
Branch {
Points [0, 20]
DstBlock "error"
DstPort 1
}
}
Branch {
DstBlock "Gain"
DstPort 1
}
}
Line {
Labels [0, 0]
SrcBlock "From3"
SrcPort 1
Points [-10, 0]
DstBlock "Product"
DstPort 1
}
Line {
Name "friction"
Labels [0, 0]
SrcBlock "Sum1"
SrcPort 1
Points [0, 0; -30, 0]
Branch {
DstBlock "Product"
DstPort 2
}
Branch {
Points [0, 105]
DstBlock "Goto"
DstPort 1
}
}
Line {
SrcBlock "RMS"
SrcPort 1
Points [0, 0; 5, 0]
Branch {
DstBlock "meanerror"
DstPort 1
}
Branch {
Points [0, 75]
DstBlock "To Workspace"
DstPort 1
}
}
Line {
SrcBlock "reset after transient 100s"
SrcPort 1
DstBlock "RMS"
DstPort 2
}
Line {
SrcBlock "preamp"
SrcPort 2
Points [240, 0; 0, 115]
DstBlock "CDR"
DstPort 1
}
Annotation {
Name "Simple Model of a Hard Disk Drive spin controll"
"er\nMulti domain (mechanical, signal processing) simulation\nusing Simulink, "
"DSP Blockset, and SimMechanics"
Position [238, 50]
FontName "Arial"
FontSize 18
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -