# Building a PLC Program That You Can Be Proud Of – Part 4

In part 1 we looked at writing PLC programs to control a traffic light using discrete bits and then using timed sequencing using indirect addressing. Part 2 used indirect addressing for inputs as well as output to control the sequence of pneumatic (air) cylinders in the program. Part 3 returned to the traffic light application and expand our program significantly. We looked at the sequence of operation using Input, output and mask tables. Part 4 will now continue with the programming of the logic in the PLC.

Let’s look at the sequence that we are controlling:
Note that I have colour coded the outputs that will be on in the sequence. This makes it easier to read how the lights will behave. All bits without ‘1’ are assumed to be ‘0’. The pedestrian walk signals flash before they change to the do not walk signals.

The weekend sequence looks like this. We have overlap of the red signal lights. The arrows are not used.

The weekday off peak times sequence looks like this. We have an advanced flashing green light for the north and west traffic.

The weekday peak times sequence is as follows. The turn arrows have been added for the north/south and west/east directions.

It is important to note that the sequencing and information contained in these charts must be understood fully before programming can begin. Take the time to review and understand the following tables. Here is a copy of the excel table complete with the inputs, mask and outputs.

This method of programming can have vast number of applications. Here are some of the advantages of using this method:

• Modification of the program without extensive rewriting
• Integration with a Human Machine Interface (HMI) to control, modify and/or troubleshoot
• Ability to sequence forward and backward
• Easily understood logic to follow. Looking at he pointers can the on compare instruction will quickly tell you what sensor is not being made.
`Troubleshooting this method of programming is easily done. Compare the bits in the input pointed word to the actual bits form the input in binary format. The difference is the input/output that is not working.`

The program is basically broken down into three sections:

• Inputs – Setting bits in the input channel based upon actual and internal conditions.
• Control  – Control of the pointers, mask and setting the output channel.
• Outputs – Using the output channel to activate the actual and internal actions required.

Inputs:

The program is all controlled by one on-delay timer. This sets the minimum time between each step.

Control:

This section of the control will tell the PLC what to do when the unit is first powered on. It resets the pointers and moves the initial output setting to the output word. You will see that since we have three different sequences running, there are three different reset rungs in parallel. The table input pointer is compared to the last value +1 of the sequence running.

The mask calculation is next. This is used to ignore the inputs that we do not want to see or may not know the status during the execution of the program.

You will notice that the first three sequences are all the same. On this step we then determine if the pointers need to be changed for the other two. The first is for weekday off peak times.

This is for the weekday peak times.

We now compare the actual inputs after the mask with the input table word. If they are equal then move the output table word to the output channel and increment the pointers to the next step.

Outputs:

The actual outputs are set using the output word bits. You will note that the flashing green lights are done when both green outputs are not on. This way will give me the greatest flexibility when developing different sequences. The do not walk signal is not part of the sequence but is controlled when the flashing walk or walk is not on.

The program will not change much for completely different sequences.

This program and the data tables can be downloaded here. Note that in order to run this program you must call up the input, mask and output tables and write them to the simulator or PLC.

In Part 5 will will make a Game of Simon by learning all about bit manipulation and sequencers.

Thank you,
Garry

If you’re like most of my readers, you’re committed to learning about technology. Numbering systems used in PLC’s are not difficult to learn and understand. We will walk through the numbering systems used in PLCs. This includes Bits, Decimal, Hexadecimal, ASCII and Floating Point.

To get this free article, subscribe to my free email newsletter.

Use the information to inform other people how numbering systems work. Sign up now.

# Building a PLC Program That You Can Be Proud Of – Part 3

In part 1 we looked at writing PLC programs to control a traffic light using discrete bits and then using timed sequencing using indirect addressing. Part 2 used indirect addressing for inputs as well as output to control the sequence of pneumatic (air) cylinders in the program. We will now return to the traffic light application and expand our program significantly.

Let’s build on the traffic light sequencing used in part one with inputs for pedestrian and car detection. We will also throw in the time of day so that during weekday peak hours an advanced arrow will be used. Advanced green (flashing) will be used when the traffic is detected in the turning lane during the off peak hours.

Programming using this method of sequencing requires allot of time up front before we start the actual PLC program. However this method makes the program easier to understand, troubleshoot and modify in the future.

`Remember that the PLC programmer must know everything about the machine and operation before programming.`

If we just start writing code, then we will constantly be correcting and modifying based on trial and error. I use a spreadsheet program to plot out the inputs, outputs and mask tables. We will go into the details of this below.

