Blog archive

October 2021 (1)

Popular blog tags

plc

What is a PLC?

Monday, October 18, 2021

The Programmable Logic Controller or PLC is a computer controlled used extensively in industrial applications throughout the world. From food processing, car manufacturing, airport baggage systems to almost all process systems a PLC will be used to control the equipment required. PLCs are something that most people are not aware of but they are an essential part of our daily lives, as they allow products to be produced reliably.

The first PLCs were developed in the 1960s to replace hardwired relay-based systems, which where expensive to maintain and difficult to modify. PLC allow the program used to control a process to be changed without having to shut it down! This is essential for most processes as “production is king” as shutting down a process line is not convenient.

What is an Add on Instruction (AOI)?

Traditionally PLCs have been programmed using a language called Ladder Logic. This uses a graphical representation similar to diagrams used for relay logic. Contacts and coils are used in various combinations to create the logic required. A contact can be a Push Button or a limit switch while a coil acts like the magnetic coil of a relay. When combining contacts from field devices (e.g. switches) as well as the contacts associate with the coil, powerful logic functions can be created. Ladder logic was for many years the only way that a PLC could be programmed.

Although Ladder Logic is a good way to build logic it requires each function (e,g. Motor control) to be built. If all the motors require the same functionality more modern ways of programming would allow a more modular programming method to be used. This is where Add on Instructions become useful. Other methods for programming PLCs are now available. One of the most popular is the Function Block Diagram (FBD). This is a graphical representation of the logic allowing the Function Blocks to be connected by link lines. This a great way to show PID logic and much better than using Ladder Logic.

How to create a Custom Add On Instruction

The Rockwell RSLogix 5000 or Studio 5000 allow for the creation of custom AOIs. By creating your own block and then using it within your application you can improve the logic you are building. This will make the logic more elegant.

To make a new AOI right hand click on “Add-On Instructions” in the project explorer.

Next, fill in the details for the new AOI.

Under the Parameter tab define the inputs and outputs for the block.

Under the local tab internal memory points are defined. These are internal the block and can’t be accessed from outside the block. Local points can be used for graphics. The Req has not been selected in this case, as this allow the pin not to be used when the block is added to the logic.

Once the parameters have been defined the logic for the block can be designed. This is generally done using Ladder Logic but other methods are also ok.

For this block the logic is quite simple, and requires only an Normally Closed contact (XIC – Excite when Closed) and a Coil for each channel.

The block is now ready to be used as part of a Function Block Diagram. The block will be found i=undrer the Add-On tab .

Export import of AOIs

To export an AOI simply right hand click on it in the project explorer , and save it to a location on your pc. The file format is *.L5X.

To add a AOI to a project right hand click on Add-On Instructions within the Project explorer and import the required AOI L5X file.

PlantPAx

Rockwell Automation provide AOIs as part of their PlantPAx libraries. These provide functionality for the control of typical pieces of equipment used to operate a plant. These include AOIs to control Motors (P_Motor), Valves (P_Valve) as well as Analog (P_Ain) and Discrete (P_Din) process signals. The library also includes graphical faceplates to connect with the AOIs so that the operator can monitor and interact with the equipment as part of a FactoryTalk system.

Although the PlantPAX library provides many of the functionals that are required to build a process control system there are many opportunities to build custom AOIs too. It is these custom blocks that can be sold via AOIExchange. So if you have created a AOI that other developers could use as part of there next project, upload it to AOIEXchange today and get paid every time it is downloaded from the site.

Tags: plc

Leave your comment

Comments

