Who Else Wants To Discover Takt Time?

Takt time is the beat of manufacturing. It is the rhythm of the company for making products or delivering service. Do you know what yours is? Let’s take a look at takt time and determine how to use it to our advantage.

This is a German word taken from beats in music, and used in lean manufacturing. Takt time is calculated by the total available time divided by the customer demand. This must be greater than our ability to produce product or we would be letting our customers down.

Takt Time = Total Available Time / Customer Demand

Total Available Time:
This is the total available time for work to be performed. Lunch, breaks and daily meeting times are removed from this total, unless they are constantly covered by relief.

Customer Demand:
This is the average rate at which customers purchase products or service. It is expressed in the same time frame as Total Available Time. You can also look at projected purchases from the customer.

Example:
Total Available Time (Day):
8 hour shift x 60 = 480 minutes
480 minutes – (2*10 minute breaks) – (20 minute lunch) = 440 minutes
Customer Demand (Day):
500 units / 5 days = 100 units a day
Takt Time (Product Unit):
Total Available Time / Customer Demand
440 minutes / 100 units a day = 4.4 minutes or 264 seconds
Each product unit must be produced within 4.4 minutes.

Takt time is the pace the customer requires product. This is different from Lead Time, which is the total production time from product start to finish. The other definitions that get confused are Cycle Time and Target Cycle Time. The Target Cycle Time is the pace at which we will produce to ensure we meet customer demand. Cycle Time is the time the process cycles. Keep in mind all of these items when looking at satisfying customer demand.

Takt time is just a value that will show you your ability to meet customer demand. Material or the lack of it behind each machine is the indication within manufacturing that will show you your current situation. Stock will buffer the unevenness of work and breaks in the manufacturing process. The goal is to synchronise the flow from the first process to the last.

If customer demand is greater than the ability to produce the product or service then you would find that stock would be running out.

If customer demand is less than the ability to produce the product or service then you would find an increase in stock.

A bottleneck is a point of congestion in a system. Work arrives quicker than what can be handled. It looks like the neck of a bottle which limits the ability to have liquid pass through. On the manufacturing floor, you can notice bottlenecks by the amount of material behind machines.

`Bottleneck operations are those operations where the machine cycle > Takt Time.`

The goal is to eliminate the bottlenecks by looking at our ability to handle customer demand through measures like Takt Time. This does not have to be a hard task. We have the ability through PLCs and data collection to monitor all of the different times discussed and ensure we satisfy customer demand.

Watch on YouTube : Who Else Wants To Discover Takt Time?
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 PLC Programming Languages

PLC programs are normally written in a special application on a personal computer, then downloaded to the PLC. This downloaded program is similar to compiled code to keep the program efficient. The program is stored in the PLC either in battery-backed-up RAM or some other non-volatile flash memory.

Albert Einstein said “The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking” PLC programming languages have evolved to both adapt and change the way we program these units. We will look at all five programming languages as defined by the IEC 61131-3 Standard.

• Structured Text (ST)
• Function Block Diagram (FBD)
• Sequential Function Chart (SFC)
• Instruction List (IL)

Not all of these programmable controller languages are available in every PLC. Ladder logic programming is by far the largest percentage of use in PLC’s today. Fundamental concepts of PLC programming are common to all manufacturers. Differences in I/O addressing, memory organization, and instruction sets mean that PLC programs are never interchangeable between different makers. Even within the same product line of a single manufacturer, different models may not be directly compatible. This is true when looking at manufactures that private label other controllers.

`Estimates are as high as 95% of installations use ladder logic programming in the programmable logic controller.`

The PLC programming language that is used can be decided when you look at the following:

• Maintenance and troubleshooting
• Knowledge of language
• Acceptance of the country, location, or individual plant
• Application of the PLC
• Ease of changing PLC program

The actual programming of the PLC is the second last step in the development of programs. The five steps to PLC program development is a good method to follow before picking what programming language to use. As mentioned before the languages supported by each PLC may differ. Please refer to the types of programming that are available for your model and version of PLC.