Lets look at the inputs:

We set up the input table in words V0 to V499. Each bit in the table will be compared to the signals coming the actual signals wired or programmed in the PLC.
Bit 0 is the time input which will control the entire program interval. Next we have the Car Detection signals on Bits 1 to 4. The pedestrian signals are pushbuttons coming from Bits 5 and 6. The left turn signals are located in Bits 7 to 10.  The real time clock functions will come from Bits 12 to 15.

Lets look at the outputs:

The output table will be in words V1000 to V1499. The input word will be compared to the actual inputs and the corresponding output channel will be moved to the actual outputs. All of the output bits control lights. You will notice that there is a green light for each direction. This will give us the greatest flexibility when writing our PLC program. Pedestrian signals have a flashing output bit and just an output bit. There will be only one output but this bit will determine if it is flashing or not.

The masking table will be in words V500 to V999. The masking bits will correspond directly to the input table bits. Using the mask will allow us to ignore the status of certain bits when using the compare instruction and setting the outputs.

The Mask table will be used by using an ‘AND’ word instruction. If the mask bit is on for the input then it will be used in the compare instruction. If the mask bit is off for the input then the value is always off using the compare.
Example:
1 ‘AND’ 1 = 1
1 ‘AND’ 0 = 0
0’AND’ 1 = 0
0 ‘AND’ 0 = 0

Once we have this all laid out in the spreadsheet, we can start filling out our sequence of events. Fill in the events based upon the time frame from input bit 0. I usually start by thinking about what happens when power is applied to the unit the first time. This exercise can be a struggle because you must know exactly what you want the sequence to be in order to fill out the table.

We will continue this next time by writing the code to do what our tables want. A review of the numbering systems can be found on this post. A copy of the spreadsheet can be obtained at the following link: PLC Traffic Sequence

Part 4 will continue with the programming of the logic in the PLC.

Thank you,
Garry

If you’re like most of my readers, you’re committed to learning about technology. Numbering systems used in PLC’s are not difficult to learn and understand. We will walk through the numbering systems used in PLCs. This includes Bits, Decimal, Hexadecimal, ASCII and Floating Point.

To get this free article, subscribe to my free email newsletter.

Use the information to inform other people how numbering systems work. Sign up now.

# How PLC Outputs Work

This post is a further follow up from my original ‘Here’s a Quick Way to Understand PLC Inputs and Outputs’. There are basically two different kinds of PLC outputs, Discrete and analog. Discrete outputs are either ‘ON’ or ‘OFF’; 1 or 0. You can think of them as a single light bulb. Analog outputs have a range to them. They are outputs that usually will control proportional valves, drive speeds, etc. They usually have one of the following signals that are outputted from the PLC: 4-20mA, 0-10VDC, 1-5VDC.

Discrete Outputs

The above diagram has three outputs. A coil, light and motor. The Ladder outputs Y0, Y1 and Y2 control the outputs respectfully. You will notice that when the Ladder output turns on, the corresponding output card bit LED turns on. This then will energise the output hardwired to the device.

The outputs are turned on or off at the end of every PLC Scan. The PLC logic is solved left to right, top to bottom in most PLCs. Physical outputs are not set / reset until an I/O refresh is performed at the end of every scan. This means that if I have a scan of 1msec, then the maximum time it will take to turn on/off the output is 1msec.

PLCs will sometimes have the ability to update the I/O in the middle of a scan. Please refer to your PLC manufacturers manual for this instruction. This can be used for updating the I/O quickly or controlling stepper drives for motors by giving them a pulse train output from the discrete PLC output. A pulse train is just a quick series of on/off states of the output.

Analog Outputs

An analog output converts a digital value to a voltage or current level that can be used to control (vary) physical outputs. In the example above we are controlling the speed of the motor. Words in the PLC will control the analog value.
Example:
4 – 20 mA current Output – 8 bit resolution
4 mA = 00000000 base 2 = 00 base 16
20 mA = 11111111 base 2 = FF base 16
What Everybody Ought to Know About PLC (Programmable Logic Controller) Numbering Systems

In the industrial environment noise from variable frequency drives, improper grounding, etc. can interfere with your analog input. The following post will show a quick method to reduce this noise.
The Secret Of Getting Rid Of Noise On Your Analog Signal

Previous Post:
How PLC Inputs Work

Watch on YouTube : How PLC Outputs Work

Thank you,
Garry

If you’re like most of my readers, you’re committed to learning about technology. Numbering systems used in PLC’s are not difficult to learn and understand. We will walk through the numbering systems used in PLCs. This includes Bits, Decimal, Hexadecimal, ASCII and Floating Point.

