LEARN PLC PROGRAMMING ONLINE AND LEARN INDUSTRIAL PROGRAMMING STANDARDS  

What you will learn on a
PLC online
course:
Learn the various engineering disciplines such as how to use the PLC software development tools. Write PLC control software, maintain and diagnose manufacturing problems through the use of a PLC.

Take an Introductory PLC Course for beginners or learn more about how to create PLC Programming in online
Course 2.


Learn about:
PLC Hardware, IO Tables, how to use a support tool. Ladder Programming with
Normally open or normally closed contacts.

The PLC Scan and its effects on Registers
Single scan signaling also Instruction types - MOV/CMP/ADD/SUB/MOVB etc
Structuring of a PLC program Adjusting Timers and Counters Subroutines
Interlocks and Working with integers, binary, BCD, floating-point Data memory areas
.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

PLC TRAINING - STUDENTS AT WORK ONLINE

The Scantime website is a virtual college. Everyday, people who are studying to become engineers, or engineers improving their skill levels, logon whenever they wish to access their chosen course via their online course viewer. There is no time restriction, with people coming and going whenever they wish, fitting their study time to suit their lifestyle. Not everyone can attend Colleges or Training Centres, due to time restrictions, locality or costs, therefore Scantime have created these courses to deliver PLC training direct to your PC.

Throughout our PLC Training courses, people have access to their own Course Tutor via email or phone. The tutor is a Professional Engineer who is still active in designing PLC/Scada software for Industry (Oil Rigs, Airports, Food/Water etc). A Scantime Course Tutor is available to check the students work and help them understand PLC Programming more clearly, and most importantly how programs are designed and modified during routine maintenance to PLC engineering standards.

Below are some of the discussions taking place on a daily basis between student and Course Tutor, based upon some of the topics being taught.

These discussions give you some idea of what is required to write PLC routines, fault find, modify and write PLC programs.

 