Let’s quickly review some of the different programming languages for the PLC.

Structured Text (ST) is a high level programming language that closely resembles Pascale programming. Statements are used to define what to execute.

Function Block Diagram (FBD) is a graphical representation of AND, NAND, OR, NOR gates, etc. that are drawn. It will describe the function between input and output variables.

Sequential Function Chart (SFC) is like a flowchart of your program. It defines the steps through which your program moves.

Instruction List (IL) can also be referred to as mnemonic code and statement list. It contains simple instructions for looking at your variables.

Ladder Diagram (LD) is the most popular programming language for the PLC. It was written to mimic the mechanical relays in the panel that the programmable logic controller replaced. It has two vertical rails and a series of horizontal rungs between them. Controllers will usually scan from left to right top to bottom. The output of one rung is available for the next rung.

Note: All pictures from PLCopen IEC 61131 Basics

PLC programming methods are evolving. PLC Open is an organization that is defining new methods to take advantage of the latest computer innovations. They have defined the IL method of programming to XML (Extended Markup Language) which is used for web development. This in my opinion keeps moving the ideal method, to a standard way to program PLCs.

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.

Now You Can Have Data Logging Free

A data logger is also known as a data recorder or  data acquisition. It is a method to record data over a period of time and/or events.

The recorded information can come from sensors in the field. They can be digital or analog. With analog (voltage or current) we can measure temperature, pressure, sound, weight, length, etc. Digital data can be used for counts, times, events (motor overload), etc.

Data collecting can be time or event driven. Time based would be like collecting data every minute, shift, day etc. An event based collection would be from an error in the field such as an overload of a motor or a fault with a temperature controller.

`Data mining / analysis is the most important part of the data logging.`

Data mining / analysis is the way in which we look at the data and determine  what to do. Clustering is a method to look at the data in similar groups for comparison. An example of this would be the amount of material made on individual shifts in the plant.  Setting up the data logging in a way to examine the output over time is very helpful in determining methods to increase productivity in the manufacturing environment.

Time studies or observations are vital in the lean manufacturing world. Data logging can be useful in assisting with these studies. However, unlike the usual manual approach, this time study can be continuous.

Doing Time Observations

Data logging does not have to be expensive. It is also not as intimidating as it may sound.

This eBook will walk you though step by step on getting information into a database so you can start analysing the data. With traditional loggers, software will read the memory of the PLC and store in a local computer. If the network stops or the PLC communication fails then the logging will stop.
Creating a robust PLC data logger allows the communication to be stopped for a period of time without losing any of the data for collection. This is accomplished by storing the data locally on the PLC until communication is restored. All of the data is then read without loss. The amount of time that the connection can be lost will be dependent on the memory size of the PLC and the frequency of the data collected.
This series will walk you through the steps to create and implement a robust PLC data logger using the following equipment and hardware.
• Automation Direct – Do-More – H2-DM1E PLC (Ethernet Modbus TCP)
• Do-more Designer 1.3 (Simulator instead of PLC mentioned above)
• Windows based computer running IIS
• Visual Basic 6

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 Send Email to SMTP Server

Simple mail transfer protocol (SMTP) is the email protocol for sending information. We can take advantage of this ability to email from our data logged from the PLC. Shift reports on productivity can be automatically emailed to recipients. Faults or errors detected by the PLC can be emailed directly to individuals for correction.

We will use visual basic 6 (VB6) to send an email message to the SMTP Google Gmail server. Using this method we can use HTML code to format our messages. Attachments can also be added to the email message. In this example I have added the ACC icon file.

The first step is to add a reference to Microsoft CDO for Windows 2000 Library.  Project -> References

Make a simple form:

This will have one command button on it labeled “Send Mail”

The code for the command button will be as follows:
Private Sub Command1_Click()

Call SendEmail
End Sub

Add the following Sub SendEmail code to the project :
‘Sample code that is used to send emails from any SMPT server using CDO in Visual Basic 6.0.

