Mini Project #1: Design and Simulation of Industrial
Control Systems
Environment Setup
The first step towards understanding the concepts of cyber-physical systems (CPS) security is to get familiar with their control logics and mechanisms. In the first mini-project, we will learn how to model an industrial control system (ICS) with its control logic. To do so, an advanced educational modeling software, namely Factory I/O coupled with Control I/O, will be used to model the process and design the underlying controller. The latest trial version of Factory I/O for Windows machines can be downloaded from here: Factory I/O trial version.
You can use this version for 30 days.
Factory I/O requires Windows operating system (OS). If you do not have access to a Windows machine, you can download Windows from Georgia Tech Azure Dev Tools (formally Microsoft Imagine). If you have a Mac, then Parallels Desktop is a great way to set up the Windows virtual environment. The trial version of Parallels is sufficient for this mini project but you can also get a student discount for the full version. Otherwise, any virtual machine manager is allowed (e.g., VirtualBox). If you use VirtualBox, then you may need to install Guest Additions.
so that GUI resolution auto-adjusts. Please note that Factory I/O needs a GPU for better graphical rendering performance and a good amount of RAM. Therefore, make sure you have allocated enough hardware resources from your host machine to get a smooth environment. If you are still unable to get a smooth running experience, try to decrease the graphical rendering quality within the Factory I/O settings.
Factory I/O
Inside Factory I/O, there is a visual environment where you can create the 3-D model of an industrial control process. Also, you can design a controller for the process, where the actuators are controlled by sensors, input buttons, and the underlying control logic. The control logic of the process can be embedded inside a programmable logic controller (PLC) connected to your computer. We will learn how to program a PLC in the next mini project. Instead of connecting a real PLC, in this mini project, you will use the Control I/O interface with Factory I/O to design your controller. You can connect the block diagrams of the inputs, sensors, and actuators with different logic to form your controller. This is very similar to programming in the Simulink/Matlab environment. Factory I/O can be very easy to learn, but for this project you are only working in Control I/O.
It does take some time to get familiar and comfortable with Factory I/O and Control I/O software. This project requires Function Block Diagram design which is a bit different from traditional software programming (there are no IF statements!). Please do not wait till the last weekend to start this project, as the estimated time of completion could be anywhere from 15 to 50 hours. Below are helpful resources to get started on Factory I/O, Control I/O, PLCs and Function Block Programming.
Table 1: Helpful Resources
Description |
Link |
Summaries of PLC Programming Languages |
isd-soft |
PLC Language Comparison |
automation.com |
(Technical Background Section) |
Lab Assignment |
Programming Language Features |
IEEE Paper |
PLC Design Approach |
ACC Automation |
Introduction to Function Blocks |
Function Blocks |
Free Tutorial |
PLC Academy |
Getting started with Control I/O |
YouTube Video |
Additional Note(s)
When you open a Factory I/O file, a blank Control I/O file might open. If this happens, you should not use this Control I/O, instead you will need to open the Control I/O file associated with your work. The blank Control I/O file will have a file name such as “Diagram1.controlio”, that is your indication to load your Control I/O file, or the one provided with the project archive. Make sure that the Control I/O file you are editing is the correct file. The best practice is to name the Factory I/O file and Control I/O file the same (with different extensions). Do not modify the 3D environment in Factory I/O.
1 Water Tank System (40 Points)
Part 1a - Water Tank System (0 Points)
In this part, the goal is to design and implement a water tank system that fills and drains automatically. In the pre-build Factory I/O scene, there are three water tanks. However, in this part only requires working with one water tank (NOT all three). Below are the steps required for the implementation:
The fill process starts when the start button is
Once the water level reaches 70% the tank’s capacity, the fill valve must stop and the drain valve should open to decrease the tank level to 50%. This filling and draining process should continue between 70% and 50% until the stop button is pressed. Note: There is a 2% tolerance, meaning that cycling between (68%-72%) and (48%- 52%) is
By pressing the stop button, the remaining water in Tank 1 must be drained and then the entire process must stop. Only when the tank has been fully drained, pressing the start button again must restart the entire
Pressing the start button while a tank is draining below its minimum cycle level (ex: 40% for Tank 1) can be ignored, or it can start the filling process, either method is
This implementation has already been done and the solution is provided in the assignment zip file. Also, there is a Youtube Video created to discuss how to implement the solution. This is provided as reference and to assist the learning curve required for working with Factory & Control I/O.
Part 1b - Logic Bomb Water Tank System (40 Points)
This part is an extension to the first, but will requiring using all three water tanks, and adding a logic bomb.
For the first tank, once the water level reaches to 70% of the tank’s capacity, the fill valve must stop and the drain valve must start and continue until the water level reaches 50% of tank’s capacity. This process must continue working in a repeated cycle until the stop button is pressed. There is a 0.2 (+/- 2%) tolerance, meaning that cycling between (68%-72%) and (48%-52%) is acceptable. By pressing the stop button, the remaining water in the tank must be drained and then the entire process must stop. Only when the tank has fully drained, pressing the start button again must restart the entire process.
For the second tank, once the water level reaches to 60% of the tank’s capacity, the fill valve must stop and the drain valve must start and continue until the water level reaches 40% of tank’s capacity. This process must continue working in a repeated cycle until the stop button is pressed. There is a 0.2 (+/- 2%) tolerance, meaning that cycling between (58%-62%) and (38%-42%) is acceptable. By pressing the stop button, the remaining water in the tank must be drained and then the entire process must stop. Only when the tank has fully drained, pressing the start button again must restart the entire process.
For the third tank, once the water level reaches to 50% of the tank’s capacity, the fill valve must stop and the drain valve must start and continue until the water level reaches 30% of tank’s capacity. This process must continue working in a repeated cycle until the stop button is pressed. There is a 0.2 (+/- 2%) tolerance, meaning that cycling between (48%-52%) and (28%-32%) is acceptable. By pressing the stop button, the remaining water in the tank must be drained and then the entire process must stop. Only when the tank has fully drained, pressing the start button again must restart the entire process.
After the first water tank completes two full cycles, the fill and drain logic of the second and third water tanks should be affected. A single cycle for the first water tank is defined as:
Start cycle at 70% → Drain to 50% → Fill back to 70%
In essence, the logic bomb should activate when the first water tank hits 70% for the third time (first fill to 70% then start cycling: first discharge, second fill to 70%, second discharge, third fill back to 70%). As a result, your logic bomb should cause the second water tank to cycle between 50% and 51%. Also, the third tank should fill to the capacity, 100%. Both the second and third water tanks should no longer respond to the Start/Stop buttons.
Grading Notes
A pre-built Factory I/O scene is provided, and you are not allowed to modify the pre-built scene, as this will be the scene used for grading. Any points lost due to scene modifications are not eligible for a regrade (including any sensors/actuators that are already FORCED). This part will be graded
under normal speed (1x); if your process takes too long (see Appendix A) to operate then you will lose points.
2 Sorting Station (35 Points)
Part 2a - Sorting Station (20 Points)
In this section, the goal is to design and implement a sorting station. Below are the steps required for implementation:
When the start button is pressed, all three rollers will emit pallets with boxes. One outer emitter (on the outer roller) will emit pallets with small boxes, and the other emitter (on the other roller) will emit pallets with large boxes. The middle roller should emit pallets with either small or large boxes (the emitter is already configured).
Once the pallets+box, on the middle roller, reach the chain transfer the pallets with small boxes should be sorted to the right and the pallets with the large boxes should sort to the left. The pallets (with boxes) emitted on the outer rollers should continue to be removed accordingly. (See video for additional details)
Once the pallets are properly sorted to the appropriate roller, they should continue to travel down and their respective roller and removed by the Remover at the end of the roller(s).
If the stop button is pressed, the process should pause and continue as normal when the start button is pressed again. (Note: You do not have to worry about the stop button being pressed mid-sort.)
Part 2b - Logic Bomb Sorting Station (15 Points)
For this part, the goal is to introduce a logic bomb into the implementation. After 5 large and 5 small boxes have been properly sorted, the logic bomb should trigger. The logic bomb should cause the sort logic to reverse and the system should stop responding to the start and stop buttons. Please note, the requirement is BOTH 5 large boxes and 5 small boxes. Therefore, if 7 large boxes are emitted in sequence then 5 small boxes are emitted in sequence, then a total of 12 boxes are sorted before the logic bomb triggers.
Grading Notes
A pre-built Factory I/O scene is provided, and you are not allowed to modify the pre-built scene, as this will be the scene used for grading. Any points lost due to scene modifications are not eligible for a regrade (including any sensors/actuators that are already FORCED). This part will be graded under normal speed (1x); if your process takes too long (see Appendix A) to operate then you will lose points.
3 Production Line (25 Points)
Part 3a - Production Line (20 Points)
In this section, the goal is to design and implement a production line system with production bases, lids, and a stackable box. Below are the steps required for implementation:
When the start button is pressed, the first conveyor belt should produce lids and the second conveyor belt should produce bases (emitters already configured). Also, stack-able boxes should be emitted by the third conveyor belt, the one perpendicular to the other two
When both a base and lid have reached their respective positioner, the Pick & Place should move the lid on top of the
When the lid+base has reached the third positioner, the second Pick & Place should move the lid+base into the stack-able box (emitted by the third conveyor belt).
Once two lid+base have been stacked inside the stack-able box, the stack-able box should continue to move down the conveyor belt and removed via the
If the stop button is pressed, the process should pause and continue as normal when the start button is pressed
Part 3b - Logic Bomb Production Line (5 Points)
For this part, the goal is to introduce a logic bomb into the implementation. After two stack-able boxes have been removed (4 lid+base), the logic bomb should trigger. The logic bomb should cause 3 lid+bases to be required before removing the stack-able box.
Grading Notes
A pre-built Factory I/O scene is provided, and you are not allowed to modify the pre-built scene, as this will be the scene used for grading. Any points lost due to scene modifications are not eligible for a regrade (including any sensors/actuators that are already FORCED). This part will be graded under normal speed (1x); if your process takes too long (see Appendix A) to operate then you will lose points.
Course Created Youtube Videos
To better assist this assignment, a series of Youtube videos have been created to highlight the requirements for each part.
Table 2: Youtube Videos
Section |
Normal |
Logic Bomb |
Water Tank |
Link |
Link |
Sorting Station |
Link |
Link |
Production Line |
Link |
Link |
A Evaluation
Table 3: Water Tank Logic Bomb Evaluation (40 Points)
Requirement |
Points |
Notes |
Water System Starts |
5 |
All three tanks start filling when Start button is pressed |
Water System Cycles |
5 |
Each water tank cycles appropriately |
Water Tank Stop |
5 |
All water tanks drain completely when stop button pressed |
Water Tank Restart |
5 |
Water tanks start appropriately after tank completely drained |
Logic Bomb Triggers |
10 |
Logic bomb triggers after first water tank completes two cycles |
Second Water Tank |
5 |
Tank 2 cycles between 50% and 51% |
Third Water Tank |
5 |
Tank 3 fills to 100% |
Table 4: Sorting Station (20 Points)
Requirement |
Points |
Notes |
Process Starts/Stops |
5 |
Process starts and stops appropriately when Start and Stop button(s) pressed |
Small Box Sort |
5 |
Process accurately sorts pallets with small boxes to the right roller |
Large Box Sort |
5 |
Process accurately sorts pallets with large boxes to the left roller |
Pallet+Box Removal |
5 |
Once pallet+box sorted they are appropriately removed by Remover |
Table 5: Sorting Station Logic Bomb (15 Points)
Requirement |
Points |
Notes |
Logic Bomb Trigger |
5 |
Logic bomb triggers after 5 large boxes and 5 small boxes sorted |
Reversed Sort Logic and Removal |
5 |
Boxes accurately removed in opposite rollers |
Start/Stop Button |
5 |
Start/Stop buttons stop working |
Table 6: Production Line (20 Points)
Requirement |
Points |
Notes |
Process Starts/Stops |
5 |
Process starts and stops appropriately when Start and Stop button(s) pressed |
First Pick & Place |
5 |
Pick & Place properly moves lid on-top of base |
Second Pick & Place |
5 |
Pick & Place properly moves base+lid into stack-able box |
Stack-able Box Removal |
5 |
Stack-able box properly removed with two base+lid(s) |
Table 7: Production Line Logic Bomb (5 Points)
Requirement |
Points |
Notes |
Logic Bomb Trigger & 3 Lid+Base Removal |
5 |
Logic bomb triggers after two stack-able boxes removed, causing each stack-able box to have 3 lid+base(s) |
CS 340 Milestone One Guidelines and Rubric Overview: For this assignment, you will implement the fundamental operations of create, read, update,
Retail Transaction Programming Project Project Requirements: Develop a program to emulate a purchase transaction at a retail store. This
7COM1028 Secure Systems Programming Referral Coursework: Secure
Create a GUI program that:Accepts the following from a user:Item NameItem QuantityItem PriceAllows the user to create a file to store the sales receip
CS 340 Final Project Guidelines and Rubric Overview The final project will encompass developing a web service using a software stack and impleme