To get this free article, subscribe to my free email newsletter.

Use the information to inform other people how numbering systems work. Sign up now.

# How PLC Inputs Work

This post is a further follow up from my original ‘Here’s a Quick Way to Understand PLC Inputs and Outputs’. There are basically two different kinds of PLC inputs, Discrete and analog. Discrete inputs are either ‘ON’ or ‘OFF’; 1 or 0. You can think of them as a single switch. Analog inputs have a range to them. They are inputs that usually will sense pressure, temperature, height, weight, etc.  They usually have one of the following signals that are inputted into the PLC: 4-20mA, 0-10VDC, 1-5VDC.

Discrete Inputs

The above diagram has two inputs. A normally open (NO)  and a normally closed (NC). When we talk about normally open and close, think of the condition of the input if no one touches anything. A normally open contact will not turn on the input to the PLC card in its ‘normal’ state. The normally closed contact will turn on the input to the PLC card in its ‘normal’ state.

Normally Open Input
The NO contact when activated will complete a circuit and turn on the PLC input. Ladder logic will then turn on if you use a normally open (Examine On) input in your program. See above diagram.

Normally Closed Input
The NC contact when activated will break a circuit and turn off the PLC input. Ladder logic will then turn off if you use a normally open (Examine On) input in your program. See above diagram.

As you can see with the diagram above this can get tricky to determine the on/off condition of the input. PLC logic can convert any signal by using normally closed (Examine Off) inputs in the program. In the field, I usually look at the PLC input lights, and wiring diagrams to determine the current state of the input. This is before diving into the program to troubleshoot.

Here is a link to wiring up discrete 3-wire sensors in the field. Here’s a Quick Way to Wire NPN and PNP devices

An analog input converts a voltage or current level into a digital value that can be stored and processed in the PLC. They use words to determine the signal coming from the device.
Example:
4 – 20 mA current Input – 8 bit resolution
4 mA = 00000000 base 2 = 00 base 16
20 mA = 11111111 base 2 = FF base 16
What Everybody Ought to Know About PLC (Programmable Logic Controller) Numbering Systems

In the industrial environment noise from variable frequency drives, improper grounding, etc. can interfere with your analog input. The following post will show a quick method to reduce this noise.
The Secret Of Getting Rid Of Noise On Your Analog Signal

How to make a Start / Stop / Jog circuit in a PLC
The Secret of Using Timers
The Secret of Using Counters

Watch on YouTube : How PLC Inputs Work

Watch on YouTube : Wiring (Testing) Analog PLC Input Click

Watch on YouTube : Wiring (Testing) Analog PLC Input Omron CP1H

Watch on YouTube : Wiring Contact (Discrete) PLC Inputs

Watch on YouTube : Wiring PNP Sensor to PLC

Watch on YouTube : Wiring NPN Sensor to PLC

Thank you,
Garry

If you’re like most of my readers, you’re committed to learning about technology. Numbering systems used in PLC’s are not difficult to learn and understand. We will walk through the numbering systems used in PLCs. This includes Bits, Decimal, Hexadecimal, ASCII and Floating Point.

To get this free article, subscribe to my free email newsletter.

Use the information to inform other people how numbering systems work. Sign up now.

# How to Troubleshoot a PLC

Your control system does not work. Where do you start? Lets walk through a series of questions in order to determine where the problem lies.

Is this a new installation or previous installation that was running fine? Determine if system has been running well in the past and has currently stop working correctly. This is the indication that the problem relies inside the system.

Is there anything that has happened outside of the system? Has there been a lightening strike, blown drives on other systems, etc.  This can point to the original cause of the malfunction.

What is the system doing now and what should it be doing? Gather all of the information you can from every resource you can.

• Supervisors  – machine, location, time of error, other happenings in the plant, etc
• Operators – What is it currently doing? What should it be doing? What do you think is wrong?
`Operators of the equipment are your key resource in finding, correcting and ensuring the error does not happen again. They know the equipment from an operational point of view which can assist you greatly in troubleshooting.`

PLC fatal and non-fatal errors:
If the machine is still running partially then this is an indication of a non-fatal error. Cannot run at all is usually a fatal error.

Take a look at the PLC indicator lights on the CPU. Refer to the operation manual for the PLC for troubleshooting specific lights on the CPU. The following are general tips:

If no lights are on then the possible cause is a power supply. This is usually the most common of errors on a PLC system. Mean time before failure (MTBF) is rated on the lowest rating of components which is usually the power supply.