‘Added a reference to the project by navigating to Project -> references and adding Microsoft CDO for windows 2000 Library.
Sub SendEmail()
On Error Resume Next ‘ Set up error checking
Set cdoMsg = CreateObject(“CDO.Message”)
Set cdoConf = CreateObject(“CDO.Configuration”)
Set cdoFields = cdoConf.Fields
‘ Send one copy with Google SMTP server (with autentication)
schema = “http://schemas.microsoft.com/cdo/configuration/”
cdoFields.Item(schema & “sendusing”) = 2
cdoFields.Item(schema & “smtpserver”) = “smtp.gmail.com”
cdoFields.Item(schema & “smtpserverport”) = 465
cdoFields.Item(schema & “smtpauthenticate”) = 1
cdoFields.Item(schema & “smtpusessl”) = 1
cdoFields.Update
With cdoMsg
.To = “gshortt@domtech.net”
.From = “gclshortt@gmail.com”
.Subject = “Send email to gmail”
‘ Body of message can be any HTML code
.HTMLBody = “Test message using CDO in vb6 to Gmail smtp”
‘ Add any attachments to the message
Set .Configuration = cdoConf
‘ Send the message
.Send
End With
‘Check for errors and display message
If Err.Number = 0 Then
MsgBox “Email Send Successfully”, , “Email”
Else
MsgBox “Email Error” & Err.Number, , “Email”
End If
Set cdoMsg = Nothing
Set cdoConf = Nothing
Set cdoFields = Nothing
End Sub

When you run the program you will get one of the following messages depending if the email was correctly sent or not.

Here is the message that arrives to the recipient:

Simple mail transfer protocol is an easy way to share information from the PLC data collected.

Watch on YouTube : How to Send Email to SMTP Server
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.

Who Else Wants to Learn About On Off and PID Control?

Process control can be a bit intimidating. We will try and break down both On/Off and PID control in a fun way. This is a simple analogy without any math.

On/Off control can be used effectively with temperature control. Everyone’s house usually has a temperature controller that uses an On/Off control. When the temperature is below the set value (SV) the output switches on. The output will remain on heating the house until the present value (PV) is above the set value. At this point the output will then go off. The house will constantly be doing this in a cyclic way. This means that the temperature of the house will vary a few degrees.

We can plot this out like the sign wave above. The set point is at the middle. By the time the output is turned off the thermo mass continues to heat the house, before starting to cool down. The same is true when the output is turned back on. It will cool down a little more then start to heat up again. This is called hunting. We can not get exactly on the set point value and stay there.

Lets look at another way to explain:

You are in a car and can only use full gas or full brake. Racing toward the stop sign at full gas, you use full brake at the stop sign line. Naturally you go passed the stop sign and eventually come to a full stop. Putting the car in reverse, you again use full gas back toward the stop sign line. When you hit the line you apply full brake. Missing the mark again.  This is like On/Off control action.

If we wanted to control the method a little closer then we could program in a hysteresis. (Dead band) This is just a range in which nothing would happen. It would take into consideration the amount that we went over the line in both directions.

If we need to hit the stop sign target a little more accurately then we can now introduce another control method.

PID is a time based control logic. It will look at a control period (CP) and determine what to do for the next. In a temperature control application the control period would be 20 seconds. In a servo valve application, it can be 1 second. Lets look at each of the control methods in the PID with respect to our car analogy.

Proportional Control (P) – This will increase in amount based upon the error. The closer we get to the set point, the control period will be on for a longer period of time. (Reference to the output percentage  of control period time.)

In our example the car can be seen applying the brakes proportionally longer and longer times before the stop sign line is reached. If it goes over the stop sign line the car will apply the brakes even longer depending on the amount over the line. This is proportional control.

Integral (I) – Using just proportional control would always leave us below the set point. We need a method to reset us to the actual set point. This is where integration comes into play. It is interesting to note that PI control is one the most commonly used in the industry.