blog counter
PLC TRAINING
TOPIC
DISCUSSION
TIMERS Hi Marius
Not a bad attempt. Unfortunately the design will not work.
(Note the Timers are set incorrectly, for this PLC make you should have the # sign before the value 1sec = #0010 - 10 tenths of a second, 001 is the address of the second IO card on the PLC). The PLC would read the value of this IO card and use it as the Timer set value.

Your design would cause the output to turn ON for 1 second and OFF for 1 PLC scan approx 10milli sec. Your error is how you should use the T1 and T2 Contacts, to work enable T2 from T1, and reset T1 from T2. Also the addresses 200.01 and 200.02 are not controlled by anything, if you wanted to Latch ON the output change 200.01 to 200.00.

See the solution below:

ALARMS Hi Joe
You are correct to use a DIFU, but in your design it would only turn OFF the alarm for 1 PLC scan, remember DIFU generates a pulse the duration of 1 PLC scan. You should use the DIFU only when an alarm is triggered
PLC ALARMS Hi Szymon
The Estop should be a NC contact, the reason is that EStop is an emergency stop circuit and therefore the signal will always be ON when the system is OK, if the EStop is triggered or a wire breaks then the alarm is raised.

If the Estop signal was only ON when triggered we would never know if a wire broke, so when someone hits the Estop nothing would happen.

The other point is that the Name tells you what contact to use

Well spotted, I can see you are looking closely at this course, well done.

DATA HANDLING Hi Stuart
The design problem is that you have no reset for the counter; also the layout is not quite correct, the MOV should happen after the counter times out.

You should place the Counter in its own network, also the MOV, take a look at the answer but also take a look at the Counter exercise and see how it is laid out.

The latch 100.00 in the design also is incorrect, when 0.00 is pressed 100.00 should Latch On your does not as we have to wait until 2.01 turns ON, so the operator would have to keep 0.00 pressed until then.

CONVERSION ONE PLC PROGRAM TO ANOTHER. Hi Trevor
Good work, the conversion was correct.
This is what we mean when we say learning PLC Programming is not about learning for a specific PLC, once you can read a program you can apply it against any PLC type and make.

Learning Siemens, Mitsubishi, Telemechanique etc takes 1 week; learning to program correctly takes much longer. Good work, note in the example there was a star before MOV D51 (*D51) see the answer for explanation.

ONE SHOT PULSE EXERCISE Hi Terence
The design is a good attempt, however when trying to turn OFF the Keep, 0.00 turns OFF the 200.01 a pulse is generated (DIFD Falling Edge of 0.00), however 200.01 will be generated on the scan after following when 0.00 turns OFF, therefore the Reset of the keep will not occur and 2.00 will remain ON.

The use of the State of the 2.00 output to disable part of the design is correct, but it is in the wrong place. If you removed DIFD and used the 2.00 condition to Disable the KEEP Set input and to Enable the Reset then this would direct 200.00 to either SET or RESET

PROGRAM DESIGN Hi Sean
The StartStop is more or less correct; however do not place the Fill Status 203.01 in this routine. If FillStatus was lost you must never stop ProcessRun, otherwise your system will have lost control, the only alarm allowed to stop this process is ESTOP, emergency or other emergency types of alarm, HiHi is not emergency.
PLC Control systems must maintain control of the process at all times.
ONE SHOT PULSE EXERCISE Hi Alexander
The single push button exercise is not easy, but I will help if you get it wrong.

When we are programming it is better to try and visualise how the program will work, this provides you with a greater understanding on how PLC programs work. We rarely use simulators, always designing from our experience and calculating what will happen.

Let me see your design and I shall assist.

Hi Alexander.
Not an easy question to solve. Your output would Latch ON with the first press, but would remain ON and never turn OFF unless the PLC was stopped running.

The use of the 2.00 condition to enable the 2nd network is good, as this is the key component in reversing the system for the next button press, but not to use the DIFD.

Take a look below. Any questions please get back to me.

SPEED/TEMP CONTROL

Hi Charles.

I recommend that you do this in stages

1. 1/10th sec clock pulse - design a routine to do this. Then use the timer contact for Medium speed change.

2. 3sec speed delay, if the up button is pressed timeout 3sec, then the same for the down button. Use 2 timers.

3. 15sec speed delay, as above

4. Speed Up Control D100, suggest 3 rungs, the top rung for Fine control and the lower rung for Medium control after 3sec delay. Use the 1/10th sec clock pulse to auto change the value. Use the third rung that after 15sec it becomes enabled and ramps the speed up as fast as possible.

5. Speed Down - as above

PROGRAM DESIGN Hi Edwin
The Counter problem is in the Reset line, you are using FaultReset to reset the counter – What if the tank is filling an alarm occurs, to clear the alarm you would press the FaultReset and end up clearing the count even though the Tank may be half full.

You need to retain the current fill time until it is FULL.

The Warning Lamp and Siren are now correct.

Alarms part2:
Now one further point with Alarms, you have designed several contacts ORed to trigger AlarmActive, this is fine for a small program, however many processes can have many more. The program I worked on the other month had over 100.

To monitor over 100 alarms as ORed NO contacts is impractical, let us assume you have 16 alarms, HOW can you monitor 16 alarms and keep the size of the network limited to a couple of contacts etc and the AlarmActive output coil.

When you work this out, delete the ORed network and replace it with the solution. I suggest you move AlarmActive output to 202.15

If you cannot figure out how to do this contact me for some help.

MATHS Hi Louis
Hope you are well. You are doing very well, these exercises are quite advanced and your work is very good. There are still some problems but the overall concept of the design is correct.

What you have to remember is that when multiplying or dividing the result is 32Bits, therefore multiplying D100 by 9 the result goes into D101 and D102, e.g. D100 = 1 then the result is

D102 .........................D101

0000000000000000 0000000000001001

Therefore D102 is the most significant part of the result.

When dividing e.g assume D103 = 9 and divide by 5 result to D105, the answer would be the Quotient in D105 and the Remainder in D106. = 1r4

D106 ........................D105

0000000000000100 0000000000000001

Therefore how do you convert a remainder to Decimal, I suggest you try an experiment on paper, write it out and divide 9/5 and see how you get the answer to 1 decimal place, then look at what you have done and how can you create a program to do the same.

So when multiplying and dividing JUMP addresses

MUL D100 #0009 D101 result in D101 & D102

then

FAULT FINDING

Hi Dave.

I had a look at the yellow example in the fault finding section. My answer is that I would write the two CMP's in separate networks each with own greater than, 255.05, flag. This will prevent the top CMP form operating bouth flags as soon as the condition is true.

I have also worked on my Sub Routine program and I have added it with this e-mail.

Hi Louis
Moving the CMP into different networks is not the solution or the problem. There is a problem with what you see, the Black lines is what you see when Monitoring an Omron program, Black lines tell you the condition is TRUE (ON), see 253.13 Always On, the Black line tells us it is ON, see the first CMP the result of this determines if the result will be ON or OFF, see the coil result???? What do you see?????

Hi Dave.

I see that the condition in the first CMP is true for the greater than contact at the bottom 255.05. But the 255.05 greater than contact is a NC contact. This means --------------------------------------------------------------------------------
According to the picture, and what I see, the NC contact 255.05 greater than is not reacting to the conditon of the 1st CMP. Meaning the NC 255.05 greater than is suppose to be open and not allow coil 300.09 LAP_RATIO_PLUS and the next CPM to be activated.

The problem is, is that the 1st '255.05 greater than' is not going from NC to NO according to the true condition of the first CMP.


DATA BUFFER Hi Louis
In answer to your second question:
< Does that mean, should you have a memory buffer of 3000 to 3100 , that the lowest value stored in the memory buffer will be at 3000 and the highest at 3100?
>

NO – the buffer contains whatever value is in DM1010 when the Data Ready signal is received, transfer the value to the buffer location. See the table on the course page:
195 190 192 193 198 200 202 202 204 205
203 201 100 101 201 201 202 202 203 202
202 201 204 205 207 208 209 212 214 215
201 202 202 204 204 202 202 201 200 198

D3000 = 195
D3001 = 190
D3002 = 192 etc

These are the readings from the Cut Position, we then store them as they are received in the Buffer.

Any questions please get back to me.


RENTENTIVE FB Hi Louis
Hope you had a good weekend.

Unfortunately the TOT program will not work.

The Latch is correct, however when 200.00 turns ON, DM101 @INC only once and then stops because it cannot increment any further, the @CMP (you should not use @ with a compare – as it will only compare 1 time), @CMP will see DM101 at 1 (Equals) and then move 600 sec into D100

Your MOV T1 into DM100 is OK, the value in D100 will change every 1/10th sec as the timer reduces. However if power was lost then D100 would have the last Timer value stored. However when 200.00 turns back ON again the @MOV #6000 D100 will overwrite the previously stored value.

The TOTIMER is nearly correct, see the answer for a Retentive Timer program: (Note your INC, the 1sec pulse will be ON for 1 sec so DM100 will increment every 10milli sec, you should have use a @INC)

RENTENTIVE TIMER Hey dave
I have redone the retentive timer , just curious to see if the program will work now, its coming back to me now slowly but surley . Also just thought you'd like to know, doing this course has paid off for me in work .I have been given the opportunity to work in Wyeths configuring devicenet and controlnet systems .

Moving up already . so far so good.

Hi Stuart
Great news about the career, the more you know the more you are worth, great stuff.
OK the retentive timer, if you need to latch ON a signal use a standard latch design for the start/stop.

Then use 200.00 to drive the timer. The HR bits are used only in special occasions.

The rest of your program is very close to the answer, see below:

SPEED/TEMP CONTROL Hi Nigel
The Process Run - you should have used a NC normally closed contact for the Stop, remember when a NO normally open contact is ON the contacts CLOSE, therefore in your latch both the Start and Stop buttons would have to be pressed.

If you use a NC contact the contacts in the program are effectively closed without pressing the Stop, therefore when Start turns ON this would allow 2.00 to latch.


The program is quite good, however NW3 Alarm is not correct, nor do we need it in the program so you can delete it. We will look at how to use alarms later in the course. Good use of the @INC and INC, the @ allows fine control 1 unit change every button press.

However what would happen in your design is that when the operator presses UP, the value would change 0 - 1, pressing again 1-2 etc.

After 3 sec the value would change 2 - 102 in 1/10sec due to the PLC scan time every 1milli sec. How could the operator set the speed to 40 revs, he will not be fast enough to take his finger off the button and he would have to press the button 38 times to reach 40.

Design the program so that after 3sec the speed change every 1/10th sec 1 unit, so that 38 = 3.8sec, then after 10 or 15sec ramps up the fastest speed the PLC can run.

Good work, also the use of 0.01 interlocking the UP if both buttons are pressed.

When I see your answer I shall show you how to structure the program for easier reading.

PROGRAM DESIGN Hi Trevor
Pleased to hear you have been successful in the new job.

Trying to visualise everything in your head can be difficult, it’s probably why us programmers tend to be a bunch of weirdoes.

I have changed part of your program. See attachment. Compare your FillingRoutine with mine.

NW1:
I tend to place the first networks to be those that do not directly control the process, rather indirectly, therefore I have placed HiLevel monitor as NW1.

Now look at yours, Note the network states HiLevel, therefore you should name the output HiLevel, not StopPump. Anyone seeing StopPump would wonder why.

Incedently in CxP only give the Contacts Names if they are global flags, such as ‘10SecDelay’, StopPumpDel this should be the Comment in CxP. All contacts and coils that are to do with the process have to have comments. Take a look at IO Comment tool button, yours is empty, this is where we first list all the Comments (IO Names). It is a bit confusing. Every IO has to have a Comment/Symbol in a program so that we recognise each IO – StartPB, StopPB, HiLevel etc etc, the Names as Omron refer to are the general flags such as 1secPulse,Equals etc.

Anyway, this routine is very simple in that all you need is ProcessRun and HiLevel sensor, this is all we are doing just monitoring this one sensor when the system is running.

NW2:
Ready to Fill. Again the ouput should reflect the name of the NW. 201.00 = ReadyToFill. Note your HiHiAlarm, you have already included this in FillStatus, so you should use FillStatus in here as FillStatus monitors all your Filling Alarms.

The other time when ReadyToFill is not to be enabled is when it is FULL, so include HiLevelReach in here. So what we are saying for ReadyToFill is:

Is ProcessRunning
Are the Filling Alarms OK
Are we full yet (sounds like the kids - Are we there yet)

NW3:Inlet valve
ProcessRun is the main event so always place this first in any rung. 1.03 OutletValve, interlocking this is GOOD – Safety, however note your contact it is a NO contact, which will only be ON when the OutletValve is ON. No Need for FillStatus as we have this covered with ReadyToFill.

There is one other contact to go in here and it is to do with the FillTime Alarm. Not sure if you have done this alarm yet, but you will need to include the Alarm output in here as a NC contact.

Note I have moved the Timer under the InletValve output, reason is that the timer has nothing to do with the output coil, if it was a delay to turn ON the output then yes place it above.

So what we are saying here is:

Is ProcessRunning
Are we ready to fill
Better check if the Outlet valve is OFF
Has FillTimer exceeded and tripped the alarm

NW4: InletPump
Guess what - first contact ProcessRun. HiHI Alarm is in FillStatusOk so do not need to use it again. This is why we group alarms in Status it means we only need to remember the one address, and if we added another Fill type alarm to fill status then it would automatically affect the rest of the Filling program. Also FillStatus is a flag similar to ProcessRun, so place it after ProcessRun.

LIMITS Hello
I would like to revisit the compare/limits execise if I may.
I have read, a couple of times now, the explanation regarding the placement of the compare part of the routine and, while I feel I have a reasonable understanding regarding the way this works, surely it would be better to allow some degree of latitude in the programmed data to take into account the scantime and refresh issue,ie, take the upper limit for compare purposes to 9989 rather than 9998.
That way,after two furthur complete scans/updates have occured, the update value is still only at 9991,the upper limit has been reached and no output problems can occur - belts and braces and all that.What could be so critical that an absolute value like this has to be reached ?
   
   
   
GENERAL DISCUSSION Hello Dave - please find my attempt at this exercise attached.
Regarding my previous email,yes I am all too aware what some people will do in their attempts to "speed up the process" or to "increase my chances of a better bonus"
or to simply sucumb to the pressures that production supervisors,etc put upon the people below them. I hate to say it, but sometimes I believe that certain management styles lead to some ambiguity between safety and the needs of production - safety doesn't always win,even in this
day and age.

Best Regards
GENERAL DISCUSSION

Hi dave, ok everything worked after I re-booted for some reason, I'm looking forward to the course, sorry about the problems... Thanks Scott

Hi Scott
No problem – I am here to assist with any problems, pleased everything is working.

You can start the course whenever you can, there are no time restrictions. Our objective is to assist people from all areas to learn about PLC’s and also PLC Programming, to further their ambitions in this widely used Industrial Technology.

What you will be learning is PLC’s at an engineering level; this is unlike academic courses, which only teach you the basics, at Scantime we not only teach but also design and develop Process Control software solutions PLC/Scada for Oil – Gas – Marine – Food & Water industries. Here you will learn what we teach industrial engineers for the companies we provide PLC/HMI & Scada training.

GENERAL DISCUSSION Hello Dave
Many Thanks once again for your feedback on my work and
your positive encouragement. I have definitely found your course useful and know that I've learned quite a bit from it.
I also realise that this is a subject that I have barely touched upon and have quite a way to go yet before I have a good understanding of the topic.
It was always my intention to carry on with the next part of the course and that may well yet happen, but in the meantime, I feel that I should devote my time and energies to the tasks that are now before me. The expectation is that we will be trained by Yokogawa's Engineers in the use of their systems, ie diagnostics and programming ( they use function block diagrams)
Thanks also for your best wishes in my new job. I fully expect this to be my last change before "retirement" but who knows what's around the corner - for any of us!

All the best for the future

Trevor


 












 

Copyright © 2003, Scantime Engineering Ltd All rights reserved.
Terms & Conditions  | Copyright Information
PLC Training - PLC Programming OnLine OnSite Courses

 

blog stats