If the run light is on and an error light flashing this usually indicates internal errors such as batteries, scan time, etc. It is usually not the reason for the lack of operation.

If the run light is on and no other errors are seen on the CPU we can put the PLC program on the bottom of the list of items that could be the cause.

Check the input cards of the PLC. You should see the individual sensors lighting up the inputs. If not then check the power supply to the input card / cards.

Ask the operator what is happening and what is suppose to happen. Try to follow the sequence of events in the PLC to determine either and input or output device not working.
Some items to watch:

If this is a new PLC program that you are doing start with a logic flow diagram. This will determine the procedure to start programming.
Every program can be done in several ways. The best method is the most documented one.

`Documentation is the mark of a good program.`

Some trouble with new programs can be racing conditions. This is usually a case of not understanding how the PLC scans logic. In general the PLC will scan from left to right, top to bottom. The output bits / words are available to the inputs of the next rung of logic. (Modicon PLC’s will scan differently.) Actual outputs and inputs are not read until the end of the scan of the PLC. Racing conditions happen when the output is set on multiple rungs, but will not get actually set until the end of the scan. Think of it as the last action will always win. So if this happens move the logic to the end of the program and see if it works. Then go back and see where the output was also set.  Cross reference guides are ideal for this purpose. (Refer to your programming software on how to get cross references.)

We have discussed just a few troubleshooting techniques. Hopefully now you know how to start looking for the errors on your  system. Let me know how you make  out.

Watch on YouTube : How to Troubleshoot a PLC

Do you know of additional tips or methods to share?

Thank you,
Garry

If you’re like most of my readers, you’re committed to learning about technology. Numbering systems used in PLC’s are not difficult to learn and understand. We will walk through the numbering systems used in PLCs. This includes Bits, Decimal, Hexadecimal, ASCII and Floating Point.

To get this free article, subscribe to my free email newsletter.

Use the information to inform other people how numbering systems work. Sign up now.

# How to Implement the Omron PLC Host Link Protocol

Hostlink communication protocol is a method developed by Omron for communication to PLC’s and other equipment. This ASCII based protocol is used over RS232 or RS422/RS485. It is a many to one implementation which means that you can communicate with up to 32 devices back to a master. (1:N) This communication on the industrial floor can control PLC’s, Temperature Controllers, Panel Meters, etc.

Our look at this protocol will include the wiring, setting of RS232 port settings, protocol format and  writing a VB6 program to read information from the PLC. I will also point you links to then store this information into a database and share over an intranet/internet. Lets get started.

Wiring of the communication ports will depend on the equipment purchased. If communicating over 15 meters, it is recommended to switch to RS422 or RS485 connection. However I have seen RS232 runs of 50 meters without an issue. It will depend on your implementation and electrical noise in the plant.

The above diagram is the basic communication needed for RS232C. Note that the shield of the communication wire is connected only to one side. This ensures that any noise induced in the communication is filtered to one end.

Settings for RS232C communications are set in a number of ways. Older Omron C**K PLC were set through a series of dip switches. Current Omron SMR1/CPM1 PLC’s are set though data memory locations.
Note: Most of the time, you need to cycle the power or switch to program / run mode for the setting to be activated.

I generally tend to leave everything at the default settings: 9600 bps, Even parity, 7 data bits, 1 stop bit. The default host link unit number is 00. (32 max. – 00 – 31)

Protocol Format
Each piece of equipment will have a list of parameters that can be read and written using the HostLink protocol. This can be found in the programming manual of the device. Here are the areas in the CPM1/CPM1A/CPM2A/CPM2C/SRM1(-V2) from the programming manual.

Lets take a look at the command to read the DM area. All of the commands and responses will be in an ASCII format.

The command format begins with a ‘@‘ sign followed by the Node / Unit number that you wish to communicate. Header code is the command in which you with to execute. (RD) This header code will determine the next series of information. In our case the next four digits will be the beginning word followed by the next four digits to indicate the number of words. The next part of the command is the FCS (checksum) calculation. The comparison to this at each end will ensure that the command/response is correct. FCS is a 8 bit data converted into two ASCII characters. The 8 bits are a result of an Exclusive OR performed on the data from the beginning to the end of the text in the frame. In our case this would be performed on the following:

`"@00RD00000010"`

The last part of the command is the terminator. This is an ‘*’ followed by the character for the carriage return. (CHR\$(13))

