100% found this document useful (1 vote)
489 views19 pages

Arduino As A Programmable Logic Controller (PLC) : Open Electronics

This document discusses using an Arduino board as a programmable logic controller (PLC) for industrial automation applications. It provides two methods for doing so - using a ladder logic programming language called LDmicro, or using a library called plcLIB that allows programming with instructions like IF, AND, OR. An example is given of automating electric sunshades that should retract in windy conditions and unroll during daylight hours. The first method using LDmicro is explained in detail, from installing the software to writing the ladder logic code to interface with Arduino digital pins.

Uploaded by

Zaw Min Naing
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
489 views19 pages

Arduino As A Programmable Logic Controller (PLC) : Open Electronics

This document discusses using an Arduino board as a programmable logic controller (PLC) for industrial automation applications. It provides two methods for doing so - using a ladder logic programming language called LDmicro, or using a library called plcLIB that allows programming with instructions like IF, AND, OR. An example is given of automating electric sunshades that should retract in windy conditions and unroll during daylight hours. The first method using LDmicro is explained in detail, from installing the software to writing the ladder logic code to interface with Arduino digital pins.

Uploaded by

Zaw Min Naing
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 19

Open Electronics

Arduino as a programmable logic controller (PLC)


5 years ago

Today we’ll explain how to exploit the potential of Arduino as a programmable logic controller,
connecting it to appropriate interfaces for I/O.

The PLC (Programmable Logic Controller) has been and still is the basic component of the
industrial automation world. The Industrial application made the PLC systems being very
expensive, both to buy and repair, and also because of the highly specific skills requested to
software designers to extract the maximum potentials from controllers. Arduino is a kind of
universal programmable controller, although it is only the “core” and in any case it has been built
for general applications; with a little of external hardware (essentially interfaces capable of
transferring signals from sensors and to actuators, reducing the EMI which may damage the
microcontroller) and an appropriate software may, however, become something very similar to a
PLC.

