1 / 12

Tray allocation for a sortation system Real-time version Iteration III

Tray allocation for a sortation system Real-time version Iteration III. TI-VDM2 Project by José Antonio Esparza and Kim Bjerge. Today’s presentation. Status on real-time model Update on concurrent model behavior (UML) Update on real-time model (VDM). Status for RT model.

agalia
Télécharger la présentation

Tray allocation for a sortation system Real-time version Iteration III

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Tray allocation for a sortation systemReal-time versionIteration III TI-VDM2 Project by José Antonio Esparza and Kim Bjerge Sortation System, TrayAllocation

  2. Today’spresentation • Status on real-time model • Updateonconcurrent model behavior (UML) • Updateon real-time model (VDM) Sortation System, Tray Allocation

  3. Status for RT model • Thread’s deployed to CPU’s • CPU for each induction • TrayAllocator on a central CPU controller • Removed TimeStamp and TrayStep • Made periodic thread for TrayAllocator • duration used for induction rate • Version running Issues for next time • How to feed items on based on time? • Alternative deployment one CPU for two InductionControllers • Error reading logrt? • (30 errors encoutered in file) • Why we can’t fill the sorter (19/20)? Sortation System, TrayAllocation

  4. Object diagram concurrent version Sortation System, Tray Allocation

  5. Behavior of concurrent model (Sequence #1) Sortation System, Tray Allocation

  6. Behavior of concurrent model (Sequence part #2) Sortation System, Tray Allocation

  7. RT version of SC – system instance variables cpuIC1 : CPU := new CPU (<FCFS>,1E6); cpuIC2 : CPU := new CPU (<FCFS>,1E6); cpuIC3 : CPU := new CPU (<FP>,1E9); cpuTA4 : CPU := new CPU (<FCFS>,1E6); bus1 : BUS := new BUS (<FCFS>,1E3,{cpuIC1,cpuTA4}); bus2 : BUS := new BUS (<FCFS>,1E3,{cpuIC2,cpuTA4}); bus3 : BUS := new BUS (<FCFS>,1E3,{cpuIC3,cpuTA4}); public static ic1 : InductionController := new InductionController(1); public static ic2 : InductionController := new InductionController(2); public static ic3 : InductionController := new InductionController(3); public static inductionGroup : seq of InductionController := [ic1, ic2, ic3]; public static allocator : TrayAllocator := new TrayAllocator(inductionGroup); operations public SC: () ==> SC SC() == ( cpuIC1.deploy(ic1); cpuIC2.deploy(ic2); cpuIC3.deploy(ic3); cpuTA4.deploy(allocator); ); Sortation System, Tray Allocation

  8. RT version of TrayAllocatorperiodicthread -- Periodic thread operation that simulates the TrayStep TrayStep: () ==> () TrayStep () == ( trayCount := trayCount + 1; IO`print("< " ^ String`NatToStr(trayCount) ^ ">"); CardReader(trayCountmod TrayAllocator`NumOfTrays + 1, <Empty>); -- Induct items for all waiting inductions CheckItemsToInduct(); ); thread -- periodic (20000, 0, 0, 0) (TrayStep); Sortation System, Tray Allocation

  9. RT version of InductionControllerthread -- Permission predicate on Wait operation (Moved from TrayAllocator) per Wait => threadid not in set domallocator.icThreadsWaiting; thread ( while (ItemsToInduct()) do ( -- Request tray allocator to induct item and wait for induction let item = GetFirstItem() in ( allocator.RequestTray(threadid, selfIC, item); Wait(); ); -- In teory this value should be 2x20000 see periodic thread in TrayAllocator duration(30000) WaitInductionRate(); ); ); Sortation System, Tray Allocation

  10. RT version of SorterEnviromentthread whilebusy do ( timeStep := timeStep + 1; for all i in set {1,...,TrayAllocator`NumOfInductions} do ( -- Check for item to feed induction at time step let size = itemLoader.GetItemAtTimeStep(timeStep, i) in if (size > 0) then ( itemId := itemId + 1; IO`print("[ " ^ String`NatToStr(timeStep) ^ "]"); inductionGroup(i).FeedItem(new Item(size, itemId)); ); ); -- Check if simulation is finish if (time >= itemLoader.GetNumTimeSteps()) then busy := false; ); Sortation System, Tray Allocation

  11. Async operation FeedItem in InductionController -- Enviroment feeds a new item on induction async public FeedItem: Item ==> () FeedItem(i) == items := items ^ [i]; sync -- Enviroment and TrayAllocatorthreads mutex (FeedItem); -- Async new mutexneeded! mutex (FeedItem, InductFirstItem); Sortation System, Tray Allocation

  12. Simulation Result *Induction id 1 -> Item id 16 size 100 on tray id 1 *Induction id 3 -> Item id 20 size 300 on tray id 5 < 18 >< 19 >< 20 >< 21 >*Induction id 2 -> Item id 19 size 200 on tray id 7 < 22 >--------------------------------------------- Simulation completed for sorter configuration --------------------------------------------- Specifiedthroughput [items/hour]: 10000 Sorter speed [mm/sec]: 2000 Item max size [mm]: 1500 Item min size [mm]: 100 Tray size [mm]: 600 Number of trays : 20 Number of inductions : 3 Induction rate : 2 Induction separation [trays]: 2 ---------------------------------------------- Number of trays with items : 19 Two tray items on sorter : 0 Number of tray steps : 23 Number of inducted items : 19 Calculatedthroughput[items/hour]: 9913 ---------------------------------------------- **** Sorter is not full **** ---------------------------------------------- new World().Run() = () Sortation System, Tray Allocation

More Related