The response format begins with a ‘@’ sign followed by the Node / Unit number that you are communicating to. The header code is next (RD) followed by the End Code. The end code is a two digit ASCII code that indicates the message response / errors when executing the action. A normal code of ’00’ indicates that everything is fine. See the operation manual for the entire list of end codes for your equipment. The next part of the response depends on the header code executed. In our case it would contain the data requested. The last two parts of the response is the FCS and terminator just like the command format.

The above shows the timing of the command and responses.

Visual Basic VB6 (Example)
Now lets look at an example of reading the first 10 words from the DM area  of an Omron PLC.

The first step is the design the form. You can see that we have our ten DM area words set out to populate with values. We also have a T\$ for transmit. This will show what we are sending to the PLC. The RXD\$ will show what the response will be from the PLC.

The MSComm is used to communicate through the serial ports of the computer. The following is the settings for the communication port.

Here is the VB6 code for the program:
When the form loads the Date/Time will get updated and Timer1 is enabled. This timer controls the interval in which the commands get executed. (Set to 1 second)

```Private Sub Form_Load()
Label2.Caption = Format(Date, "YYYY/MM/DD") + "    " + Format(Time, "HH:MM:SS")
Timer1.Enabled = True
End Sub```

The following code will open the communication port, set the command format, send the command through the port, receive the response through the port and display the information. It will then close the communication port.

```Private Sub Timer1_Timer()
Timer1.Enabled = False
MSComm1.PortOpen = True
Label2.Caption = Format(Date, "YYYY/MM/DD") + "    " + Format(Time, "HH:MM:SS")```
```'Check DM AREA DM0000 to DM0009 data update
T\$ = "@00RD00000010"
charreturn = 51
GoSub FCS
GoSub communicate```
```'Show Transmit information
Label24.Caption = Buffer
'Show Returned information
Label26.Caption = rxd\$```
```If Mid(rxd\$, 6, 2) = "00" And (Len(rxd\$)) >= charreturn Then
Label4.Caption = Mid(rxd\$, 8, 4)
Label6.Caption = Mid(rxd\$, 12, 4)
Label8.Caption = Mid(rxd\$, 16, 4)
Label10.Caption = Mid(rxd\$, 20, 4)
Label12.Caption = Mid(rxd\$, 24, 4)
Label14.Caption = Mid(rxd\$, 28, 4)
Label16.Caption = Mid(rxd\$, 32, 4)
Label18.Caption = Mid(rxd\$, 36, 4)
Label20.Caption = Mid(rxd\$, 40, 4)
Label22.Caption = Mid(rxd\$, 44, 4)
End If
Timer1.Enabled = True
MSComm1.PortOpen = False
Exit Sub```

The following is the subroutine to communicate. Timer2 is the amount of time to wait before expecting an answer on the communication port. Once the command has been sent a maximum of two seconds is waited for an response. If no response nothing is returned. When the response is obtained, the FCS is checked and if correct the information is returned.

```communicate:
rxd\$ = ""
Buffer = T\$ + FCS\$ + "*" + Chr\$(13)
MSComm1.Output = Buffer
Timer2.Enabled = True
Do
DoEvents
Loop Until Timer2.Enabled = False
If Time > #11:59:50 PM# Then
timeout = #12:00:02 AM#
Else
End If
MSComm1.InputLen = 0
Do
If timeout <= Time Then GoTo timeoutcom
DoEvents
Loop Until MSComm1.InBufferCount >= charreturn
rxd\$ = MSComm1.Input
fcs_rxd\$ = Left((Right(rxd\$, 4)), 2)
If Left(rxd\$, 1) = "@" Then
T\$ = Mid(rxd\$, 1, (Len(rxd\$) - 4))
ElseIf Mid(rxd\$, 2, 1) = "@" Then
T\$ = Mid(rxd\$, 2, (Len(rxd\$) - 5))
rxd\$ = Mid(rxd\$, 2, (Len(rxd\$) - 1))
End If
GoSub FCS
If FCS <> fcs_rxd\$ Then
rxd\$ = ""
End If
clearbuffer\$ = MSComm1.Input
Return```

This is the FCS (checksum) calculation routine.

```FCS:
L = Len(T\$)
A = 0
For J = 1 To L
TJ\$ = Mid\$(T\$, J, 1)
A = Asc(TJ\$) Xor A
Next J
FCS\$ = Hex\$(A)
If Len(FCS\$) = 1 Then FCS\$ = "0" + FCS\$
Return```

This is the routine that will execute if the response is not received within the time period expected.