The car above is travelling along the road, following the dashed lines. If we used just proportional control we would find ourselves riding in the ditch. The integral control will move us into our lane and keep us close to the dash line.

Derivative (D) – This mode of control will look at rate of change and adapt our control to get us back to set point. Remember that everything is based upon a control period which is time. PI rely on the fact that everything remains constant in your control. D will take into account the differences over time.

In our car analogy the derivative function of the control will continually adjust as we move up the hill and down the other side. It will not do much as we drive along the straight road way.

We have looked at a very basic analogy of control logic without all of the details of math. This can aid in understanding what your process is doing and methods to correct. Further information can be obtained by the following references:

Nice project using PID:
Desktop Line Following Robot

Watch on YouTube : Who Else Wants to Learn About On / Off and PID Control?
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 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 you can learn PLC Programming without spending a dime!

I have been writing PLC programs for over 20 years. I often get asked what is the best way to lean PLC programming. Programming in the way I was taught in college was with the Motorola 6809. (Yes, I know that I am dating myself) This was microprocessor programming, but it was the best way to sometimes explain the methods behind PLC programming. Manufacturers of PLCs had allot of proprietary software that were not even related in their appearance and methods of programming. Today we have a few standards that have changed the look and feel of the programming software packages so each manufacturer is similar. The following is the best recommendation that I have for beginners to start to learn PLC programming today.

The first place to start in order to learn PLC programming is the free publication by Kevin Collins. This PDF will teach you PLC programming without just telling you what a PLC is and how it functions. He also includes some test questions along the way in order for you to retain and understand the important points that he is making.

PLC Programming for Industrial Automation
by Kevin Collins
(Note: This book is now for sale on Amazon.)
https://www.amazon.com/Programming-Industrial-Automation-Kevin-Collins/dp/1846855985
Topics covered include:

• PLC Basics
• Conditional Logic
• Normally closed contacts
• Outputs and latches
• Internal relays
• Timers
• The Pulse Generator
• Counters
• Sequential Programming Introduction
• Evolution of the Sequential Function Chart
• Programming using the Sequential Function Chart
• Entering the SFC program into the PLC
• Modifying an SFC Program
• Selective Branching
• Parallel Branching

After learning the basics from the above manual, practice. Create programs yourself and test what you have learned. You can accomplish this by using simulators. Allot of the programming software will have simulators. The simulator will mimic the PLC hardware so you can test your programs before installing in the field. Traditionally I have not been a fan of simulators, but recently Automation Direct has introduced a simulator with their Do-More PLC. It is the Do-More Designer Software. This software simulator includes the entire instruction set (Not Just Bit Logic) as well as communication protocols. It can be downloaded and installed for free from the above link.

The next step I recommend is then to advance into some of the advanced instructions. An understanding of the numbering systems in the PLC will be a benefit. Math, PID, register manipulation and conversion instructions are just a few of the advanced programming you can learn. All of these and more instruction information can be obtained from reviewing the documentation from the PLC manual that you are programming. Once again all of these instructions are included in the Do-More Designer Software.

Program structure is the next topic. Allot of programmers would stop here and can do well with developing software, however there is much more that you can lean.  Sequencers give programmers the methods to change logic on the fly and allow troubleshooting the system easier. This method of programming can benefit you greatly and reduce the development time of your logic.

The last step that I recommend learning is the sharing of information. I am meaning the information that you program through an HMI and/or SCADA package. This refers to understanding of the ways in which information can be gathered from the PLC and displayed in different ways. Here are a couple of previous articles that have been written on this subject:

How to Implement the Omron PLC Host Link Protocol

Robust PLC Data Logger

As you can see, there is allot of information available to you to begin and lean PLC programming without spending a dime!  Remember that PLCs are similar to computers, (Moore’s Law) they increase in size and ability. Systems are expanding and changing everyday. Happy programming.

Do you know of additional tips or methods to share?

Watch on YouTube : How you can learn PLC Programming without spending a dime!

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.