|
|
PLC
TRAINING SERVICES |
|
|
|
| |
ONLINE
PLC COURSES |
|
|
|
|
| |
PLC
TRAINING CD's |
|
| |
LIBRARY |
|
| |
PLC
& SCADA SERVICE |
|
| |
ONLINE
STORE |
|
| |
INFORMATION |
|
|
|
|
|
|
| |
LINKS |
|
|
| |
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.
|
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 |
|
|
|