```timeoutcom:
clearbuffer\$ = MSComm1.Input
rxd\$ = ""
Return```
`End Sub`

Timer2 was used as a delay before looking for a response after sending the command.

```Private Sub Timer2_Timer()
Timer2.Enabled = False
End Sub```

Here is the code running:

– When troubleshooting serial communications it is sometimes helpful to use HyperTerminal. This program will send and receive information in/out of the serial ports.

Watch on YouTube : How to Implement the Omron PLC Host Link Protocol

If you have any questions, need further information or would like a copy of this program please contact me.
Thank you,
Garry

If you’re like most of my readers, you’re committed to learning about technology. Numbering systems used in PLC’s are not difficult to learn and understand. We will walk through the numbering systems used in PLCs. This includes Bits, Decimal, Hexadecimal, ASCII and Floating Point.

To get this free article, subscribe to my free email newsletter.

Use the information to inform other people how numbering systems work. Sign up now.

# What Everybody Ought to Know About Speaking to Individual People

Talking to individuals is a complex thing. Everyone is unique and has something to contribute. It is up to use to find out what that is through the way we conduct ourselves. It boils down to our ability to modify our behaviour to allow our audience to feel safe so true communications and be done. We will go through some of the things that I have learned over the years. Some items I am still working. Lets get started.

Julian Treasure in this  June 2013 TED talk gives us some of the basic rules and sins to stay away from in speaking. He also lists some ideas in the toolbox that we can all learn to use. We as individuals need to change in order to speak more effectively.

Listen
Listening is a skill. I was always told ‘We have Two ears and One mouth… Listen twice the amount we speak’. Active listening involves understanding what the other is trying to communicate. Do not interrupt the other person. Listen with an open mind. That is to think about what they are saying. Understand their point of view and opinions. Do not sympathise, empathise with the other person.

Communicate in the way in which the listener wants to communicate
There are several personality profiles that people can use to label individuals.  Assessments like Meyers -Briggs and DISC profiling are good to establish and understand your own profile. These should be use only for your reference. Communication to other people involve speaking to them in the manner that they want. This is where your own personal judgement comes into play. You can divide everyone that you communicate with into four categories.  They can be either more or less emotional than you, and more or less dominant than you. We can plot this out like this: We communicate to the individual based upon how they are on this plot in our opinion only. If I was personally strong in dominant and less in emotional then everyone would that I would talk to would seem to me like the other 3 areas.  I would adjust the way I communicate to them so it matches the way I perceive them.
So how do we communicate:
More Dominant / Less Emotional (Dominant)
We would speak direct and decisive. They are problem solvers, risk takers and self starters. Keep in mind that they have a high ego. There is only one way to get from Point A to Point B: That is a straight line.

More Dominant / More Emotional (Influencing)
We would speak enthusiastically and optimistic. They are trusting, persuasive, talkative and impulsive.  Keep in mind that they want to be entertained. When asked how to get from Point A to Point B: They will ask ‘Who else is going?’, but will come up with an answer.

Less Dominant / More Emotional (Steady)
We would speak possessively and predictable. They are good listeners, team players, steady and friendly. Keep in mind that they are reliable, dependable, patient and good at reconciling conflicts. When asked how to get from Point A to Point B: They will ask what is the plan?

Less Dominant / Less Emotional (Correct)
We would speak accurate and precise. They are conscientious, careful, analytical and systematic. Keep in mind that they want to know everything about the issue before making a decision. When asked how to get from Point A to Point B: They would need more information.

`Remember that people change all of the time. We need to adjust the way we speak to them based upon our current observations.`

Watch on YouTube : Communicate in the way in which the listener wants to communiate

Observe the conversation on their side
We mentioned that we should empathise with the other person. This means that we put ourselves in the mind of the other person to determine the next step that they will take.  Everyone has a picture of what they are thinking. We need to ensure that we understand their picture and possibly help them paint a masterpiece with our information.

Make people feel safe. You can do this by making every one that you communicate with feel important. Think of it as a big, blinking neon sign on everyone’s forehead saying ‘Make me feel important’. Simon Sinek explains in this March 2014 TED Talk this same message.

Thank you,
Garry

If you’re like most of my readers, you’re committed to learning about technology. Numbering systems used in PLC’s are not difficult to learn and understand. We will walk through the numbering systems used in PLCs. This includes Bits, Decimal, Hexadecimal, ASCII and Floating Point.

To get this free article, subscribe to my free email newsletter.

Use the information to inform other people how numbering systems work. Sign up now.

# Here is a Method That is Helping PLC Programmers to Program Faster

