This Dezyne example is Chong Liu’s submission for the Dezyne Challenge 2016.
The Wafer Measurement System (WMS) is developed to explore the feasibility of developing a cyber physical system in Model-driven engineering (MDE) approach.
A Wafer Measurement System is a wafer handling system where each provide wafer is heated up, measured and then deposited.
The resources are listed below and shown in Figure 1.
These are the locations:
These are the robots used for moving the wafers between the locations:
The peripherals of each resource are shown in Figure 2.
Each robot has:
At the Condition, there are:
At the Measurement Stage, there are:
All available robot positions are shown as square blocks in Figure 3. The Load Robot can go to any position except ”ABOVE_OUT” and ”AT_OUT” while the Unload Robot can go to one of the following positions: ”ABOVE_OUT”, ”AT_OUT”, ”ABOVE_MEA” and ”AT_MEA”.
Eventually, each wafer in the Input Tray will be heated up, measured and delivered to the Output Tray. There should be no collision between the two robots. The Load Robot is always at least one location left to the Unload Robot, i.e. the Unload Robot is always at least one location right to the Load Robot.
The Load Robot can clamp a wafer only at AT_IN or AT_COND, and can release a wafer only after arriving at either AT_COND or AT_DRILL. The Unload Robot can clamp a wafer only at AT_COND or AT_DRILL, and can release a wafer only after arriving at either AT_DRILL or AT_OUT. If there is a wafer at the Condition or Measurement Stage, it is not allowed to put another wafer on it.
The heating up action should happen after the wafer is clamped on the Condition. The driller should work after the wafer is clamped on the Measurement Stage. Only the heated up wafers can go to the Measurement Stage. Only the measured wafers can be delivered to the Output Tray.
The system can be stopped during process, initialized after being stopped and then continue from where it stopped. The stop action can only be done when all the clamps in the system are in static state, i.e. either released or engaged. There should be time limitation for initialization and stopping.
The control software of the WMS is developed in Dezyne according to the design requirements. The architecture view of the Dezyne model is shown in the figure below.
As illustrated in the picture, the controller system includes all the parts within the red block. The interfaces of the system are denoted as ”I + external source name” in this document. For example, the interface between the client and the controller system is IClient. The actions on each interface are summarized in Table 1 of the Appendix.
Besides the design requirements, there are also a few properties listed as follows which can help in understanding the designed behavior:
We assume there are always enough wafers in the Input Tray.
The Load&Process and Unload subcontrollers are in parallel, i.e. it is possible to start loading and processing the 2nd wafer when the 1st wafer is in unloading process.
As indicated by the design requirements, the stopping process should be done only when all the clamps are not busy, i.e. either released or engaged. So there is no need to initialize or stop a clamp.
After an initialization or stopping sequence fails, the system is in fail state. In order to recover, the main controller has to wait for the ”Init_done” or ”Stop_done” signals from all the busy (either initializing or stopping) subcomponents. When the system is recovered, it is possible to reinitialize.
It is possible to continue from where the system was stopped when at least one of Load&Process and Unload subcontrollers is not idle.
Graphical User Interface
After modelling the WMS controller system, the system properties have been verified in Dezyne. Than the source code was generated and integrated into a Graphical User Interface (GUI). All the parts outside the red block in the figure above are replaced by the GUI. The GUI is shown as follows:
As shown in the figure below, the ”In” actions of IClient and the "Out" actions of the other interfaces are represented by the button, i.e. clicking a specific button means the firing of the corresponding action. The firing of other actions are shown in the labels of the GUI. If the user presses a button which is an illegal action, an error message box will be triggered and the whole program will be aborted.