# Introduction - [Introduction](#introduction) - [What is OpenPLC?](#what-is-openplc) - [Our story](#our-story) - [Our solutions](#our-solutions) - [Hardware](#hardware) - [Software](#software) - [Community and contributing](#community-and-contributing) - [Forking and cloning](#forking-and-cloning) - [Directory Structure](#directory-structure) - [Licence](#licence) ## What is OpenPLC? OpenPLC is an open source **P**rogrammable **L**ogic **C**ontroller(**PLC**). Our hardware/s are functionally PLCs that can be programmed using [Ladder Logic diagram (LD)](https://en.wikipedia.org/wiki/Ladder_logic), as well as [Function Block diagram (FBD)](https://en.wikipedia.org/wiki/Function_block_diagram). We have designed the systems for academic purpose and to enable effective learning of programming PLCs. For this reason, we are also providing a set of *modules* that supplement the PLCs, which can be used to perform experiments like *simple traffic light, elevator, conveyor belt etc.* ## Our story Few years ago we came across the need for an affordable and functional PLC for educational purposes. Every year, a large number of students in our colleges are undergoing training in PLCs without proper hands-on experience. The sky-high cost of the setup is a reason, also is the high maintenance because of being used by students. Vendor specific tools and work-flow, which are often complex, is another hindrance. ## Our solutions ### Hardware OpenPLC consists of **two** versions - OpenPLC Version 1 : Hardware based on AVR's [**ATmega16A**](https://www.microchip.com/wwwproducts/en/ATmega16A) and programmed using **LD** - OpenPLC Version 2 : Hardware based on [**Raspberry Pi**](https://www.raspberrypi.org/products/raspberry-pi-zero-w/) and programmed using **FBD** As mentioned earlier, we are also providing a set of plug-and-play modules for practising a range of experiments. The current ones are - Elevator/Conveyor belt : Consists of a timing bet, a motor and a motor driver that can be controlled. - Temperature Sensing and control. - Switches : an array of *normally-open, normally-closed and latch* switches. - Simple traffic light. ### Software The two versions of PLCs uses two different software for programming. - [LDMicro](Software/OpenPLCV1_LDMicro/) : A simple and intuitive LD programming IDE, used for programming *OpenPLC Version 1*. It is a forked and locally maintained version of [Jonathan Westhues](https://github.com/LDmicro/LDmicro) software. - [4diac](https://www.eclipse.org/4diac/index.php) : A system, used for *OpenPLC version 2*, that consists of an IDE and a runtime environment for FBD programming and deployment. At present we directly use the [Eclipse 4diac](https://www.eclipse.org/4diac/) project with the Raspberry Pi work-flow. *Note : Detailed documentation regarding each of the above are present in the respective directories.* ___ # Community and contributing OpenPLC is developed by [FOSSEE](https://fossee.in/) and by users like you. We welcome both pull requests and issues on GitHub. How to and guides pertaining to both *software* and *hardware* can be found in the respective directories. ## Forking and cloning The repository consists of a few [git submodules](https://git-scm.com/book/en/v2/Git-Tools-Submodules). To clone them along with this repo use the following command. `git clone --recurse-submodules -j8 https://github.com/VishnuEaswaran/OpenPLC.git` ___ # Directory Structure . ├── OpenPLC_modules # OpenPLC modules resources including designs ├── OpenPLC_version_1 # OpenPLC version 1 resources including designs ├── OpenPLC_version_2 # OpenPLC version 2 resources including designs ├── LICENSE # license └── README.md # this readme The OpenPLC setup is shown below: ![OpenPLC Version 2](/assets/v2.jpg "OpenPLC Version 2") ___ # Licence OpenPLC is released under the MIT license. Some part of the software are released under other licences specified.