Skip to content

Commit 3e84885

Browse files
committed
Updated SysML v2 Annex B Simple Vehicle Model.
1 parent 5fa97d3 commit 3e84885

1 file changed

Lines changed: 60 additions & 7 deletions

File tree

sysml/src/examples/Vehicle Example/SysML v2 Spec Annex B SimpleVehicleModel.sysml.sysml renamed to sysml/src/examples/Vehicle Example/SysML v2 Spec Annex B SimpleVehicleModel.sysml

Lines changed: 60 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
package SimpleVehicleModel{
2+
// ran 2022-11 release
23
import Definitions::*;
34
import ISQ::*;
45
package Definitions{
@@ -29,6 +30,7 @@ package SimpleVehicleModel{
2930
port ignitionCmdPort:IgnitionCmdPort;
3031
port pwrCmdPort:PwrCmdPort;
3132
port vehicleToRoadPort:VehicleToRoadPort;
33+
port statusPort:StatusPort;
3234
perform action providePower;
3335
perform action provideBraking;
3436
perform action controlDirection;
@@ -226,6 +228,7 @@ package SimpleVehicleModel{
226228
port def IgnitionCmdPort{
227229
in item ignitionCmd:IgnitionCmd;
228230
}
231+
port def StatusPort;
229232
port def GearPort;
230233
port def PwrCmdPort{
231234
in item pwrCmd:PwrCmd;
@@ -267,7 +270,7 @@ package SimpleVehicleModel{
267270

268271
port def VehicleToRoadPort;
269272
port def ControlPort;
270-
port def CruiseControlPort;
273+
port def CruiseControlPort:>ControlPort;
271274
port def SpeedSensorPort;
272275
port def SetSpeedPort;
273276

@@ -301,6 +304,7 @@ package SimpleVehicleModel{
301304
item def IgnitionCmd:>DriverCmd{
302305
attribute ignitionOnOff:IgnitionOnOff;
303306
}
307+
item def EngineStatus;
304308

305309
attribute def VehicleStartSignal;
306310
attribute def VehicleOnSignal;
@@ -320,7 +324,7 @@ package SimpleVehicleModel{
320324
interface def FuelInterface {
321325
end fuelOutPort:FuelPort;
322326
end fuelInPort:~FuelPort;
323-
flow fuelOutPort.fuel to fuelInPort.fuel;
327+
flow of Fuel from fuelOutPort.fuel to fuelInPort.fuel;
324328
}
325329

326330
interface def WheelFastenerInterface{
@@ -335,6 +339,7 @@ package SimpleVehicleModel{
335339
interface wheelFastenerInterface:WheelFastenerInterface [5]
336340
connect lugNutCompositePort.lugNutPort to shankCompositePort.shankPort;
337341
}
342+
338343
connection def GenericConnection {
339344
end genericItem1:GenericItem;
340345
end genericItem2:GenericItem;
@@ -705,7 +710,7 @@ package SimpleVehicleModel{
705710
connect vehicleSoftware.vehicleController.controlPort to engine.engineControlPort;
706711
bind vehicle_b.setSpeedPort = vehicleSoftware.vehicleController.cruiseController.setSpeedPort;
707712
connect speedSensor.speedSensorPort to vehicleSoftware.vehicleController.cruiseController.speedSensorPort;
708-
connect vehicleSoftware.vehicleController.cruiseController.cruiseControlPort to engine.engineControlPort;
713+
bind vehicleSoftware.vehicleController.cruiseController.cruiseControlPort = vehicleSoftware.vehicleController.controlPort;
709714
connect transmission.shaftPort_a to driveshaft.shaftPort_b;
710715
connect driveshaft.shaftPort_c to rearAxleAssembly.shaftPort_d;
711716
bind rearAxleAssembly.rearWheel1.wheelToRoadPort=vehicleToRoadPort.wheelToRoadPort1;
@@ -743,6 +748,51 @@ package SimpleVehicleModel{
743748
action senseTemperature: SenseTemperature;
744749
}
745750
package DiscreteInteractions{
751+
package Sequence{
752+
part def Driver{
753+
port p1;
754+
port p2;
755+
}
756+
/*
757+
part def Vehicle{
758+
port ignitionCmdPort;
759+
}
760+
item def IgnitionCmd;
761+
item def EngineStatus;
762+
*/
763+
764+
part part0{
765+
perform action startVehicle{
766+
action turnVehicleOn send ignitionCmd via driver.p1{
767+
in ignitionCmd:IgnitionCmd;
768+
}
769+
action trigger1 accept ignitionCmd:IgnitionCmd via vehicle.ignitionCmdPort;
770+
flow of IgnitionCmd from trigger1.ignitionCmd to startEngine.ignitionCmd;
771+
action startEngine{
772+
in item ignitionCmd:IgnitionCmd;
773+
out item es:EngineStatus;
774+
}
775+
flow of EngineStatus from startEngine.es to sendStatus.es;
776+
action sendStatus send es via vehicle.statusPort{
777+
in es:EngineStatus;
778+
}
779+
action trigger2 accept es:EngineStatus via driver.p2;
780+
}
781+
part driver : Driver {
782+
perform startVehicle.turnVehicleOn;
783+
perform startVehicle.trigger2;
784+
event occurrence driverReady;
785+
}
786+
part vehicle : Vehicle {
787+
perform startVehicle.trigger1;
788+
perform startVehicle.sendStatus;
789+
event occurrence doorClosed;
790+
}
791+
first vehicle.doorClosed then driver.driverReady;
792+
message of ignitionCmd:IgnitionCmd from driver.turnVehicleOn to vehicle.trigger1;
793+
message of es:EngineStatus from vehicle.sendStatus to driver.trigger2;
794+
}
795+
}
746796
occurrence CruiseControl1{
747797
part vehicle_b:>PartsTree::vehicle_b{
748798
port redefines setSpeedPort{
@@ -881,7 +931,7 @@ package SimpleVehicleModel{
881931
#derivation connection {
882932
end #original ::> vehicleSpecification.vehicleMassRequirement;
883933
end #derive ::> engineSpecification.engineMassRequirement;
884-
//end #derive :> other mass requirements;
934+
//end #derive ::> other mass requirements;
885935
}
886936

887937
}
@@ -1201,6 +1251,8 @@ package SimpleVehicleModel{
12011251
in massMeasured:>ISQ::mass;
12021252
out verdict = PassIf(vehicleSpecification.vehicleMassRequirement(vehicle_uut));
12031253
}
1254+
flow from weighVehicle.massMeasured to evaluatePassFail.massMeasured;
1255+
return :>> verdict = evaluatePassFail.verdict;
12041256
}
12051257
}
12061258
package VerificationSystem{
@@ -1476,7 +1528,7 @@ package SimpleVehicleModel{
14761528
// optional variation point
14771529
variation part sunroof:Sunroof;
14781530
// selection constraint
1479-
assert constraint {
1531+
assert constraint selectionConstraint{
14801532
(engine==engine::engine4Cyl and transmissionChoices==TransmissionChoices::transmissionManual) xor
14811533
(engine==engine::engine6Cyl and transmissionChoices==TransmissionChoices::transmissionAutomatic)
14821534
}
@@ -1546,5 +1598,6 @@ package SimpleVehicleModel{
15461598
}
15471599
}
15481600
}
1549-
1550-
}
1601+
}
1602+
1603+

0 commit comments

Comments
 (0)