PLC programming involves both direct and indirect addressing. Direct address programming involves writing each ladder logic rung to do the operation required. We often forget about using the powerful indirect addressing to solve our logic.

The below animated picture will show a simple example of using indirect addressing. This will use the MOVE instruction and transfer a word indirectly to output word V100. V[V0] means that the value in V0 will point to the V memory to get the value to move. You can think of this as a pointer for the memory location to move.

Of course we need to monitor V0. Our values are in sequence from V1 to V6. We need to ensure that V0 is always in the range from 1 to 6.

Lets take a look at a program sample using the Do-more Designer Software. We will set up the sequence similar to the animation above, but expand the program.
Just like above we will set up the pointer at V0 and the output at V100 memory locations. V1 to V37 will hold our output data sequence. This is outputs that we want to set on each event and/or time frame. You can see some of the registers and the corresponding values. These are set as a hexadecimal value. The following link will provide a review of the numbering systems in the PLC. (WHAT EVERYBODY OUGHT TO KNOW ABOUT PLC (PROGRAMMABLE LOGIC CONTROLLER) NUMBERING SYSTEMS)

This is the logic to set up the move instruction. The source is V[V0] which means the pointer is V0 in this memory area. The destination will be V100.

An internal timing bit ST5(\$100ms) is used to increment the pointer V0. This could also be done by an event or series of events. The pointer is then compared to ensure that it is between 1 and 37.

Finally the output word is then transferred to the physical outputs. This is done by using the MAPIO instruction. Each bit can be set independently.

This example uses indirect addressing to program a sequence based upon time. We could just as easily used indirect addressing to compare inputs to a table and set the outputs accordingly. You can see how this method can greatly reduce the amount of time to develop your program. This holds especially true if the sequence needs to be changed. It would be just a matter of changing data values in the table.

The following are separate posts that use indirect addressing:

Building a PLC Program You Can Be Proud Of – Part 1
This use the control of an intersection traffic light to demonstrate direct versus indirect addressing.

Building a PLC Program That You Can Be Proud Of – Part 2
A sample program to control valves. This uses indirect addressing for the inputs as well as the outputs.

Now You Can Have Robust Data Logging for Free – Part 1
Using indirect addressing, this sample program will log information in the PLC to be retrieved at a later time.

Indirect addressing is a powerful method of programming to simplify and program faster than you ever thought possible. You can even use indirect addressing in the PLC to scale a non-linear analog input signal. Let me know you thoughts on using indirect addressing. What can you come up with?

Watch on YouTube : Here is a Method That is Helping PLC Programmers to Program Faster

Thank you,
Garry

If you’re like most of my readers, you’re committed to learning about technology. Numbering systems used in PLC’s are not difficult to learn and understand. We will walk through the numbering systems used in PLCs. This includes Bits, Decimal, Hexadecimal, ASCII and Floating Point.

To get this free article, subscribe to my free email newsletter.

Use the information to inform other people how numbering systems work. Sign up now.

# The Secret of Using Counters

Counters  are used in the majority of PLC programs. This is especially true if part of your SCADA system. Counters like the animated picture above count things. In this situation we are counting the number of turns the little guy makes. The counter is displaying the total number. This is considered a totalizing counter. If an output turned on to do something then it would be a preset (target number entered for the count) counter. There are also a wide variety of off the shelf industrial counters that you can use. The implementation of counters can be vast, however it all starts with a TIMING CHART. This is the same as the timing charts we discussed in ‘The Secret of Timers’ post.

A timing chart is the secret behind understanding of the counter that you need in your application. Making a timing chart before writing the program will ensure that all of the information will be accounted.

The timing chart is mapped out on a x and y plain. The ‘y’ plain has the state of the input on/off (1 or 0). The ‘x’ plain will show time.

The following shows a timing chart for a counter:
As you can see in this timing chart, you have an input, output and display.

Inputs:
Inputs are used usually sensors that are wired to the counter (PLC) to indicate the items that we need to count. They can be switches, photoelectric sensors, proximity sensors, encoders, etc. (Wiring of NPN / PNP devices) A counter will generally have only one input. In the case of an encoder input it is still only one input, however this is wired usually as a A, B and Z phase. Z is always the reset. A and B indicate the pulses and are leading or trailing each other by 90 degrees depending on direction. Allot of counters will also allow you to as a direction input signal. However this is all still only one input.