In this tutorial we will explain how to “convert” our Arduino board in a PLC-like controller,
programmable through the PLC proprietary language and logic, helping those who wish to start
studying this fascinating world without spending a bunch of money on materials and training.
To turn Arduino into a Programmable Logic Controller, there are two approaches. The first one
is to write our program using KOP language (ladder). To do that, we must use two more
applications in addition to Arduino IDE: the first is LDmicro that is the editor and compiler of
our ladder code (it can be downloaded from http://cq.cx/dl); the second consists of a web page
that will help us creating the code for the ladder.h library (http://adam.horcica.cz/tools/ladder-
gen); for simplicity’s sake, in this guide we’ll consider only the DIGITAL I / O with no special
features. The second method is to use plcLIB (a library we suitably modified to take advantage
of the IO shield coupled with Arduino UNO) so that you can edit our project code with a
language similar to AWL (instructions: IF, AND, OR, …) having the control on timers and other
functions; Here, too, our attention will be focused exclusively on using digital I / O without
dealing with specific functions.

A practical example
As an example to understand how to take full advantage of the two methods described above, we
will try to solve a problem of home automation found on the web: automate electric sunshades.
Then we will proceed with a step-by-step explanation of the two methods described above.
Briefly, we want to control the sunshades so that in case of a strong wind they must be
automatically retracted, while unrolled only after the wind has calmed down. The behavior
should be similar for the different lighting situations: roll them during the night and unroll on
daylight, but obviously the wind conditions should prevail over the lighting.

As a possible solution we could use a real PLC, but given the simplicity of the algorithm and the
high cost of that PLC, we will use the hardware shown above.

We will use two sensors, twilight NO (normally open) and wind NO that will be connected to
the IO shield. In addition, we will have to adapt and change the power scheme of the sunshades
engines so that Arduino could manage them.

Method 1: LDmicro

Before writing the ladder code (contact diagram), similar to that in figure, we need to download
the LDmicro executable from the link http://cq.cx/ladder.pl. Once downloaded and saved to your
desktop, just double click on the LDmicro icon. Now, before proceeding with the application of
ladder diagram, we have to write a draft of the program that we want to create.
 

Since the program is very simple and we use few variables only, we can use the most basic and
immediate programming approach for the PLC: the wired logic. This methodology consists of
simple Boolean equations that will always return as output (after the equal sign) a value that can
be 0 or 1. The only operators used will be the AND (series), the OR (parallel) and NOT
(negation).

Input and Output variables in our program shall be the following:

– INPUT:

WIND SENSOR: XSEN_VENTO

LIMIT SWITCH ROLL: XFINE_COR_A

LIMIT SWITCH UNROLL: XFINE_COR_S

TWILIGHT SWITCH: XIN_CREP

– OUTPUT:

ROLLER: YAVVOLG

LED ROLLER: YL_AVV

UNROLLER: YSVOLG

LED UNROLLER: YL_SVO

IDLE STATE: YL_RIP

Note that the Arduino output pins have not yet been declared yet, while the “x” and “y” placed at
the beginning of each variable represent respectively the input and the output. The software adds
this letter automatically during the coding.
Once declared the variables, we can proceed on writing the logic equations, taking into account
that Arduino with our shield reads all inputs as HIGH (1) when the contact is open and LOW (0)
when the contact is closed: therefore we must negate the logic of all the inputs to ensure that they
are properly executed.

Now that we have our Boolean equations, we can back to LDmicro. By pressing the “C” key or
clicking on the “instruction->include contact” menu, we get the inclusion of an open contact.
Now, without changing anything, by pressing “L” on keyboard (after placing the cursor after
Xnew, on the right side), we should obtain a segment identical to that of figure.

Moving the cursor below Xnew (by using the arrow keys on keyboard) and pressing “C”, we will
get a new segment, always named Xnew but in parallel with the previous one; now, we must
click on Ynew and putting the cursor vertically on the left (before) of the output, we have to
press “C” twice. By doing this we have added two more contacts, in series with the two (parallel)
previous ones. To finish up, we just need to click on Ynew (but this time positioning the cursor
below the output symbol) and then press “L”: so we have added another output in parallel to the
existing Ynew.

Now we need to modify all contact names accordingly to those used in the equations. To do this
we simply double click on the first Xnew contact we have created, then we set the name and
contact type in the pop-up shell. We will assign the name “SEN_VENTO” and select “INPUT
PIN” and “|/| NORMALMENTE CHIUSO” (NC). Remember that the software automatically
assign the initial letter “X” or “Y” whether the variable stands for INPUT or OUTPUT,
respectively.

The whole procedure shall be repeated for all the remaining contacts and equations.

To insert a new segment, click on “Edit->Insert segment behind”. After having completed the
configuration, from the menu “settings” we shall select “Microcontroller->ANSI C Code”, then
we can compile choosing from menu “Compile->Compile as”.

We choose to save the file on “Desktop” with these settings:

 Save as: All Files


 Filename: ladder.cpp

After saving the file, a popup windows will warn us to configure the I/O addresses map: we click
on “OK”, save our LDmicro project (menu File->save as) always on Desktop naming it as
“ladder.ld”.

Then we need one-step further. Open the ladder.cpp file with notepad, select all the text and copy
paste it on the website http://adam.horcica.cz/tools/ladder-gen. After clicking on “Generate”, we
will get a new code. Copy and paste this code to a new notepad file, saving it with the following
parameters:

 Save as: All Files


 Filename: ladder.h

In this exercise, we have chosen to set the pin configuration as follows:

pinMode(2, INPUT);

pinMode(3, INPUT);

pinMode(4, INPUT);

pinMode(5, INPUT);

pinMode(8, OUTPUT);

pinMode(9, OUTPUT);

pinMode(10, OUTPUT);

pinMode(11, OUTPUT);

pinMode(12, OUTPUT);

Then we can modify the “ladder.h” library with this pinout setting, as shown in “Code listing 1”
(the code lines highlighted in yellow are the ones to be modified, without affecting the remaining
parts)

1 /* This is autogenerated code. */

2 /* (generated Wed, 13 Nov 2013 14:06:53 +0100 by ladder-gen v 1.0) */

3 #ifndef LADDER_H

4 #define LADDER_H
5 #if ARDUINO >= 100

6 #include "Arduino.h"

7 #else

8 #include "WProgram.h"

9 #endif

10 #define BOOL boolean

11 #define SWORD int

12 #define EXTERN_EVERYTHING

13 #define NO_PROTOTYPES

14 void PlcCycle(void);

15 /* Configure digital I/O according to LD (call this in setup()). */

16 inline void PlcSetup()

17 {

18 pinMode(2, INPUT);

19 pinMode(3, INPUT);

20 pinMode(4, INPUT);

21 pinMode(5, INPUT);

22 pinMode(8, OUTPUT);

23 pinMode(9, OUTPUT);

24 pinMode(10, OUTPUT);

25 pinMode(11, OUTPUT);

26 pinMode(12, OUTPUT);

27 }

28 /* Individual pins (this code is used in ladder.cpp) */

29 inline extern BOOL Read_U_b_XSEN_VENTO(void)

30 {

31 return digitalRead(2); // TODO

32 }

33 inline extern BOOL Read_U_b_XIN_CREP(void)

34 {

35 return digitalRead(5); //TODO

36 }

37 inline extern BOOL Read_U_b_XFINE_COR_A(void)

38 {
39 return digitalRead(3); //TODO

40 }

41 inline BOOL Read_U_b_YL_SVO(void)

42 {

43 return digitalRead(11); //TODO

44 }

45 inline void Write_U_b_YL_SVO(BOOL v)

46 {

47 digitalWrite(11, v); //TODO

48 }

49 inline BOOL Read_U_b_YAVVOLG(void)

50 {

51 return digitalRead(8); //TODO

52 }

53 inline void Write_U_b_YAVVOLG(BOOL v)

54 {

55 digitalWrite(8, v); //TODO

56 }

57 inline BOOL Read_U_b_YL_AVV(void)

58 {

59 return digitalRead(9); //TODO

60 }

61 inline void Write_U_b_YL_AVV(BOOL v)

62 {

63 digitalWrite(9, v); //TODO

64 }

65 inline extern BOOL Read_U_b_XFINE_COR_S(void)

66 {

67 return digitalRead(4); //TODO

68 }

69 inline BOOL Read_U_b_YSVOLG(void)

70 {

71 return digitalRead(10); //TODO

72 }
73 inline void Write_U_b_YSVOLG(BOOL v)

74 {

75 digitalWrite(10, v); //TODO

76 }

77 inline BOOL Read_U_b_YL_RIP(void)

78 {

79 return digitalRead(12);  //TODO

80 }

81 inline void Write_U_b_YL_RIP(BOOL v)

82 {

83 digitalWrite(12, v); //TODO

84 }

85 #endif

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106
107

108

109

110

Once you changed the library as just shown, we save the changes without modifying neither the
name nor the file extension, keeping it always on your “Desktop”.

At this time we need to create the file “pinmap.ini”. In this file, we have to declare the names of
our variables and the respective pins. This step may also be skipped but we do not guarantee
proper operation of the program without.

The changes to this file are closely related to our project and must be consistent with the ladder.h
code (Listing 2).

1 ; This file contains mapping between variable name in the LD and actual

2 ; pin number of the Arduino.

3 ; SEN_VENTO on pin 2

4 SEN_VENTO = 2

5 ; FINE_COR_A on pin 3

6 FINE_COR_A = 3

7 ; FINE_COR_S on pin 4

8 FINE_COR_S = 4

9 ; IN_CREP on pin 5

10 IN_CREP = 5

11 ; AVVOLG on pin 8

12 AVVOLG = 8

13 ; L_AVV on pin 9

14 L_AVV = 9

15 ; SVOLG on pin 10

16 SVOLG = 10

17 ; L_SVO on pin 11

18 L_SVO = 11

19 ; L_RIP on pin 12
20

21

22

23

24
L_RIP = 12
25

26

27

28

29

Now we can move our four files 1.”ladder.ld” 2.”ladder.cpp” 3.”ladder.h” 4.”pinmap.ini” to a
single folder called “ladder”. Then move this folder to (W7) C: \ programmiX86 \ Arduino \
libraries (or for older editions of Windows (XP) to C: \ Program Files \ Arduino \ libraries).

Open or restart the Arduino IDE and write the following code (NOTE: it is not intended for
using of timers or other special functions).

From the menu “SKETCH”, we select “import library” and choose “ladder”. Now, type the
following code, which is valid for all projects similar to this:

1 #include <ladder.h>

2  

3 void setup()

4  

5 {

6  

7 PlcSetup();

8  

9 }

10  

11 void loop()

12  

13 {
14  

15 PlcCycle();

16  

17 delay(10);

18  

19 }

Now, please click on the “verification check” of our code and wait until the sketch has been
compiled. We should get a positive result, if not please follow again the instructions above
systematically.

After the compilation is finished you can click on the icon on the side, to transfer our program to
Arduino; wait until it’s loaded and … Congratulations: you’ve managed to turn your Arduino
into a controller very similar to its rival PLC. Now you just have to interface your system,
respecting the logic that we have established for inputs and outputs.

Attention: When you create a new project, before importing the new folder (whose name must
always be “ladder” and it shall contain the files with the same name as before), you must remove
from the directory the previous project folder. In case you want to keep it, just rename it and save
it in another directory. If you want to restore it, simply call it “ladder” and repeat the process in
reverse.

For more information and further clarifications, please connect to the


site http://electronics4dogs.blogspot.it/2011/07/ldmicro-and-arduino.html

Methodology 2: plcLIB
To follow this approach you must download the suitably modified library from our website.

The plcLIB library that we have modified to optimally interface the IO shield with Arduino
UNO, is dedicated to those who want to start studying the world of automation without having to
“hack” the code too.

Simply download from our website the library plcLIB and once unzipped, paste the folder in
“C:\programmiX86\arduino\libraries” for Windows 7 or to “C:\ program files\arduino\libraries”
for older Windows versions (XP).

Even in this case, our discussion will be mainly focused on digital logic without using special
functions even if, respect to LDmicro example above, in this case we could easily take advantage
of certain features such as timers.

Once you have imported our library as described above we will not have to change it, regardless
of the project we are going to realize. Just edit our code taking into consideration some factors:
The digital I / Os must follow the naming shown on table.

By reusing the Boolean equations listed above, we write our code in the Arduino IDE: in this
way, i.e. considering them as real equations respecting the order of operators (calculating
parenthesis first and then the rest).

1 #include <plcLib.h>

2 void setup()

3 {

4 setupPLC();

5 }

6 void loop()

7 {

8 inNot(X1);

9 orNotBit(X4);

10 andBit(X2);
11

12

13

14
andNotBit(Y4);
15
out(Y1);
16
in(Y1);
17
out(Y2);
18
in(X4);
19
andBit(X3);
20
andNotBit(Y2);
21
andBit(X1);
22
out(Y3);
23
in(Y3);
24
out(Y4);
25
inNot(Y2);
26
andNotBit(Y4);
27
out(Y5);
28
}
29

30

31

32

Once you have edited this code, simply click on Verify and wait for the IDE to compile the
sketch: we should get a positive result, otherwise revise the instructions step-by-step. Once the
compilation is complete click on “Upload” to program the Arduino. Wait until the loading is
completed and CONGRATULATIONS! You have turned your Arduino to PLC.

Warning: This library has been modified and tuned by us to take advantage of the Arduino UNO
digital I/O. In addition, for a new project, you should only change the code enclosed in the void
loop () {…}, maintaining unchanged the previous part. You can save your sketch without
changing the library: an operation very advantageous from a practical and timesaving point of
view respect to the LDmicro example. With this method, you cannot use the GUI “LADDER”
but you can fully exploit the logic of plc, with a considerable saving of time and reducing the
risk of compilation errors or code mismatches without the need to switch to other software. In
fact, a good programmer is someone who is able to create a good product regardless of the SDK
or GUI he is using: the important thing is that the algorithm logic is always the same.

More information: please note that the pins mapping of our library has been modified to interface
with the IO shieldand Arduino UNO. The notions taken from this site are valid only if you used
the original library found at the link below so that all special functions are available and
explained. Our library has been adapted for the IO shield, so some features that you might find at
the link below might not work properly due to the adaptation done, and then we do not guarantee
the proper working of all the functions mentioned by “electronics”. However, we guarantee that
the timerOn function works fine (we tested it successfully). If you wish to try all the other
functions, you may download the original library and follow the step-by-step instructions from
the linked website.

Here an example of the use of timers.

2 unsigned long TIMER0 = 0;

3 void setup() {

4 setupPLC();

5 }

6 void loop() {

7 in(X1);

8 timerOn(TIMER0, 2000);

9 out(Y1);

10 }

11

unsigned long TIMER0 = 0;

void setup() {

setupPLC();

void loop() {
in(X1);

timerOn(TIMER0, 2000);

out(Y1);

Learn more and download the original library plcLIB without our changes (here is their link):

– www.electronics-micros.com/software-hardware/plclib-arduino/

– www.electronics-micros.com/resources/arduino/plclib/plcLib.zip.

In figure, you see the wiring diagram of sensors and the motor of the sunshade (220V single-
phase motor with two-way rotation versus). NOTE: Since the wiring diagram have been used for
potentially hazardous voltages, we take no responsibility in case of accident, injury to persons or
property resulting from a misinterpretation of the wiring diagram or by any inopportune change
from your side.
 

Method 2b: plcLIB ANALOG-DIGITAL


To follow this example, please download a library that was suitably modified.

In this section, we deviate a little from the world of electrical engineering and automation PLCs
and take a step towards electronics. We propose a second plcLIB library we suitably modified to
take advantage of our IO shield so to have three digital inputs, three PWM outputs, six inputs
and six analog outputs.

Unzip the file PlcLIB.zip and copy the folder to the directory  “….\arduino\libraries”

Attention: If you installed the library indicated in the previous path, you have to cut and paste it
into another directory to avoid conflicts with this (keep it if you want to create a purely digital
project, you shall use the library specified in the methodology 2). In case you want to build a
prototype that integrates both digital and analog/PWM controls, use the library indicated in this
paragraph.

Table shows the mapping of inputs and outputs adapted to our IO board.


 

We remind you that on analog inputs, the maximum voltage and current allowed are 5V 100mA.

Here is an example application; we want to dim a led (L1; AY1) according to the value assumed
by potentiometer (R1; AX1) in real time.

The Arduino solution, easily understandable after studying previous paragraph, is shown on
listing:

1 #include <plcLib.h>

2  

3 void setup()

4  

5 {

6  

7 setupPLC();

8  

9 }

10  
11 void loop()

12  

13 {

14  

15 inAnalog(AX1);

16  

17 outPWM(AY1);

18  

19 }

After verifying the code, we can upload to Arduino and…. Good job! You succeeded in
interfacing the analog world with Arduino-based PLC!!

From Store
Arduino UNO

Input/Output shield KA05

Categories: Open Source Projects, Products


Tags: Arduino Shield, homefeatured, KA05, newsline, plc, Remote control

Leave a Comment
Open Electronics
Back to top

Common questions

Powered by AI

The steps to transition an Arduino setup to function like a PLC using LDmicro software involve multiple stages: First, acquire the LDmicro executable to write ladder logic code. Second, draft the necessary Boolean equations to simulate the desired control logic. Define input and output variables in the plan, relying on wired logic. Third, load this draft into LDmicro to create the ladder diagram, guaranteeing correct negation for normally open or closed contact types as needed. Fourth, compile the ladder logic to generate C code for microcontroller execution. Next, integrate this code into the Arduino IDE by including the corresponding headers and set up the I/O pins according to the project specifications. Finally, compile and upload the setup using the Arduino IDE, transforming the board's functionality to resemble that of a traditional PLC .

To ensure proper functioning of the plcLIB library with the Arduino I/O shield, modifications involve mapping the correct pins through code adjustments to suit the I/O configuration of the shield. The library needs to be correctly configured by assigning Arduino pins to match input and output expectations, such as setting digital and analog pin modes appropriately. The programming logic within the 'void setup()' and 'void loop()' functions must reflect these mappings correctly to avoid mismatched signals. Additionally, the library folder must be placed in the correct directory, ensuring the Arduino IDE recognizes the library consistently without conflicts with other libraries in use .

The plcLIB library enhances Arduino's functionality in automation by offering a more streamlined approach to managing digital and analog inputs/outputs compared to LDmicro. The use of plcLIB simplifies the programming process because it allows for direct integration into the Arduino IDE, thus eliminating the need for external software to generate ladder code. Unlike LDmicro, plcLIB also supports additional features like timers, which are not handled as efficiently in LDmicro setups. Moreover, plcLIB adapts better to mixed digital and analog projects, making it more versatile for applications that require both .

Configuring Arduino as a PLC contrasts with traditional PLC programming due to its ease and flexibility. Traditional PLCs often require specialized skills and costly, proprietary software for programming, alongside complex hardware setups specific to each manufacturer. Arduino, however, employs open-source software and standardized programming languages (e.g., C/C++), providing greater flexibility for users of varying skill levels to develop applications. Additionally, Arduino's adaptability allows quick prototyping and customizing of control logic without the constraints of proprietary systems. This makes Arduino more accessible to developers, enabling quicker iteration and experimentation without the overheads typical of traditional PLC programming .

Using Arduino as a PLC significantly impacts cost-saving measures for small to medium enterprises by reducing initial investment and operational expenditure on automation solutions. Traditional PLCs can be expensive due to proprietary hardware and software ecosystem demands. In contrast, Arduino's open-source platform provides an economically viable alternative, reducing hardware costs with its affordable components and eliminating software licensing fees. This low-cost automation approach enables smaller enterprises to implement sophisticated control systems once exclusive to larger companies. Moreover, ease of customization and adaptability encourages experimentation and rapid prototyping, leading to optimized solutions without financial burdens .

The interfacing of Arduino with PLCs using ladder diagram logic simplifies automation by providing a cost-effective and accessible alternative to traditional PLCs, while accommodating basic control logic required by industrial applications. By utilizing simple Boolean equations for control schemes, Arduino can efficiently manage input and output processes, which align with the typical functions of PLCs. However, being cost-effective, it does not require complex hardware and specialized software. Instead, Arduino uses open-source tools and standard programming environments, making it easier for hobbyists and engineers to implement and understand .

Arduino, when used as a PLC, has limitations in handling complex automation tasks due to its hardware constraints, such as limited processing power and I/O configuration, which restrict its capability to handle simultaneous complex tasks or extensive networks of sensors and actuators. Additionally, Arduino lacks the ability to natively support advanced PLC functions like data logging, robust network communications, or built-in HMI interfaces, as these would typically require larger memory capacities and processing strengths available in traditional PLCs. Furthermore, Arduino’s development environment does not come with the sophisticated error handling or integration tools present in commercial PLC software, which complicates deployment in critical industrial environments .

Boolean logic is fundamental in programming Arduino for PLC applications because it provides a simple yet robust framework for decision-making processes required in control systems. Boolean logic allows Arduino to evaluate conditions based on sensor inputs and execute actions by combining conditions using AND, OR, and NOT operators. This approach simplifies the derivation of control algorithms into easily understandable and executable logical statements, aligning with typical industrial control schematic designs. This makes Arduino suitable for basic automation tasks where complex decision-making and multi-condition commands are employed, emulating traditional PLC functions cost-effectively .

When using Arduino as a PLC in industrial applications, several safety considerations must be addressed. Firstly, Arduino lacks robust insulation and protection that traditional PLCs have against electrical surges and interference, increasing the risk of damage or malfunctions. Secondly, Arduino usually operates at lower voltages, which can cause synchronization issues with high-voltage industrial equipment without proper interfacing circuitry. Care must also be taken with software reliability, as Arduino does not natively include safeguards against real-time processing errors or system hangups, common in industrial environments. Additionally, the open-source nature implies that thorough testing must be conducted independently to ensure adherence to industrial standards and safety protocols .

Using Arduino PLC in education offers several advantages, chiefly by making the fundamentals of PLC systems accessible and understandable. Students benefit from the hands-on learning experience offered by Arduino's tangible setup, which helps demystify PLC operations. The open-source nature of Arduino, along with a wealth of online resources and community support, facilitates self-paced learning and experimentation. Arduino also encourages problem-solving and critical thinking by allowing students to directly interact with and modify control logic. This platform removes financial barriers associated with proprietary PLC systems, providing schools and educational institutions a cost-effective tool for teaching essential concepts in automation technology .

You might also like