Answer to most simple PLC programming example we placed at https://www.slideshare.net/bin95/plcclock to see if those starting out with PLC programming could figure out how to fix. The fix is in, this it.
(Adam Bowman was the first one to find the problems in Quiz version of this program and give a detailed solution, congrats Adam. the version you are viewing here, PLCCLOCK-ANSW.rss is one possible working solution for the PLC clock program.)
1. https://bin95.com Correct version of PLC Programming Example
LAD 2 - MAIN_PROG --- Total Rungs in File = 7
You are allow to share with others, attributions to https://BIN95.com
PLC Clock example by BIN95.com
This is a rung comment. The rung below is 60 second timer, followed by rungs that are counters driven by this timer. This is referred to as a
cascading programming methodology. You could design this PLC clock several different ways. We picked the most simplest for this example.
60 sec=minute, 60 min=hour, 24 hrs=day,365days=year
0000
I:0
0
Bul.1764
RUN
EN
DN
TON
Timer On Delay
Timer T4:0
Time Base 1.0
Preset 60<
Accum 40<
TON
SECONDS
2. https://bin95.com Correct version of PLC Programming Example
LAD 2 - MAIN_PROG --- Total Rungs in File = 7
You are allow to share with others, attributions to https://BIN95.com
This line of text is what a Page Title looks like.
If 60 seconds have elapsed, increment minute counter by 1.
(A "Page Title" is used when one particular subroutine has a lot of rungs, and you want to break them up [section off] for navigational purposes
and to speed troubleshooting. Programming documentation is more user friendly.)
0001
T4:0
DN
SECONDS/DN
CU
DN
CTU
Count Up
Counter C5:0
Preset 60<
Accum 59<
CTU
MINUTES
If 60 Minutes counter Done (60 min have elapsed), increment Hour counter by 1 AND Reset Minutes counter afterwards.
(In quiz version of this program, we were looking for you to spot that we where resetting counters before they had chance to increment
following cascaded counter. In this answer to quiz version of program we corrected that.)
0002
C5:0
DN
MINUTES/DN
CU
DN
CTU
Count Up
Counter C5:1
Preset 24<
Accum 22<
CTU
HOURS
RES
C5:0
MINUTES
If Hours counter Done (24 hours have elapsed), increment Day counter by 1 AND reset Hours counter afterwards.
0003
C5:1
DN
HOURS/DN
CU
DN
CTU
Count Up
Counter C5:2
Preset 365<
Accum 361<
CTU
DAYS
RES
C5:1
HOURS
If Days counter Done (365 days have elapsed), increment Year counter by 1 AND reset Days counter afterwards.
This rung/counter gives current years accumulated based on 365 days counted. We pre-plugged to year 2018. You might have expected a
rung(s) for "Current Month", like Jan, Feb etc., here (1-12), but for simplicity reasons we did not do that logic in the example. (As each month
has different number of days in to and would complicate logic more than we wanted to in this example.)
0004
C5:2
DN
DAYS/DN
CU
DN
CTU
Count Up
Counter C5:3
Preset 30000<
Accum 2018<
CTU
CURRENT_YEAR
RES
C5:2
DAYS
3. https://bin95.com Correct version of PLC Programming Example
LAD 2 - MAIN_PROG --- Total Rungs in File = 7
You are allow to share with others, attributions to https://BIN95.com
In the sequence of events, the last step after all counters are updated, is "If seconds timer done, reset the Seconds timer".
.
This is one way to correct problem found in our Quiz program that purposely did not work at https://www.slideshare.net/bin95/plcclock (Adam
Bowman was the first one to find the problem and give a detailed solutuion, congrats Adam.)
0005
T4:0
DN
SECONDS/DN
RES
T4:0
SECONDS
So in summary, in quiz example of this program (https://www.slideshare.net/bin95/plcclock), we were resetting everything too soon. (Scan cycle
is important to be aware of), in this example we corrected those intentional programming errors.
0006 END