Outputs:
Outputs from counters are generally discrete. This means that they are on or off, similar to the inputs. Outputs will trigger when the count value matches the set value. The duration that the output is on depends on the reset signal, to start the count again. (DC Solenoids protection) Allot of the counters today will allow you to have multiple outputs. These multifunction counters can have several preset outputs that trigger when the counter set value has been reached. Batch outputs are also available on some of the industrial counters. A batch output counts the number of times that the preset has been reached. This output will be turned on when the number entered for the batch has been reached.

Set Value – SV:
This is usually on the display and shows the preset value. It is the target number of counts.

Present Value – PV:
This is usually on the display and shows the current or accumulated value.

The PLC programming is usually not that much different then the industrial counter. Allot of the manufactures will have an up counter, down counter and/or an up/down counter. Just as the name implies the display is either counting up or down. You have to refer to the instruction manual of the manufacturer you are programming for the way in which the counter will be programmed.

In the above example Do-More PLC program we have an up and a down counter. X0 is the input and X1 is the reset on both of these counters. (CT0, CT1)
The preset value is stored in memory location D0. This value is set to the number 3.
When the present value (accumulated) reaches the set value (preset) then the CT0.Done bit goes on and the output Y0 is active. Y0 will remain on until the reset input goes on.
The only difference for down counter is the display. You will see that the present value will count down to zero (0) before the CT1.Done bit is turned on.
These counters are memory retentive. So in order to make the counter non-memory retentive, use the first scan bit of the PLC to trigger the reset of the counter. (ST0 – \$FirstScan)

Every PLC has counters. They all have different types depending on what you are trying to achieve. It will all start with your Timing Chart.

Watch on YouTube : Learn PLC Programming – Free 9 – The Secret of Counters

Thank you,
Garry

If you’re like most of my readers, you’re committed to learning about technology. Numbering systems used in PLC’s are not difficult to learn and understand. We will walk through the numbering systems used in PLCs. This includes Bits, Decimal, Hexadecimal, ASCII and Floating Point.

To get this free article, subscribe to my free email newsletter.

Use the information to inform other people how numbering systems work. Sign up now.

# Looking For Production Improvements – Then Do A Gemba Walk!

I recently went for a Gemba Walk with Ann Machan,  General Manager of Pentair. Instead of doing normal daily production meetings, their walk does everything you can do in a boardroom, plus so much more.

What is a Gemba Walk?
http://www.gembawalk.com/the-gemba-walk/

We met in her office and were explained the KPI (Key Performance Indicators) for the operation of the plant.  Each of these KPI’s are posted at each department where the work happens and are on a large white board.

The walk each morning starts at the shipping office with the rest of the staff. The operator in shipping  discusses how their department has done in the last 24 hours in relation to the KPI. Questions are raised about the next 24 hours and possible issues. Before we leave this department Ann asks a few personal questions to the shipper. He answers and they start to laugh. It is obvious that they have a good relationship in which information can flow freely.

Splitting up the group into three different teams to cover the entire plant, the walk continues. We went to three additional departments where again we were shown the KPIs and how they related to the department. Notes were taken and questions asked about possible issues and current problems. Information was exchanged from the previous days problem with the solution for one that was to be implemented that afternoon.

We assembled back all together in a central location in the plant. A large board with people’s names (Responsible for Department) was listed on the left side and twenty one numbers were written on the top representing three weeks. The current week that they were on, followed by the next two weeks. This grid pattern was where they then discussed the walk and the issues raised. To the right of the board a chart was placed. This chart contained the total number of problems/issues solved for each department and total company. A graph was also displayed showing the growing trend. Underneath this chart were the KPI charts that all showed either sustained or improved performance.

We started with the previous days issues under yesterdays date. A status update was given and the posted note was moved to either the completion clip at the side or put under a future date. When this was complete, a representative of each of the three groups when through their list of issues. These were then assigned and placed on the board. Problems that required additional investigation were discussed briefly and then the 5 why process was assigned to the person who had the greatest knowledge.

This whole process took about one hour. The Gemba walk accomplished the following:

• Everyone’s understanding on the current company situation based upon the KPIs
• Everyone knowing exactly what is expected
• Everyone taking pride and knowing they are doing a good job
• Everyone knowing someone is there to help

I found the whole experience of the Gemba walk fascinating. It is the only way that I see that you can have clear lines of communication to all staff. The way in which to grow as a company is to learn from our workers and in turn we will teach them.  It was an opportunity to:

• See the work being done
• Experiment with ideas
• Learn from all parties involved
• Explain why things are this / that way
• Watch what is being done

Take your own Gemba walk on your production floor. Let me know how it turns out.