7/17/2022 5:37 PM
MeyRGYEk
7/17/2022 5:37 PM
1*
7/17/2022 5:37 PM
1*
7/17/2022 5:37 PM
1*
7/17/2022 5:37 PM
1*
7/17/2022 5:37 PM
-1 OR 2+799-799-1=0+0+0+1
7/17/2022 5:37 PM
-1 OR 3+799-799-1=0+0+0+1
7/17/2022 5:38 PM
if(now()=sysdate(),sleep(15),0)
7/17/2022 5:38 PM
0'XOR(if(now()=sysdate(),sleep(15),0))XOR'Z
7/17/2022 5:38 PM
0"XOR(if(now()=sysdate(),sleep(15),0))XOR"Z
7/17/2022 5:38 PM
(select(0)from(select(sleep(15)))v)/*'+(select(0)from(select(sleep(15)))v)+'"+(select(0)from(select(sleep(15)))v)+"*/
7/17/2022 5:38 PM
-1; waitfor delay '0:0:15' --
7/17/2022 5:38 PM
-1); waitfor delay '0:0:15' --
7/17/2022 5:38 PM
-1)); waitfor delay '0:0:15' --
7/17/2022 5:38 PM
1 waitfor delay '0:0:15' --
7/17/2022 5:39 PM
wiPbMOy5'; waitfor delay '0:0:15' --
7/17/2022 5:39 PM
46n6wDNA'); waitfor delay '0:0:15' --
7/17/2022 5:39 PM
Wq0a2EDY')); waitfor delay '0:0:15' --
7/17/2022 5:39 PM
-5 OR 455=(SELECT 455 FROM PG_SLEEP(15))--
7/17/2022 5:39 PM
-5) OR 383=(SELECT 383 FROM PG_SLEEP(15))--
7/17/2022 5:39 PM
-1)) OR 92=(SELECT 92 FROM PG_SLEEP(15))--
7/17/2022 5:39 PM
rnnKKRsz' OR 242=(SELECT 242 FROM PG_SLEEP(15))--
7/17/2022 5:39 PM
Nupiyf6V') OR 300=(SELECT 300 FROM PG_SLEEP(15))--
7/17/2022 5:39 PM
A1BnE7gW')) OR 706=(SELECT 706 FROM PG_SLEEP(15))--
7/17/2022 5:39 PM
*DBMS_PIPE.RECEIVE_MESSAGE(CHR(99)||CHR(99)||CHR(99),15)
7/17/2022 5:39 PM
'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||'
7/17/2022 5:39 PM
1'"
7/17/2022 5:39 PM
1����%2527%2522
7/17/2022 5:39 PM
@@zdKle
7/17/2022 5:40 PM
SRQX3xLW
7/17/2022 5:40 PM
1*
7/17/2022 5:40 PM
1*
7/17/2022 5:40 PM
1*
7/17/2022 5:40 PM
1*
7/17/2022 5:40 PM
-1 OR 2+451-451-1=0+0+0+1
7/17/2022 5:40 PM
-1 OR 3+451-451-1=0+0+0+1
7/17/2022 5:40 PM
if(now()=sysdate(),sleep(15),0)
7/17/2022 5:40 PM
0'XOR(if(now()=sysdate(),sleep(15),0))XOR'Z
7/17/2022 5:40 PM
0"XOR(if(now()=sysdate(),sleep(15),0))XOR"Z
7/17/2022 5:40 PM
(select(0)from(select(sleep(15)))v)/*'+(select(0)from(select(sleep(15)))v)+'"+(select(0)from(select(sleep(15)))v)+"*/
7/17/2022 5:40 PM
-1; waitfor delay '0:0:15' --
7/17/2022 5:40 PM
-1); waitfor delay '0:0:15' --
7/17/2022 5:40 PM
-1)); waitfor delay '0:0:15' --
7/17/2022 5:40 PM
1 waitfor delay '0:0:15' --
7/17/2022 5:40 PM
ExOEnvBF'; waitfor delay '0:0:15' --
7/17/2022 5:40 PM
12EqVaF8'); waitfor delay '0:0:15' --
7/17/2022 5:40 PM
q7c0qyu6')); waitfor delay '0:0:15' --
7/17/2022 5:40 PM
-5 OR 373=(SELECT 373 FROM PG_SLEEP(15))--
7/17/2022 5:40 PM
-5) OR 852=(SELECT 852 FROM PG_SLEEP(15))--
7/17/2022 5:41 PM
-1)) OR 771=(SELECT 771 FROM PG_SLEEP(15))--
7/17/2022 5:41 PM
mf1l6AsH' OR 236=(SELECT 236 FROM PG_SLEEP(15))--
7/17/2022 5:41 PM
YjDzmpAT') OR 872=(SELECT 872 FROM PG_SLEEP(15))--
7/17/2022 5:41 PM
Fpzw4389')) OR 768=(SELECT 768 FROM PG_SLEEP(15))--
7/17/2022 5:41 PM
*DBMS_PIPE.RECEIVE_MESSAGE(CHR(99)||CHR(99)||CHR(99),15)
7/17/2022 5:41 PM
'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||'
7/17/2022 5:41 PM
1'"
7/17/2022 5:41 PM
1����%2527%2522
7/17/2022 5:41 PM
@@gcEuM
7/17/2022 5:44 PM
pX7PY1xC
7/17/2022 5:44 PM
1*
7/17/2022 5:44 PM
1*
7/17/2022 5:44 PM
1*
7/17/2022 5:44 PM
1*
7/17/2022 5:44 PM
-1 OR 2+261-261-1=0+0+0+1
7/17/2022 5:44 PM
-1 OR 3+261-261-1=0+0+0+1
7/17/2022 5:44 PM
if(now()=sysdate(),sleep(15),0)
7/17/2022 5:44 PM
0'XOR(if(now()=sysdate(),sleep(15),0))XOR'Z
7/17/2022 5:44 PM
0"XOR(if(now()=sysdate(),sleep(15),0))XOR"Z
7/17/2022 5:44 PM
(select(0)from(select(sleep(15)))v)/*'+(select(0)from(select(sleep(15)))v)+'"+(select(0)from(select(sleep(15)))v)+"*/
7/17/2022 5:44 PM
-1; waitfor delay '0:0:15' --
7/17/2022 5:44 PM
-1); waitfor delay '0:0:15' --
7/17/2022 5:44 PM
-1)); waitfor delay '0:0:15' --
7/17/2022 5:44 PM
1 waitfor delay '0:0:15' --
7/17/2022 5:44 PM
pTI7fmbO'; waitfor delay '0:0:15' --
7/17/2022 5:44 PM
xknUfcjg'); waitfor delay '0:0:15' --
7/17/2022 5:44 PM
LgAL9zN5')); waitfor delay '0:0:15' --
7/17/2022 5:44 PM
-5 OR 878=(SELECT 878 FROM PG_SLEEP(15))--
7/17/2022 5:44 PM
-5) OR 152=(SELECT 152 FROM PG_SLEEP(15))--
7/17/2022 5:44 PM
-1)) OR 124=(SELECT 124 FROM PG_SLEEP(15))--
7/17/2022 5:45 PM
P5CAYja9' OR 505=(SELECT 505 FROM PG_SLEEP(15))--
7/17/2022 5:45 PM
LoA1XHH5') OR 253=(SELECT 253 FROM PG_SLEEP(15))--
7/17/2022 5:45 PM
7JAEad2f')) OR 594=(SELECT 594 FROM PG_SLEEP(15))--
7/17/2022 5:45 PM
*DBMS_PIPE.RECEIVE_MESSAGE(CHR(99)||CHR(99)||CHR(99),15)
7/17/2022 5:45 PM
'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||'
7/17/2022 5:45 PM
1'"
7/17/2022 5:45 PM
1����%2527%2522
7/17/2022 5:45 PM
@@Nn6Wq
8/10/2022 8:15 AM
http://slkjfdf.net/ - Igocot <a href="http://slkjfdf.net/">Uofohug</a> gab.pxll.aoiexchange.com.khg.eb http://slkjfdf.net/
8/10/2022 8:35 AM
http://slkjfdf.net/ - Unoxekugo <a href="http://slkjfdf.net/">Upolevej</a> egt.qdlh.aoiexchange.com.rhh.sh http://slkjfdf.net/
8/10/2022 1:07 PM
http://slkjfdf.net/ - Onoqaoba <a href="http://slkjfdf.net/">Ingaueri</a> nho.ueko.aoiexchange.com.hln.mg http://slkjfdf.net/
8/10/2022 1:48 PM
http://slkjfdf.net/ - Ohusixf <a href="http://slkjfdf.net/">Afecomu</a> ehs.aeey.aoiexchange.com.pcd.hb http://slkjfdf.net/
8/10/2022 2:34 PM
http://slkjfdf.net/ - Onuvceh <a href="http://slkjfdf.net/">Iyebafap</a> wlg.bbpo.aoiexchange.com.qqz.qk http://slkjfdf.net/
8/10/2022 2:55 PM
http://slkjfdf.net/ - Igawayab <a href="http://slkjfdf.net/">Yipaaxu</a> lon.ckzu.aoiexchange.com.czb.ag http://slkjfdf.net/
8/10/2022 7:51 PM
http://slkjfdf.net/ - Ejeticox <a href="http://slkjfdf.net/">Ezuyuz</a> xdj.tfkw.aoiexchange.com.bel.ad http://slkjfdf.net/
11/7/2022 5:46 AM
123456
11/7/2022 5:47 AM
123456
expr 996835860 + 894079438
11/7/2022 5:47 AM
123456|expr 947807859 + 853430698
11/7/2022 5:47 AM
123456$(expr 988611615 + 930914551)
11/7/2022 5:47 AM
123456&set /A 815340459+966786231
11/7/2022 5:47 AM
${@var_dump(md5(409903518))};
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
expr 957522043 + 916443952
11/7/2022 5:47 AM
'-var_dump(md5(521309374))-'
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456'and/**/extractvalue(1,concat(char(126),md5(1988918848)))and'
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456"and/**/extractvalue(1,concat(char(126),md5(1040124405)))and"
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
/*1*/{{954723455+959700413}}
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
extractvalue(1,concat(char(126),md5(1500859637)))
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456'and(select'1'from/**/cast(md5(1935268153)as/**/int))>'0
11/7/2022 5:47 AM
${939888949+911043632}
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456/**/and/**/cast(md5('1754473222')as/**/int)>0
11/7/2022 5:47 AM
${(830457957+802955744)?c}
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
convert(int,sys.fn_sqlvarbasetostr(HashBytes('MD5','1510501995')))
11/7/2022 5:47 AM
#set($c=816686806+961851998)${c}$c
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456'and/**/convert(int,sys.fn_sqlvarbasetostr(HashBytes('MD5','1098575776')))>'0
11/7/2022 5:47 AM
<%- 989047817+846838428 %>
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456鎈'"\(
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456'"\(
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
${825343926+845620517}
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456
11/7/2022 5:47 AM
123456/**/and+2=2
11/7/2022 5:47 AM
123456/**/and+4=9
11/7/2022 5:48 AM
123456'and'x'='x
11/7/2022 5:48 AM
123456'and'v'='t
11/7/2022 5:48 AM
123456"and"z"="z
11/7/2022 5:48 AM
123456"and"h"="p
11/7/2022 5:48 AM
(select*from(select+sleep(0)union/**/select+1)a)
11/7/2022 5:48 AM
(select*from(select+sleep(2)union/**/select+1)a)
11/7/2022 5:48 AM
123456'and(select*from(select+sleep(0))a/**/union/**/select+1)='
11/7/2022 5:48 AM
123456'and(select*from(select+sleep(2))a/**/union/**/select+1)='
11/7/2022 5:48 AM
123456"and(select*from(select+sleep(0))a/**/union/**/select+1)="
11/7/2022 5:48 AM
123456"and(select*from(select+sleep(2))a/**/union/**/select+1)="
11/7/2022 5:48 AM
123456/**/and(select+1/**/from/**/pg_sleep(0))>0/**/
11/7/2022 5:48 AM
123456/**/and(select+1/**/from/**/pg_sleep(2))>0/**/
11/7/2022 5:48 AM
123456'/**/and(select'1'from/**/pg_sleep(0))::text>'0
11/7/2022 5:48 AM
123456'/**/and(select'1'from/**/pg_sleep(2))::text>'0
11/7/2022 5:48 AM
123456/**/and(select+1)>0waitfor/**/delay'0:0:0'/**/
11/7/2022 5:48 AM
123456/**/and(select+1)>0waitfor/**/delay'0:0:2'/**/
11/7/2022 5:48 AM
123456'and(select+1)>0waitfor/**/delay'0:0:0
11/7/2022 5:48 AM
123456'and(select+1)>0waitfor/**/delay'0:0:2
11/7/2022 5:48 AM
123456/**/and/**/0=DBMS_PIPE.RECEIVE_MESSAGE('y',0)
11/7/2022 5:48 AM
123456/**/and/**/3=DBMS_PIPE.RECEIVE_MESSAGE('n',2)
11/7/2022 5:48 AM
123456'/**/and/**/DBMS_PIPE.RECEIVE_MESSAGE('k',0)='k
11/7/2022 5:48 AM
123456'/**/and/**/DBMS_PIPE.RECEIVE_MESSAGE('a',2)='a