Development of a servo linear slide experimental system using a Mitsubishi FX PLC and MR-C servo by Nicolas JULIEN This Report is submitted in partial fulfilment of the requirements of the Honours Degree in Electrical and Electronic Engineering (DT021) of the Dublin Institute of Technology May 9th, 2008 Supervisors: David Berber, Jaye Renehan School of Electrical Engineering Systems School of Electrical Engineering Systems ACKNOWLEGMENT First I want to thank all the people without whom this project would have been terribly difficult: Jaye Renehan (Adapt Engineering) for the opportunity of this engineer experience and his kindness William, Paul and Colon, (Adapt Engineering) for their hard working during classes and sympathy David Berber for all the help he provided me for this project All DIT’s technicians, Finbarr O’Meara, Terence Kelly (Terry), Gordon Reynolds (Brakeman) and Michael Feeney for their help. Ryan Ford from Mitsubishi, and Steven Mehon for them technical support and friendship. All my French friends who supported me during those twelve weeks: Catherine, Christophe, Clement and Julien. Solène, my girlfriend, for her supportive. 2 Nicolas JULIEN School of Electrical Engineering Systems ABSTRACT PLC control of Servo Motor Systems investigation. The project was to investigate the control of servo motor systems for use in an Irish company involved in high precision designing and manufacturing of specialty machines and fixtures. Servo motor control is really important in automation, and this company wanted to acquire this knowledge, since it involves a qualified staff. The small size of the company didn’t allow them to hire experts for classes, and develop the expertise by themselves needed a lot of time, that the employees did not have. So I realized investigations to acquire an expertise in Servo Motor Control Systems, to transmit my knowledge to the engineers of the company, as a hired expert could do. 3 Nicolas JULIEN School of Electrical Engineering Systems INDEX Acknowlegment ......................................................................................................................................................... 2 Abstract ...................................................................................................................................................................... 3 Project presentation .................................................................................................................................................. 6 Adapt Engineering................................................................................................................................................. 6 Basics..................................................................................................................................................................... 6 Additional Projects ..............................................................................................................................................10 Project schedule .......................................................................................................................................................11 Project running.........................................................................................................................................................12 Discovering/ Wiring: Week 1&2..........................................................................................................................12 First visit to Adapt Engineering: week 2 .............................................................................................................22 First tests: week 2 ...............................................................................................................................................22 Rational windows: Week 3..................................................................................................................................23 New working way: week 4 ..................................................................................................................................25 Huge changes: week 5&6....................................................................................................................................28 Project second part: week 7 ...............................................................................................................................33 Adapt presentation and huge motor: week 8.....................................................................................................37 Adapt presentation: week 9................................................................................................................................39 S program: week 9&10 .......................................................................................................................................44 Final presentation: week 11................................................................................................................................48 Report: week 11&12 ...........................................................................................................................................48 Scheme of the chronological sequence of event ................................................................................................49 Teaching syntheses ..................................................................................................................................................50 4 Nicolas JULIEN School of Electrical Engineering Systems First presentation ................................................................................................................................................50 Second presentation ...........................................................................................................................................50 Teaching conclusion ............................................................................................................................................51 Project reflexion .......................................................................................................................................................52 What I learnt .......................................................................................................................................................52 Problems .............................................................................................................................................................52 After work reflexion ............................................................................................................................................53 Critical assessment..............................................................................................................................................53 Design File ................................................................................................................................................................54 Adapt PLc and HMI code evolution.....................................................................................................................55 Rational PLC and HMI programs .........................................................................................................................71 Big motor PLC and HMI program ........................................................................................................................72 Adapt praticing files ............................................................................................................................................74 Appendix ..................................................................................................................................................................75 Servo Motor Project Log .....................................................................................................................................76 Adapt first presentation Power Point .................................................................................................................88 Adapt Second Presentation Power Point ............................................................................................................89 Assessments from adapt .....................................................................................................................................90 5 Nicolas JULIEN School of Electrical Engineering Systems PROJECT PRESENTATION The aim of the project is to design, develop and implement a computer controlled servo system. All investigations will be reported to an Irish company which want to acquire this expertise in Servo Motor Control. ADAPT ENGINEERING Adapt Engineering is a small Irish company based in Dublin, which design and manufacture Specialty Machines and Fixtures. They are four engineers and 3 technicians, specially involved in Medical machines. They are often faced to moving part machines, which requires the use of motors. For new applications, they want to use servo motors which allow really precise moves, whereas usual motors are spinning without a real control of the speed and the position. But their knowledge in this area is really limited, and they want a deeper understanding of this kind of systems. BASICS The aim of the project is to learn the positioning theory and to develop a practical application of the servo motor use. Here we are using a slide (translation moves) using a screw connected to the axis of the motor. During twelve weeks, all the possibilities of this application will be explored, and then, all the knowledge will be transmitted to Adapt Engineering’s employees for future projects. WHAT IS SERVO MOTOR CONTROL? A usual motor is simply spinning when powered. But a Servo Motor is made with an encoder attached to the axle, which transmit the exact position of the motor at any moment to the Servo Controller. Currents Mitsubishi’s Servo Motors reached an accuracy of 10.000 positions per rotations, what means that we can adjust the position of the motor to 0.036 degree! If this kind of motor is mounted on a screwed slide, it possible to position a translating chariot with a 0.01 mm accuracy or more with a really good repeatability. 6 Nicolas JULIEN School of Electrical Engineering Systems DEVICES The system I worked on was a simple and cheap system, using cheap devices. The basic configuration of a complete Servo Control involves: - A Servo Motor: motor + encoder mechanical part - A Servo Controller: power supply of the motor and encoder calculator - A PLC: Programmable Logical Controller the brain of the system, programmed by engineer and commanding the Servo Controller - A Pulse Generator: allows the PLC to communicate with the Servo Controller - An HMI: Human to Machine Interface, that allows operator to control the PLC through a touch screen ,without a computer. All those devices correctly wired can be used to make a deeper control for example! But let’s take an example to clarify everything. 7 Nicolas JULIEN School of Electrical Engineering Systems EXAMPLE To illustrate the system, and to get an overview of the possibilities, we can imagine the following example: an apple fryer! Imagine that we want to dive an apple in a boiling bath of oil. We will use a deeper, composed of a slide and a moving part mounted on a screw. The motor is connected to the screw, and when the screw spins, the deeper go up and down, so that we can control the level of the deeper, function of the motor positon. An operator can use the touch screen (HMI) to control the level of the deeper; the HMI will tell the PLC to make a move. The PLC sends data to the Pulse Generator, which communicates the number of steps to execute to the Servo; the Servo powers the motor and the deeper moves! Then the feedback allows the Servo to know when the position is reached, and tell the pulse generator. Finally, the Pulse Generator sends data to the PLC to inform of the end of the move, what is specified to the operator through the HMI. The complete cycle is ended. Figure 1: Usual System configuration for Servo Motor Control 8 Nicolas JULIEN School of Electrical Engineering Systems OPTIMISATION In the previous example, we need the Pulse Generator to realize a conversion from the Numeric data of the PLC (computer), to the Analog input of the Servo (0V to 24V). Actually, the Servo is commanded by pulses, and each pulses received corresponds to one motor step. So that for a “4000 steps per rotations” Motor Encoder, we have to send 4000 pulses to the Servo Controller if we want one Motor complete rotation. For more explanations, please refers to Appendix Adapt first presentation Figure 2: Profile of the voltage during pulse generation But new Mitsubishi PLCs FX-3U series are able to generate this kind of pulses, so that the Pulse Generator can be avoided. These way to proceed represents a 500€ saving, the price of the Pulse Generator. All outputs from the Servo, which are analogical too, can be received by any PLC. This new way to control a Servo Controller via a PLC will be experimented during this project, to allow Adapt Engineering to save money, since some systems are using three or four Servos! Figure 3: New System Design using PLC Pulse Generation function 9 Nicolas JULIEN School of Electrical Engineering Systems ADDITIONAL PROJECTS During the twelve weeks of the project, and because of a small advance on the schedule, others tasks had been added to the project. RATIONAL WINDOWS Rational Windows is an Irish company based inside the country, not so far from Dublin, making frames for doors and windows. Some of the machinery park is old, and David Berber installed a Servo Motor Control on one of them to improve the efficiency. Some problems occurred and I participated to investigations on this problem. Then, another project was planned, still using Servo Motor Control, in which I was supposed to be deeply involved in. MITUSBISHI INVERTER F700 After the holiday break, Ryan Ford from Mitsubishi gave me a new device to work on, composed of a Servo and a Motor, but with really singular specifications. I was charged to make investigations about this new positioning system. 10 Nicolas JULIEN School of Electrical Engineering Systems PROJECT SCHEDULE This project has not a really precise objective to reach, and so it is difficult to plan the work to be done. Indeed, the characteristic of this project is that I have to learn the maximum about this system, and this why my investigations will end when time is over! So, an initial schedule that was defined as follow: Week 1: o Discovering devices o Introduction to Servo Control System Week 2: o Familiarization with Servo Hardware : Wiring Week 3: o Review of operations Week 4: o Implementation of simple routines Week 5 8: o Investigations on the system PLC programming Slide configuration HMI interface development Security implementation Week 9 10: o Teaching and documentation preparation o Teaching days Week 11 12: o Report writing 11 Nicolas JULIEN School of Electrical Engineering Systems PROJECT RUNNING This part will describe all the work I did on this project during those twelve weeks: objectives, problems, investigations, choices, solutions, etc… For a better understanding, this presentation is chronological, and details about programs will be described in the design files part. DISCOVERING/ WIRING: WEEK 1&2 The first week of this project was dedicated to the project discovery with David Berber, my supervisor. The first step was to take a look at manuals because the PLC was the only device I already knew, and it was a new model with particular specifications. This reading job was really facilitated since some hours had been dedicated to the project discovery with David Berber, before the end of the first semester. This way, I already knew all the basics, and the project started well. MANUALS My first task was to discover how to control the Servo with the PLC, using the Pulse Generation function of the PLC FX-3U. I didn’t really know what kind of functions or code I was searching for, and I spent long hours, reading the 900 pages of the documentation. I was in a real engineer situation, discovering a new problem, and I had to be patient to learn knew things by myself. Finally, I found the “DRVI” function, which realizes pulses generation! This function takes four parameters: - The number of pulses - The frequency of the pulse generation - The output for the pulses - The output for the direction All those parameters were not really clear for me, so I tried a piece of code which was given as an example. I opened GX developer, which is software for PLC programming, we learned to use during the first semester in Automation labs. The code was written, and the program sent to the PLC. It was something like: X0 DDRVI K4000 K2000 Y0 Y4 Figure 5: DRVI function use This line means that 4000 pulses will be sent at a frequency of 2000 pulses per second on the output Y0, when the X0 input would be activated. At this moment, I didn’t understand how to use the “direction output” Y4, but 12 Nicolas JULIEN School of Electrical Engineering Systems this function was apparently functioning since the Y0 and Y4 LEDs of the PLC lighted during 2s, which the time needed to send 4000 pulses at frequency of 2000 pulses per second. A test with a scope gave me the final answer, and I saw the square signal on the screen: every thing OK! WIRING I realized that reading manuals was not useful and maybe brain burning, if not any precise information was looked for. So I decided to wire all the devices together to check if everything was all right. Everything had to be done, from the power supply for the Servo and the HMI (PLC was done), to the connectors between the PLC and the Servo. A few hours were dedicated to soldering, and with the help of the technicians, all power supply and connectors were made. Then, I connected the motor to the Servo (only 4 cables for the power), and the encoder had just to be connected with a clip connector. The last step was to connect the Servo to the PLC, and this was not so easy… SINK/SOURCE NIGHTMARE All the devices I was working on were Mitsubishi’s products, so that any problem of compatibility was supposed to occur. But it did, because of an electrical worldwide standard conflict about transistors! Indeed, to control outputs, and to be controlled through inputs, the Servo, the PLC, and any electronic device uses transistors. But there are two kinds of transistors, regarding to two logical standards: - PNP transistors: positive input, for 24v logic, used in Europe - NPN transistors: negative input, for 0v logic, used in US and Japan. Those two standards are not compatible, and the devices I had were a SINK SERVO and a SOURCE PLC. Actually, the Servo I was working on did not exist in Source at this date, and we would have to wait few months to get it. This was not really a problem to communicate from the Servo to the PLC, since it is really easy to switch PLC inputs from source to sink. But to communicate from the PLC to the Servo, the problem was real, and it was a huge problem because I needed this connection to test the first elementary moves of the motor, controlled by the PLC. My knowledge in electronic was really small, and I had not any idea of how to solve this problem. 13 Nicolas JULIEN School of Electrical Engineering Systems ELECTRONICAL INVESTIGATIONS After drawing some electronic schemes, I decided to test any possible connections, to find which one was working, counting on Mitsubishi electrical engineers’ skill about bad connections. I first tried a usual source connection, and unfortunately it was not working, but it was not a surprise! I picked some crucial information from the manual before those investigations, and I knew that before any move, the Servo needed to receive a “SERVO ON” signal to be ready. After trying with the PLC, I decided to realize this connection by soldering directly the input “SON” of the servo, to the 0V pin of the power supply (since it is a Sink logic). Instantly, the motor made a high-pitched sound which indicated it was ready. So a started again my experience with pulses, and I finally made the motor spinning the Friday. All I needed was to connect the cables in an inverted way on PLC outputs. It was the same for “SERVO ON” signal, and inputs were connected in SINK, so that everything was OK at the end of this first week. FIRST WIRING The usual PLC output wiring is explained on the figure bellow: the “common” is connected to 24v or 0v, depend of the Sink or Source mode, and outputs are connected to the pins of the device to be controlled. Figure 4: Usual outputs configuration for compatible systems 14 Nicolas JULIEN School of Electrical Engineering Systems But because of the incompatibility of our system, one solution is to wire transistors in an inverted way as shown bellow. Figure 5: Wiring for a Source to Sink communication As you can see, this configuration is output consuming since the Common is used to connect the communication line, and the Controlled output for the 0v. This wiring way is operant but sacrifices an all output block for only one controlled line. Even if a PLC FX-3U 48M (our) count 24 outputs in 5 outputs block, we should not sacrifice 19 of the outputs to use only 5! Moreover, our application needs 6 outputs! Figure 6: Scheme of the FX3U-48M PLC pins 15 Nicolas JULIEN School of Electrical Engineering Systems FINAL WIRING To fit industry standards and to have a professional work it was necessary to rewire all the system: - Respecting an harmony between inputs and outputs: every thing in Source - Use the maximum of outputs: find a solution not to sacrifice entire outputs blocks This was done after the visit of Ryan Ford, electronic engineer in Mitsubishi Ireland. Ryan Ford gave me a piece of advice about the wiring, and gave me some solutions for the wiring. For the majority of the solutions, it was electronic cheating to convert negative logic to positive logic using simple resistors, and the final result was not too bad. SERVO OUTPUTS We can take the example of the most important Servo output which is “ALM” (Servo failure), to figure the new wiring. Indeed, for a Sink Servo and PLC configuration, the Servo output can be connected directly to the PLC input (see figure bellow), since X0 need to be connected to 0v (Ground) to be activated. Figure 7: Instruction from manual / Sink to Sink servo output connection 16 Nicolas JULIEN School of Electrical Engineering Systems It is what was done until here, with PLC’s inputs in Sink mode. But we want a Source mode, and inputs need 24v to be activated. For this, we use a simple circuit using only resistors as bellow. Figure 8: new wiring to convert Sink to Source logic Here, we directly connect 24 volt to the PLC input, through a resistor calculated to create a 9mA current to activate the input (see calculation on the figure). When the ALM output is supposed to be OFF, the PLC input is ON. And when the ALM output is ON, the PLC input is OFF. This way we can use both of the devices in correct mode, but logic is inverted between the Servo and the PLC. We will have to mind this for the PLC program. Figure 9: view of the resistors box 17 Nicolas JULIEN School of Electrical Engineering Systems SERVO INPUTS: PULSES AND DIRECTION The Servo Motor has two specific inputs for the pulses and the direction concerning the motor spinning. There is two ways to control those inputs: open collector and differential. With an all Sink system, it is easy to control those inputs with a PLC for example: Figure 10: All Sink connection: Open Collector / Differential The first wiring which was enough to control those inputs was connected has follow, but we remember that this solution is PLC output consuming. Figure 11: First wiring, bad solution: Open collector / Differential 18 Nicolas JULIEN School of Electrical Engineering Systems Finally, it is possible to cheat the system to use is in a more clever way. It is possible to use a specific configuration that is not specified by the manual, but that gives really good results, and allow us to use all PLC outputs! Figure 12: Final wiring: Only Pulse control scheme / Pulse and Direction control The first scheme of the figure over could let think that OPC is usable for this configuration, but the right scheme shows that OPC is common for the Pulses and Direction circuit so that we have to use the specific pins PG(pulses) and NP(direction) to supply the power. SERVO INPUTS: SERVO ON, LSN, LSP, CR The Servo has FOUR other inputs: SON (to turn servo “ready” or “on”), CR, LSP and LSN which are configured by the user. The first wiring which was once again, output consuming, was as follow: Figure 13: Usual wiring of SON input in Sink / First wiring with inverted PLC output 19 Nicolas JULIEN School of Electrical Engineering Systems We can notice that this input circuit is not so different from the Pulse/Direction input. After trying do make the same wiring, I understood that it was as if the PLC output was connected to OPC, which was problematic. On the following figure, we can see that this configuration activates all the input at the same time… For those inputs, we don’t have easy solution. Figure 14: First test for a clever wiring Another solution suggested by Ryan Ford looks like the cheating system for Servo Outputs. It changes the logical too, but allows to use only one PLC outputs for each line! Notice that this solution arrived late in the project and was never wired else than experimentally. Figure 15: Final wiring for Servo inputs 20 Nicolas JULIEN School of Electrical Engineering Systems CONCLUSION This conflict between the Servo and the PLC was really a nightmare for me. Moreover it was the first task of this project, and it was important to finish it quickly since any other tasks could not be done until the wiring is finished. Electronic is a real weakness for me, and after one all week spent on this problem, I was about to give up this project. Not only because electronic was easy, but also because tools were missing and it was not possible to have the tools I needed when I needed it! And it was really, really disappointing not be able to progress because of an impossibility to get what I needed to work. Finally, everything went well with the help of David Berber and Ryan Ford, and few mails sent to Mitsubishi head office in Germany. To finish, I invite you to take a look at the different wiring configuration between a Source to Source, and a Sink to Source Servo-PLC configuration. Figure 16: Wiring for a simple Source to Source configuration / wiring for Sink Servo and Source PLC 21 Nicolas JULIEN School of Electrical Engineering Systems FIRST VISIT TO ADAPT ENGINEERING: WEEK 2 The first visit to Adapt Engineering was done quite early to discover the company and their needs. This day, we met Jaye Renehan who is the owner and chef engineer, William and Paul who are the two young mechanical engineers I was supposed to teach, and Colon, the electrical engineer. We discovered the company’s jobs, and especially a job using a servo motor, but with a complete system (using pulse generator) and only a really simple move program made by Jaye. At this moment, they were making the first test, and I was happy to be useful in this operation because of my small knowledge of the Servo. Actually they were having wiring problems, and I didn’t stay enough in the company to see the result. This short visit gave me a real idea of what this company was making, and which kind of moves they needed. This way my work got sense and precise objective. FIRST TESTS: WEEK 2 When wired, the system was ready to operate. In the early second week, the PLC pulse generation was controlled, the communication with the Servo operating; just the necessary was wired at this moment: - Servo ON command - Pulses and Direction This wiring was the bad first one, but was running, and first routines could be implemented. HMI The first step to make first tests was to use an HMI (Human t Machine Interface) allowing me to control easily the PLC program. Before that, the only way to proceed was to take a piece of cable and make a contact between 24v and PLC inputs (X0, X1 …). HMIs need specific cross serial cable, what was not in DIT. Instead of order it (what was time consuming), I decided to make my own with brut connectors, a cable, and a soldering iron I found in Technicians office. It was two hours fighting with my patience but I did do it and it was working well. Now I could program the HMI ! FIRST ROUTINES So on Wednesday of this second week, I was programming basics moves in the PLC and a control panel in the HMI. I programmed: - Relative displacement (rotate of X motor steps): 4000 steps was actually a complete rotation 22 Nicolas JULIEN School of Electrical Engineering Systems - Absolute displacement (reminding the actual position): possibility to go to a specific position - Jog displacement (rotation controlled by operator): running until the button is pressed - Homing: routine to find the zero position, necessary for absolute moves. All those routines were programmed using the DRVI function I explained earlier. It was actually a mistake and there was no security, but it was my first tests, and it was enough. The motor was not mounted on a slide and was spinning freely, so that the security was not a problem. We will see later the evolution of the programs, but now I just try to give a global overview of my overall work during this project. RATIONAL WINDOWS: WEEK 3 The third week, David Berber came to me to talk about a new company: Rational Windows. He implanted a Servo Motor Control system in this factory, but had some problems with it: he was suspecting a lost of pulses between the PLC and the Servo. I was invited to come with him and some others technicians to try to find a solution. MACHINE PROBLEM To prepare this visit, I was charged to get a scope able to display the pulses of the PLC output. I made some tests with Finbarr (DIT technician) on my own PLC, and everything was ready. On Friday, we went to Rational Windows, and after a short visit of the factory, we focused on the faulty machine. After making some tests which were showing a problem, we tried to find the solution using the scope, and a computer brought by Ryan Ford (Mitsubishi). The system was exactly what I was doing, but with bigger Servos and Motor. The system was replacing an old one. We tested a lot of things: - Visualize pulses from the PLC: OK - Change cable for hypothetic electro magnetic noise: NO CHANGE - Count pulses sent by the PLC and pulses received by the Servo: here was the problem But after 4 hours spent on the machine the problem was known, but not solved. We left the company with no solution. 23 Nicolas JULIEN School of Electrical Engineering Systems NEW PROJECT During the visit, the owner told us about a new machine that he wanted to automate. It was a wood cut machine, and what he wanted to automate was the Stop, against which the piece of wood was blocked. The position of the Stop was determining the length of the wood cut. Until here, the Stop was handled by an operator, but the owner wanted to put a Servo Motor on it, and an HMI. This way, the operator would have to tip the position, the Stop would have moved to exact position by itself: faster and more accurate! Moving STOP part Displacment of the wood Displacment of the STOP Original positon display Figure 17: Rational Machine BACK TO DIT Back to DIT I had two missions: - Investigate about lost pulses - Make a complete PLC and HMI program for Rational Project: only Absolute move, and so Homing routine, what I had already did in a simple version. 24 Nicolas JULIEN School of Electrical Engineering Systems NEW WORKING WAY: WEEK 4 At the fourth week, I was becoming really busy: - Adapt investigations - Rational lost pulses researches - Rational project I needed a clear work area, because until here, all my devices were wired with cables everywhere, and everything was messy. FRAME The fourth week, a neat frame was done with technicians help, to welcome the PLC, the Servo, the HMI, and the motor which was not yet connected to anything. In two days, this plastic frame was finished, and I think it was a good invest since I worked much more efficiently with. SERVO PC for programing PLC HMI MOTOR Figure 18: Plastic frame to clear the work desk 25 Nicolas JULIEN School of Electrical Engineering Systems LOST PULSES First days of the fourth week was dedicated to the lost pulses affair! I made special programs to test if any pulses were lost between the PLC and the Servo, since it was the problem in Rational. A critical Servo outputs, “Zero positioning”, was really useful for this application. Indeed, the motor encoder has 4000 steps a rotation, but there is a small range of 10 steps where a specific signal is detected by the Servo. This signal can be transmitted to the PLC and a simple routine was made: - Find this special area and stop - Send a numbers of pulses form the PLC corresponding to an integer number of rotations ( 400 000 for example) - Check if the motor finish in the same area This test was really impressive, since not any time the system failed! So, there were not any lost pulses, but the accuracy of the system was proved: less that 0.1 degree faulty on 100 rotations! Finally the conclusion was that my system, using small power servo and motor, and short wires, was not submitted to same conditions as the machine in Rational. The problem was certainly electromagnetic. Later on, I knew that the problem was not a pulse lost, but a pulse gain! This was effectively due to an electromagnetic noise, and a new Ground wiring solved this problem. I think that in this problem, my investigations, and the ideas I gave was not absolutely useless. SLIDE It is during this week that the slide, mode by Adapt engineers, arrived at DIT. It was good news because it allowed me to change my switch simulating the slide captor, by real ones! I could also test my programs in real conditions, and improve my program for Rational! Indeed, this slide was close to the kind of device that could be used. 26 Nicolas JULIEN School of Electrical Engineering Systems NEW PLC/HMI DESIGN At the end of the week, it was time to make real changes in my programs, especially the HMI that was becoming messy because of the number of pages. The HMI interface got at this moment a common part grouping all important information (Servo on, in position, alarms …) distributed on all pages! This week was also a new breathing for the PLC, since I discovered new PLC bits, specialized for positioning functions. (Details later on) Zero motor detection Go to absolute move Global status: alarms, ready, etc … Alarm Go to JOG move Servo move finished Servo On control signal Current position Servo status Homing signal and link to homming page Figure 19: Common task bar grouping all important in formations (on relative move page) 27 Nicolas JULIEN School of Electrical Engineering Systems HUGE CHANGES: WEEK 5&6 I learned and discovered a lot of new things during those two last weeks before holidays. DRVI Until here, the DRVI PLC function was used to generate pulses, and only pulses. The direction (Y4 PLC output), was calculated by my own program. A meeting with Steven, David’s colleague who worked on the Rational machine program, gave me some clues about the correct use of the DRVI function. What I was doing was using DRVI to generate pulses, and then, using my program to determinate if the move was positive (positive value of the number of pulses), or negative, to command the direction PLC output. (refer to the section …) Actually, the DRVI function does it by itself, and if the number of pulses introduced is negative the DRVI function turn automatically the direction output of the function on. X0 DDRVI D100 D200 Y0 Y4 Figure 19: Correct use of DRVI So if D100 (number of pulses) or D200 (frequency) is a negative value, Y4 will be turned on! What is really code saving! And this way, I deleted almost 10 code lines I made by myself before… D8340 Steven told me about a PLC data, D8340. This data is a PLC intern memory, which remembers the number of sent pulses. I was already using this memory to make my own position calculator. Indeed, a huge program was checking the actual position, and realizing a calculation de pending of the direction of the move. This way of programming got me in huge trouble I finally solved. But the correct use of DRVI, (with the direction part) is making all this work automatically! So that almost 20 lines were deleted, and the all system was finally not working better, but was much safer than before! 28 Nicolas JULIEN School of Electrical Engineering Systems HMI Thos part of the project was also the time to program everything in millimeters, since until here, every units were in Servo Motors pulses, what is not usable by an operator! So an electronic gearing had to be realized, and I made some investigation for it. Figure 20: Extract of the Adapt presentation about gearing The first step is to find the correspondence between the units I want to program the system, and the motor steps. For the slide I was using, this correspondence was 40 000 motor steps for 120mm, so that I got 333motor steps, for 1 mm! (X=333) Then I chose A, B and C to get this result: what I chose was A=100 (which was the HMI gain), B=1(no changes in the PLC), and C=10/3(since we can parameter a numerator-10 and a denominator-3 in the Servo). We have: 100 × 1 × 3.333 = 333.33 This is all right for the application. 29 Nicolas JULIEN School of Electrical Engineering Systems RATIONNAL Concerning the Rational project, it was necessary to design the slide for them, and to size the Servo and the Motor. I used software supplied by Mitsubishi to size it. Figure 21: Screen shot of the motor sizing software After sizing the motor, I sent few e-mails to mechanical engineers recommended by David to get a piece of advice. At the same time, I was finishing the system for rational, since the PLC was well programmed, the gearing operating, and all the functions that Rational could need were OK. The only missing thing was a routine to initialize the system, and a setting page to set for example, the homing routine speeds. 30 Nicolas JULIEN School of Electrical Engineering Systems Figure 22: Rational initializing routine Figure 23: Settings page 31 Nicolas JULIEN School of Electrical Engineering Systems ALARMS Finally, the last step was to program the security, using alarms signals. I didn’t have a real Emergency Stop button, but a little switch was enough, and frame got two new switches, since the Alarms Servo outputs was burned out during my tests! Figure 24: New security switches 32 Nicolas JULIEN School of Electrical Engineering Systems PROJECT SECOND PART: WEEK 7 Back from holidays, I’m ready to work twice more! RATIONAL The Rational project seems to be dead. I didn’t get any answer from the mechanical Engineers, and David who was in stress about this project, do not give me information about it. Actually, I did nit ask for information, since a new project arrived on my desk. ADAPT Adapt project started very small, and all I did this week was to test the accuracy of my new metric system slide. Tests were really good, and I passed to the new project. MITSUBISHI HUGE MOTOR PROJECT Back from holidays, I found a new device on my desk, which was composed of a huge motor a independent encoder, and a big grey box, written “F700 Inverter on”. Figure 25: Inverter, Encoder ’ 33 Nicolas JULIEN School of Electrical Engineering Systems Figure 26: Huge motor My job was to make this system working as a positioning control system, as the other project. But an inverter is a power control device, made to pilot fan and pumps, at constant frequency. So, a small circuit is made to allow the Inverter to make control positioning. This circuit welcomes the encoder wire, and as soon as mounted, is detected by the inverter. The inverter also possesses inputs terminals for “JOG PULSES”, “Direction”, “Servo on”, etc … This is good news! The system is quite similar to what I’m used to work on. 34 Nicolas JULIEN School of Electrical Engineering Systems INVESTIGATIONS The first step was to try to make the motor moving. This was done after removing the Positioning Adaptation Circuit. It was possible to control the motor in speed, by controlling the frequency of the supply. I discovered the really power of this system which can run to 120Hz, more than 2000 rotations / min with a 1kw motor. Cables from encoder Position Circuit A7AP Command terminals Figure 27: Inverter inside with positioning card Then, I put again the Position Circuit, and wired the terminals: the Pulses and the Servo On terminals. Using another FX3U-PLC, with exactly the same program than for Adapt, I could test this new motor. The motor was jerking and had spasms. Maybe it was due to the coupling between the axis of the motor and the encoder. So I did it again with iron pieces, instead of heat shrink as it was done when I got it. 35 Nicolas JULIEN School of Electrical Engineering Systems Motor axis Encoder axis Figure 28: New iron coupling The jerking problem was not solved, and Ryan Ford, who was initially working on this system before me, told me that the inverter minimal configuration for the motor power was 0.40Kw, and this motor was 0,18kw. So I changed it for a 0.38Kw: no changes! I tried to put a load on it: the small motor which was 5kg heavy, and nothing changed. I was suspecting the encoder, and I asked Ryan about the encoder configuration. Indeed, the encoder in programmable and it is possible to multiply the base unit by a number between 1 and 16. Ryan Ford was not sure of the configuration, and had never checked it. So I looked for a manual that I had a lot of difficulties to find. Figure 29: Encoder programmable switches 36 Nicolas JULIEN School of Electrical Engineering Systems ADAPT PRESENTATION AND HUGE MOTOR: WEEK 8 The eighth week arrived really fast, and the presentation for Adapt Engineering was planned for the next week. So this week was split between the presentation preparation, and the big motor investigations. BIG MOTOR I continued investigations about the big motor, and try to modify the parameters after resetting it all. A long time was spent to check every 700 parameters of this device: motor specifications, encoder specifications, speeds, acceleration time, terminal configuration, etc… Moreover, I realized that all parameters for the A7AP module were in the documentation of the A700 inverter, for which it was made for actually. So I played with the two manuals to finally conclude that the jerking problem was not coming from the parameter. Finally I found the documentation of the encoder, and the configuration of the encoder was bad. The configuration did not have any sense, and I programmed it to a factor of 1, what means 500 steps per rotations. Figure 30: Switches configuration This changed everything, and after that it was working really well! 37 Nicolas JULIEN School of Electrical Engineering Systems HMI I had two projects, to PLCs, but only one HMI! And it was not practical to unwire it from a PLC to another, when changing project. So I made a Plug&Power HMI connector, and this way, it was really easy for me to put the HMI on the Adapt slide project, or on the Big Motor project. Both of the project programs were on the HMI, with a menu at the beginning to choose which one to be run. It was possible to investigate deeper in this new system! PLC to Inverter line with plug Second PLC Inverter Encoder to Inverter line HMI plug to PLC power Inverter to Motor power line Common HMI Big motor Encoder Figure 31: Big motor project overview Figure 32: Light interface to control the huge motor 38 Nicolas JULIEN School of Electrical Engineering Systems ADAPT PRESENTATION: WEEK 9 On Thursday this week, I will teach for the first time in my life, and I will teach engineers older than me! So I worked the entire week end long to be ready. I read manuals on more time, and realized that all my PLC program for Adapt Engineering project was not perfectly executed. NEW FUNCTIONS Indeed, I only used DRVI function to generate pulses, but three other functions exist in the PLC. The most important is DRVA, which execute absolute moves! This function realize a calculation instead of me actually, since for absolute moves, my program was calculating the difference between the address, and the current position, before sending the right number of pulses using DRVI. But DRVA does it! X0 DRVA K4000 K2000 Y0 Y4 Figure 33: DRVA function This DRVA function sends D8340-4000 pulses, which is the distance from the current position, to the address. This function is a 10 code line saving, and was implemented quickly. I also discovered DVIT, which sends pulses until a stop bit is activated. X0 DVIT K4000 K2000 Y0 Y4 Figure 34: DVIT function This DVIT function sends pulses to a 2000Hz frequency, and after activating the stop bit, sends 4000 more pulses before stopping. I didn’t find real application for this function, but it was programmed in the PLC and the HMI got a page to use it. Finally, I discovered PLSV, which send pulses without end, with a frequency that I can change during running the function, what is not possible with other functions. This function is a better solution for JOG moves, since a jog moves realized with DRVI is in fact limited to 999999pulses, which is huge. But not infinite! So the PLSV functions were implemented to replace DRVI in JOG moves. 39 Nicolas JULIEN School of Electrical Engineering Systems X0 PLSV D200 Y0 Y4 Figure33: PLSV function This PLSV function sends pulses to a frequency equal to the value of the D200 data memory. If D200 value changes, the frequency of the pulses will change to, on the contrary with other functions. The changeable speed was also used in a funny application which was a piano, implemented on the touch screen of the HMI. Run button Frequency in Hz Note : DO Figure 35: Piano HMI interface A small calculation gave me the frequency corresponding to each note. For example, the first Do is a 33Hz frequency, so I needed 33 motor rotations per second. With 4000 steps by rotation, the frequency should be 132000 Hz. But the Servo has a 10/3 gearing, so the value of the PLSV frequency is: 40000. 40 Nicolas JULIEN School of Electrical Engineering Systems SECURITY I learned a lot about Mitsubishi programming standard, and security. It exist some bits, specific to each high speed outputs, which indicate the state of each function. For example, M8029 is a signal to indicate that the function finished operating. M8340 indicate a busy line, and M8348 indicates that a function is still active. This last one is a solution to a problem I had, since if two functions (DRVI for example) are activated at the same time, they enter in a conflict and nothing happen. SO I realized a new security structure in my programs. No other function still running Auto run Pulses finished Figure 36: Secure pulse generation 41 Auto stop Nicolas JULIEN School of Electrical Engineering Systems ADAPT PRESENTATION In addition to the basics, that last information was added to the Adapt Power point presentation I was working on for a few weeks. I used the beginning of the week to finalize the presentation, and on Thursday I was ready. William, one of my new students, picked me up in the city center, to the company. I rediscovered all employees, and we started the class. I was teaching William and Paul, but Colon(the electrical guy), and Jaye, who is more accustomed to this kind of stuff. After a morning through theory, we passed an afternoon of practicing to implement a simple system using absolute move, since it is what they are likely to need in their jobs. Conveyor Green ball basket Red ball basket Figure36: Scheme of the practicing exercise This practice was about a system to sort color ball. It was possible to simulate it using my frame and the slide, which were at Adapt Engineering for a few days for the presentation. Using the switches, it was possible to specify ball detection, and a ball color. We spent all an afternoon on this application with Paul, William and Colon, but Jaye finished it really quickly, thanks to his experience. 42 Nicolas JULIEN School of Electrical Engineering Systems At the end of the day, we got a problem using the M8029, which we did not solve this day. I only found the solution in the bus on my way back, what I notified back to them in the evening. Actually, the M8029 bit refers to the function just over it, and is not a global indicator bit. The huge motor had been transported to adapt too, and they were really impressed by the strength of this system. But it was only a quick part of the day. On Friday, I was supposed to give my second class, but their was really busy, and we had to delay it two weeks later, what gave me the time to prepare a new presentation dealing with what they asked me to explain : - Gearing: all the about the way to determine the gearing and to apply it - HMI: they wanted to practice with HMIs, and interfaces 43 Nicolas JULIEN School of Electrical Engineering Systems S PROGRAM: WEEK 9&10 On the ninth week, I met Ryan Ford to show him my results with the motor, and to explain him what was wrong. He noticed that the motor was starting really fast, so that the load which was mounted on it was jerking at the bottom on the string which was attached to the motor axis. He suggested that I could do a program to control the start speed, has for a lift. Indeed, with this Servo and this PLC, I can only have acceleration as ramps and slopes, but I cannot have an “S” acceleration. That was my new goal on this project, and I started on Friday the 9th week, and continued the 10th week. THEORY To make an “S” acceleration, I chose a 1/X formula, which was the easiest to implement in the PLC, since we can only use subtractions, additions, divisions and multiplications. A Sinus or a square root is so impossible to get. The first program I made was calculating the speed, function to the position. But the position was incremented every 100ms with a fixed value, so it was more speed function of the time. I understood that 1/X function was going really close to the zero, whereas 10/X had a much better form to a lift application. 100 90 F(x)=10/X 80 70 F(x)=1/X 60 50 40 30 20 10 0 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Figure 37: 1/x and 10/X formula 44 Nicolas JULIEN School of Electrical Engineering Systems As you can see, the 10/X function has an x-offset, and a Y-offset, that pose a problem, because the start speed will not be 0, and the final speed will be reached to fast! Indeed, I want to use the 10/X function between 0 and 1 (which is the percentage on the acceleration time), and I want the function to rise from 0 to 100 (which is the percentage of the final speed). FIRST CHANGES Notice that for the moment, f (0) =infinity, and f (1) = 0.01, what is absolutely not what I want. I need to change the function by a vertical mirror, and then to translate it to the right. It is easy using the mathematical replacement: 𝑋 = (1 − 𝑥 ) Then we can start working on the 10/X function. The 1/X is quit well with this change since we have: 1 𝐹(𝑋) = 𝑋 𝐹(0) = 1 ; 𝐹(1) = ∞ 𝐹(0.99) = 100; So at position 0, the speed will be at only 1% of the speed and the speed will be at 100% at 99% of the acceleration time, then a limiter will block the speed rise. Offsets are ok. But it is not the same with 10/X: 𝐹(𝑋) = 10 𝑋 𝐹(0) = 10 ; 𝐹(1) = ∞ 𝐹(0.9) = 100; For 10/X, the start offset is 10% what is to big, and the speed reaches the final value at 90% of the acceleration time, what is too early. So we need to bring some modification to the formula. OFFSET TRACKING The Y offset is 10% of the total, so we remove it. 𝐹 (𝑋) = ( 10 1−𝑥 ) − 10 Then we remove the X offset, which is 10% of total. 10 − 1−𝑥 )+0.1 𝐹 (𝑋) = ( 10 45 Nicolas JULIEN School of Electrical Engineering Systems Now we have a new offset at the top: 10 𝐹(𝑋) = (1−𝑥 )+0.1 − 10 𝐹(0)~0 ; 𝐹(1) = 90 𝐹(1.09) = 100; So the last action is to multiply everything by 1.1 to get a perfect function. 10 𝐹 (𝑋) = (((1−𝑥 )+0.1) − 10) × 1.1 𝐹(0)~0 ; 𝐹(1) = 99 Now the function is complete, and it is simple to implement it in a PLC since there is only +, -, / and x. The only problem is that PLC can not make decimals, and something like 10/9 will be 0! So, to avoid those problems, any calculation has to be corrected not to have decimals, or insignificant one. The result of those modifications is: 10𝟎𝟎𝟎𝟎 )−10𝟎𝟎)×𝟏𝟏] 𝑃𝑜𝑠𝑖𝑡𝑖𝑜𝑛 ×𝟏𝟎𝟎 (1𝟎𝟎− )+𝟏𝟎 𝐴𝑐𝑐𝑒𝑙𝑒𝑟𝑎𝑡𝑖𝑜𝑛 𝑇𝑖𝑚𝑒 [(( 𝐹 (𝑋) = 𝟏𝟎𝟎𝟎 STANDARDISATION Actually, all the offset tracking done can be automated for any x in x/10. So the calculation can be implemented in the PLC, and the operator could choose the profile he wants. Actually what we have is: 𝐹 (𝑋) = (( 𝐵= 𝐴 100 ) − 𝐶) × (1 − 𝑥 ) + 𝐵 𝐷 1 𝐴 ;𝐶 = ; 𝐶 = 𝐴2 − 𝐵 𝐴 1+𝐵 This calculation has been introduced in the PLC, minding the conditions described before, and an interface has been developed to visualize the evolution. Last step was to change the increment mode of the position. 46 Nicolas JULIEN School of Electrical Engineering Systems TESTS To test this routine, I needed my HMI to control the PLC of the huge system project. But this was in Adapt Engineering, and I had to find another way to test it. I used a labs practice system, using PLC FX2N that has not the positioning functions of the FX3U. So I took a memory to be my position has D8340. When processing on the real system, the position would have changed with the speed. The more the speed is high, and the more the position change. But the more the position rise, the more the speed rise, and this is a cycle which rise more and more! So a linear test was not close to the reality. A simple modification solved the problem: instead of increasing the position of 200 steps each 100ms, I added 10% of the speed, every 100ms. It is easier to understand with a 1s operation; the speed, is actually the frequency of the pulses. Si if the speed is 2000Hz, every second, the position increase by 2000 steps. To have something closer to the reality I chose a 0.1s operation. But this is still a system. The real one will be continuous. Position Address Acceleration Limit Speed Profile coefficient Minimum speed Maximum Speed Figure 38: HMI figure with speed and position A minimum speed has been introduced since at position 0, the speed is 0 and so the system is blocked ! 47 Nicolas JULIEN School of Electrical Engineering Systems FINAL PRESENTATION: WEEK 11 On the 11th week, I made a second presentation to adapt engineering. This presentation was a complement of the first one, according to their demand. So I explained the problem we got with the M8029 bit again, to be sure that every thing was understood. I also presented E-Designer program and all the possibilities of the HMIs, and a training course about the gearing. To practice, we used a concrete system: my slide was back to the DIT, but they mounted a rotary system used position a frame, or tool. It was really interesting since the gearing was not in millimeters, but in degree, and we were working on a totally new system for everybody. Gearing investigations were well done, and HMI and PLC programs were realized in the afternoon to control the angle of the rotary plate. Every seemed to appreciate this practice exercise. Spinning part Input axis connected to the motor Fixed part with graduations Figure 39: Rotary plate used in the training REPORT: WEEK 11&12 The last two weeks were dedicated to the report writing. A lot of documents were produced during the project, and this way, I only needed two weeks to finish it. All you read until here was written before this line, and all that follows is not clearly defined for the moment, but I hope it will be interesting! The report writing took a lot of time, and it was important to start it early. I’m glad to have prepare all my pictures before. 48 Nicolas JULIEN School of Electrical Engineering Systems SCHEME OF THE CHRONOLOGICAL SEQUENCE OF EVENT Figure 40: Chronological sequence of events 49 Nicolas JULIEN School of Electrical Engineering Systems TEACHING SYNTHESES The two presentations I made in Adapt Engineering needed a lot of preparation. It was the first time for me that I was teaching, and I was not teaching to anybody, I was teaching engineers older than me, and I was teaching Jaye Renehan which is, to me, a really good programmer. So I was a bit in stress to the idea of such a class. FIRST PRESENTATION The first presentation was about basics in Servo Control. I made a complete presentation of what I learned during 10 weeks, and that was an easy part since I was like them a little time before. So I remembered which points were difficult for me to understand, and I prepared the most visual presentation as possible. This morning of theory passed really fast and every one seemed to understand what I said: what a surprise! I answered few question, my audience was really dynamic, asking questions when I was not clear, and everything went well since any interrogation was interesting. I also prepared a practice exercise that I had not tried to solve before. The afternoon was dedicated to this exercise. I told them to do it in ladder programming because they were beginner in PLC programming. Jaye, who is not a beginner for a long time, finished his really fast, and solved a problem a got in DIT! I really impressed, and proud of my student! Others spent all he afternoon, and we got serious problems with a bit M8029. We tried to solve and understand it all together without success. But this failure was a really good practice time, and we got closer. After a long day, and some problems, I thought that I had a good audience, really skilled, and that I could make a better practicing the next time. Everyone seemed to appreciate this day, except Colon, who was encountering more difficulties than others: what’s more normal, two other guy are from the IT generation. SECOND PRESENTATION As they asked me, the second presentation was centered on HMI programming. After a short introduction about the last time problems, we spent a morning discovering E-Designer Software, and theory about gearing. As usual, the afternoon was dedicated to the practice, and a new rotary device was experimented instead of the usual slide. HMI interface involve PLC programming, and this exercise was really complete since we worked with the Servo the Motor (gearing), the PLC and the HMI. A small application, a bit harder than the previous was executed quit fast by everybody. Except Jaye who made extra work of course! William was really involved is this class, and asked a lot of questions. And I finished with Paul, on a high level HMI interface design, which was using most complicated HMI visual effect, and involved PLC calculation too. It was an occasion to talk about 50 Nicolas JULIEN School of Electrical Engineering Systems problems with divisions in a PLC. As usual, I discovered new things with Jaye, especially about DIV operation in PLCs. TEACHING CONCLUSION Those two days were really gratifying since I felt that my audience appreciated my class. They were really focused, and all their questions and interrogations were a real motor for the discussion. Moreover, all practicing exercises were made by themselves, function of the type of job they wanted to do. For my first teaching, I think I had the best students I could have: interested, focuses, hard workers, and skilled. But over the professional aspect, I went closer from those guys, and it was almost a pain to let them. From an experience point of view, this class was an excellent exercise for me, since I hope to work later, in a domain were I will meet people. Teaching is a great experience, and even if schools are not my likes, a professional demonstrator could be an interesting way. Has Ryan Ford is doing in a sense. What was important was not really me, but especially Adapt Engineering Employees. David Berber made an assessment form to get a feedback from them, and let us know what could be improved, and where the demonstration should have been brought. A really good feeling came back, and they really appreciate my presentation, and thought that I transmitted them a really good knowledge, useful for their future projects. All assessment forms, from Jaye, William and Paul are in the appendix. This partnership went so well, that I was working for them as a web designer few weeks after, and Jaye offered me a job in his company! I had to refuse since I still have a studying year in France before my diploma! 51 Nicolas JULIEN School of Electrical Engineering Systems PROJECT REFLEXION This project was a good experience of what an engineer job is. Indeed, last year, in France, I had a project too, but it was all the year long, in parallel with class, and only one day per week. Here I was working as in my job, and I had to plan my work efficiently to realize my project on time. WHAT I LEARNT I realize with this project, that an automation engineer project does not deal exclusively with automation. Indeed, the first part of my project was about wiring two devices with inverse electronic logic. I had never heard about Sink and Source before, NPN and PNP transistors were far away in my memory, and more than everything, I hated electronic. I was close to give up, but David Berber told me that is was part of the job to do things we do not like, and to learn news things we don’t want to hear about, because an engineer has to adapt himself to any situations. Then, every thing went well since it was automation programming, and I like it! But I spent 10 weeks on my programs, and each day I was making it better, with time to time, a huge change. What I understood about this, and from Adapt Engineering people, is that a project is never finished, and that it is always possible to improve it. The only thing that stops the project evolution is the dead line. And a project is never really finished when released. In a more common point of view, I learnt a lot about Servo Control, and that is not a surprise! But it is important because I really liked this part of automation, and it comforted me in my studying way, since I have a fifth year to accomplish in France, and one of the options is automation, that I’m sure to choose now. PROBLEMS I did not encounter so many problems during this project, except wiring at the beginning. I tried to solve this by myself, but it was time consuming and exhaustive. When this kind of problem happen, it is always possible to receive help from a qualified person. And it is really important for an engineer to be in contact with professionals in close domains, and in his own domain to exchange tips and information. It is this way I discovered PLC functions with Steven, or changed approaches with Ryan. My project was quite different from other project, and with no real objective to reach, the problems were becoming interesting points for my presentation, because of their complexity. The famous M8029 bit was one of those critical points. I spent a lot of time in Adapt trying to solve it, and maybe killing my reputation because of 52 Nicolas JULIEN School of Electrical Engineering Systems this failure. But by finding the solution, I put an accent on this particular case, that a normal presentation would have made them missing the complexity of this bit. AFTER WORK REFLEXION Now that the deadline arrived, and as a told previously, I still have some modification and regrets about the project. Would like to spend more time on the function, to realize more complicated applications! What I really regret is not to spend more time in Adapt Engineering. I think that the two days I realized were to shorts, and 2 or 3 extra classes would have been better for the understanding. I think about homing routines and implementations of the limits that we didn’t get the time to study, and that William and Paul noticed in their assessments. Everything I done was well done I think, and because of the nature of the project, the constant evolution of my programming style was obvious. What I would d better could be the wiring, that I didn’t realized the better I could, since I was becoming crazy about it, and then, time was missing. If I had 4 weeks more, I would realize a more professional execution of the manufacturing, on a more complex and complete application, to evaluate the real potential of the system. CRITICAL ASSESSMENT The demonstration application I realized was quite sufficient I think to make the demonstration to Adapt Engineering. The programs I developed on the PLC and on the HMI was giving a really good idea of the possibilities, and was flexible enough to be used as practice stuff. I’m proud of this demonstration kit, even if the manufacturing could be better. About the teaching in Adapt Engineering, I’m glad about what I did, and the moments I spent with those guys. I’m really happy about those teaching days, and the feedback was really good. It seems that my presentation gave them an important knowledge in the domain, that they will use in the future to Adapt Engineering, and improve their future machines. Moreover, after this partnership, I stayed close to the company as web master for their new website (personal hobby), and I had a proposition for a job in the company, what let me think that they really appreciate my demonstration. 53 Nicolas JULIEN School of Electrical Engineering Systems DESIGN FILE Adapt PLc and HMI code evolution........................................................................ Error! Bookmark not defined. Rational PLC and HMI programs ............................................................................ Error! Bookmark not defined. Big motor PLC and HMI program ........................................................................... Error! Bookmark not defined. Adapt praticing files ............................................................................................... Error! Bookmark not defined. 54 Nicolas JULIEN School of Electrical Engineering Systems ADAPT PLC AND HMI CODE EVOLUTION VERSION I Figure 41: Initializations 55 Nicolas JULIEN School of Electrical Engineering Systems Security bit Servo on command without security Servo on command without security Relative move using DRVI: OK Direction commanded independently: BAD Checking all moves needing backward command : Relative backward Jog (hold jog) backward Homing (backward moving) Forced jog for debug Absolute move with backward detected Figure 42: Security, Relative moves and direction 56 Nicolas JULIEN School of Electrical Engineering Systems Detecting JOG- comand, and hold system Jog command using DRVI : BAD Bit for the HMI : could be better Homing start Homing moves functions of the state in the Graphset : same speed for all Figure 43: Jog move and homing implementation 57 Nicolas JULIEN School of Electrical Engineering Systems VERSION II Better security Better security If not ready, Servo on reseted Serv on on only when ready : no alarms Direction still indpendent : BAD Memory of the last move direction, necessary for the first version of postion memory Figure 44: Second version 58 Nicolas JULIEN School of Electrical Engineering Systems Different displacment and speeds for each step Unique DRVI using D1000 D2000 ; I’m only moving displacment buffers D1000 and (displacment) speed and in D2000 (speed): BAD Detection of a move 59 Nicolas JULIEN School of Electrical Engineering Systems Calculation of the distance for absolute move : BAD Backward move calculation Buffers asgnation Signal for a move This part of the program calculates the displacement for absolute moves. Actually, a function does it in the PLC, but at this moment I didn’t know that. 60 Nicolas JULIEN School of Electrical Engineering Systems This part of the program was calculating the position, using D8340. But since I was not using correctly the PLC’s function (backward commanded by the program), D8340 was only increasing, and was not usable for this application. Here, at each moment, this program calculate the current position. Capture current position incrementer Calculate difference with previous value If forward move : add If backward move : substract Compare difference to 0 Then move current it in last postion memory If position finished and differnce =0, then reset all moves I had a lot of problems with this way of doing things, but I succeeded. The next version of the program will integrate a correct use of the PLC functions (introducing negative displacement to decrease the PLC position counter D8340), no more independent command of the direction. 61 Nicolas JULIEN School of Electrical Engineering Systems Finally, at the end of the program, a simple DRVI function was performing all the work. Indeed, in the first version, there was a lot if DRVI functions everywhere and some of them were entering in conflicts. Si I decided to put only one, with common buffers to put the value of the displacement and speed into. Global security Security by pass for homing and debug All move signals This way of implementing the program was solving a lot of problems at this moment. It could be a solution to program everything, but a better use of the security provided by the PLC, that I did not used until here, will allow a clearer code. 62 Nicolas JULIEN School of Electrical Engineering Systems VERSION III Inverting the displacment : good Still using a unique DRVI function Inverting the displacment : good This version integrates negative displacement, which allows a better use of D8340 since now, it is directly the current position. The calculation is still done by the PLC for absolute moves but the final version will integrate security and correct use of the functions. 63 Nicolas JULIEN School of Electrical Engineering Systems VERSION IV Just before the first Adapt presentation, I discovered a lot of things about the PLC FX 3U pulses generation: security and correct use of the function. Here is the final clear code, corresponding to Mitsubishi standard recommended in the FX3U manual. It was hidden in the 900 pages of this HUGE manual! Power on Reset Speed and Position used by HMI Power on, or back from servo off Reset all graphcet steps Reset all memories Set first step of the graphcet Reset the status display memory Reset the current address memory of the PLC Reset the stopping bit of the DVIT function Configure DVIT function DVIT configuration option Figure 45: Final Program initialization 64 Nicolas JULIEN School of Electrical Engineering Systems Checks limits on the slide Check alarms: E-stop and Servo Check if all is OK to be ready If ready, Servo ON bit is turned ON Bit for HMI display Turning on the SERVO ON output Figure 46: Complete security checking 65 Nicolas JULIEN School of Electrical Engineering Systems Start signal No other function running check Auto Run Stopping Function finished Servo move finished Function failed Inverting displacment Figure 47: Relative move Forward command : M10 Displacment : D100 Backward command : M11 Speed : D200 Figure 48: Relative move page 66 Nicolas JULIEN School of Electrical Engineering Systems Same security structure than before Use of DPLSV for JOG move Figure 49: Jog programming using DPLSV Jog backward: M21 Jog forward: M20 Speed : D200 Figure 50: JOG moves HMI page 67 Nicolas JULIEN School of Electrical Engineering Systems Figure 51: Absolute move program using DRVA function Here we can notice that it is the only line necessary to program an absolute move. The use of DRVA and the correct use of all other functions to get a correct current position in the PLC (D8340) is a real progress. We don’t need any calculation no more! Start button : M50 Current address: D8340 Speed : D200 Address: D500 Figure 52: Absolute move HMI page 68 Nicolas JULIEN School of Electrical Engineering Systems Figure 53: new functions implementation This is a real simple implementation of the two functions I discovered before the Adapt Presentation. I wanted to test before talking about them. A really simple HMI device was developed too. Start button: M66 Stop PLC memory Run button: M67 Pulses : D666 Speed : D668 Speed : D200 Figure 54: PLSV and DVIT HMI pages 69 Nicolas JULIEN School of Electrical Engineering Systems Figure 55: Piano code This is the code to command the Piano application. Actually I used a DPLSV function which allows the operator to change the frequency of the pulse generation even if the function is running. So, a DPLSV function was launched using the memory D668 has frequency speed, and the buttons of the touch screen were changing the value of the speed. (M1000 for a Do). On button: M68 Frequency DO : M1000 RE : M1002 Figure 56: Piano HMI page 70 Nicolas JULIEN School of Electrical Engineering Systems RATIONAL PLC AND HMI PROGRAMS Rational project had not specific PLC program, since they needed only absolute positioning. Only an HMI program was dedicated to the initialization, and a small piece of code of the PLC was commanding the display. Control Start button appearing JOG tool appearing Figure 57: Rational interface program Actually the D9 memory is used by the HMI to display the good message. This was incremented on each push on “Start” or “Next” button. Function of this variable, some objects were appearing. M72 Object : jog tool Display M71 Figure 58: HMI interface 71 Nicolas JULIEN School of Electrical Engineering Systems BIG MOTOR PLC AND HMI PROGRAM Figure 59: Calculation to get the percentage of the final speed function of the position Figure 60: Big motor HMI screen 72 Nicolas JULIEN School of Electrical Engineering Systems Figure 61: Calculation to get the parameters of the correction parameters function of the A of A/x 73 Nicolas JULIEN School of Electrical Engineering Systems ADAPT PRATICING FILES Figure 62: Second presentation in adapt: practicing HMI 74 Nicolas JULIEN School of Electrical Engineering Systems APPENDIX Servo Motor Project Log ........................................................................................ Error! Bookmark not defined. Adapt first presentation Power Point .................................................................... Error! Bookmark not defined. Adapt Second Presentation Power Point ............................................................... Error! Bookmark not defined. Assessments from adapt ........................................................................................ Error! Bookmark not defined. 75 Nicolas JULIEN School of Electrical Engineering Systems SERVO MOTOR PROJECT LOG Week 1 Monday 4th February: • Morning - Reading manuals • Afternoon - Discovering the project with D. B. Discovering hardware Software’s setup Listing of component to be ordered Tuesday 5th February: • Morning - Wiring Power Supply Running motor using servo controller • Afternoon - Wiring PLC as source Testing fallen unit with Rémi Testing PLC FX3U inputs and outputs Reading MR-C Manuals Wednesday 6th February: • Morning Wiring CN1 connector Reading MR-C manuals Playing with PLC • Afternoon - Soldering and Wiring Emailing Mitsubishi for connection PLC Servo 76 Nicolas JULIEN School of Electrical Engineering Systems Thursday 7th February: • Morning Trying controlling Servo via PLC without success Output always on ??? • Afternoon Trying getting inputs from Servo No success Friday 8th February: • Morning 0), and Wiring again : succeed to control servo via PLC : because of PNP NPN incompatibility, connect servo pin (ex: SON) on V0+ (com connect 0V on Y0 (inverse as usual) so we can use only one output for each COM (FX3U 48M = 5 outputs) • Afternoon Wiring inputs : succeed to get servo outputs (ex: ALM) Sink : no problem (V+= 0v / ALM=X0) Source : possible (V+ = X0 / ALM=24v) but we can use only one input Need more investigations to confirm this way of functioning 77 Nicolas JULIEN School of Electrical Engineering Systems Week 2 Monday 11 February: • Morning - Wiring all from the beginning • Afternoon - RUNNING THE MOTOR ! ! ! Doing a routine in SFC Tuesday 12 February: • Morning - Killing my laptop • Afternoon - Recovering my laptop (thanks Lord) Soldering a specific serial cable for HMI Control SON and motor through the HMI (basic HMI program) Wednesday 13 February: (going in France) • Plane, Train, Bus o o o o Designing HMI bocks and PLC programs for : Manual relative displacement Manual absolute displacement Jog Homing Thursday 14 February: (coming back in Ireland) • Plane, Train, Bus - Writing preliminary report summary • Afternoon - Meeting a Mitsubishi electrical engineer helping for wire problems Implementing relative displacement in PLC and HMI 78 Nicolas JULIEN School of Electrical Engineering Systems Friday 15 February: • Morning - Writing log of the week Begin writing preliminary report • Afternoon - Implementation of new HMI functions : jog, home search Checking materials for : boarding system/protecting resistors Week 3 Monday 18 February: • Morning Try converting 0 logic to positive logic using resistor, following Mitsubishi’s advises : no success • Afternoon Implementing low speed rotation to experiment jerking problem : solving problem for Adapt Engineering Start the board for the system. Tuesday 19 February: • Morning - Finishing the board + frame Testing more resistors to convert outputs logic : no success • Afternoon Attaching motor to the board Installing GX Developer and E-Designer on my laptop : problems to use the USB to Serial interface Wednesday 20 February: Ill Reading MRJ3A manual 79 Nicolas JULIEN School of Electrical Engineering Systems Thursday 21 February: • Morning - Reading MRJ3A manual Debugging system (backward blocked in “manual” bloc on HMI. Preparing Friday’s visit: test scope. • Afternoon - Thanks to Ryan! Inputs are working (except ALM which is dead …) Week 4 • Planned - Finishing wiring (yes!) Introduce interrupters to simulate dog and limits Create new program to use inputs : o Zero positioning o Positioning finished Set the slide (if received) Take a look to FX3U documentation to find more precisions about pulse generator (find the counter of current pulsations sent) Monday 25th February: (low work day) • Day - Finishing wiring of inputs on the PLC (soldering, connecting) Programming a “zero return” function Testing pulse lost : o NO PULSES LOST! o Perfect zero return after 60 rotations: Small length of wire No load Use the “operation finished” to make a better relative positioning mode (one press to execute, do not require to keep the button pushed until accomplished) Thursday 26th February: (low work day) • Morning - Get the slide, and change the motor Wiring limits and dog Attaching the other slide 80 Nicolas JULIEN School of Electrical Engineering Systems • Afternoon o o o Programming : Absolute moves Errors Homing Thursday 26th February: (low work day) • Morning Redo the HMI interface : new design more clear, with standard toolbar on the top Direct link to ‘Debug’ and ‘Home’ pages when necessary to use it (Limit hit, or Homing not done) • Afternoon Programming current position still available : problem all afternoon long (thanks to M8340) Week 5 & 6 (data lost because of my hard drive lost) Meeting with Steven and conversation about the use of DDRVI ! Change all the positioning calculation control now DDRVI is used correctly Meeting with Ryan and conversation about using source output of the PLC with sink input of the servo really nice! Design the motor and the slide for Rationnal. HMI interface redesigned in mm instead of pulses. Introducing gearing: 1/100 from HMI PLC => 1mm = 100 IU 10/3 from PLC Servo => 3 pulses PLC = 10 step Servo Motor 12 mm = 1 rotation = 4000 pulses 1 pulse = 0,003 mm 1 mm = 333 pulses Designing a routine to make the zero in the Rationnal Project 81 Nicolas JULIEN School of Electrical Engineering Systems Introducing an offset in homing operation Realise the wiring of Alarm and Emergency Stop Program Alarms in PLC and HMI Redesign the “Settings” page on the HMI Week 7 Monday 31st March • Afternoon - Just pass at DIT Tuesday 1st April • Morning - Setup the motor on the slide • Afternoon o Test measurement of the new program in mm: 1/10mm false on 400mm : possible to correct Wednesday 2nd April • Morning - Work at home on presentation for Adapt • Afternoon - Discover new device : Huge motor F700 inverter Make it move : need to remove the encoder card in the inverter to access the PU mode …??? o o Thursday 3rd April • Morning 82 Nicolas JULIEN School of Electrical Engineering Systems off) - Make the motor move in PU mode (need to take the positioning module A7AP Begin to wire everything, control by PLC • Afternoon Make the motor controlled by plc: need to allocate specific terminals LX, JOG and NP. Need STR STF Motor spasm? Try to fix it by configuring the inverter Ryan arrived to help, motor is to small fir the inverter, let’s try with a new bigger one ! Friday 4th April • Morning - Change the motor • Afternoon Finish to change the motor, try to find documentation about encoder without success Week 8 Monday 7th April • Afternoon - Try to modify parameters to solve the jerking problem of the motor Tuesday 8th April • Morning - Looking for an answer to the jerking problem of the motor Try to put a load (an other motor almost 5 kg) : quite better • Afternoon well ! - Find the manuals for the encoder, and reconfigure it (badly configured: work Try it with the load : excellent Wednesday 9th April • All day - Work on the presentation for adapt engineering 83 Nicolas JULIEN School of Electrical Engineering Systems Thursday 10th April • Morning - Work on the presentation • Afternoon - Make a plug to power the HMI on the two PLCs Friday 11th April • Morning - Work on the presentation • Afternoon - Make a HMI program to control the motor Saturday/SUnday Presentation Week 9 Monday 14th April • Morning - Arrive from France • Afternoon - Use Mitsubishi standard to code the PLC and use new functions Debug Tuesday 15th April • Home Day - Worked on presentation Worked on programs Wednesday 16th April • Morning 84 Nicolas JULIEN School of Electrical Engineering Systems - Test programs and debug :ok Make a new page to practice memories for adapt • Afternoon - Worked on presentation Thursday 17th April • Morning - Make the presentation in Adapt Engineering • Afternoon - Practice time in Adapt Engineering Some problem with M8029 : solved in the evening Friday 18th April • All day - Next presentation Try to create the S program Saturday 19th April • Morning - Try to operate the S program : ok but messy Week 10 Monday 21st April • Morning - Off • Afternoon better Realise calculation for the S acceleration program and test on FX2N : can be Tuesday 22nd April • Morning 85 Nicolas JULIEN School of Electrical Engineering Systems Finished programming S Program code it for FX3N and PLSV motor speed control • Afternoon - Get better programming by using only the second part of the curve Wednesday 23rd April nothing Thursday 24th April nothing Friday 25th April nothing Week 11 Monday 28th April Preparing Tuesday presentation Tuesday 29th April Presentation in Adapt Engineering Limited Wednesday 30th April Documents gathering Thursday 1st May Day off (working on Adapt web site) Friday 2nd May Starting report Saturday May Take advance for Monday 86 Nicolas JULIEN School of Electrical Engineering Systems Week 12 Monday 5th May Public day Tuesday 6th May Report writing Wednesday 7th May Report writing Thursday 8th May Report writing Friday 9th May Report writing 87 Nicolas JULIEN School of Electrical Engineering Systems ADAPT FIRST PRESENTATION POWER POINT 88 Nicolas JULIEN School of Electrical Engineering Systems ADAPT SECOND PRESENTATION POWER POINT 89 Nicolas JULIEN School of Electrical Engineering Systems ASSESSMENTS FROM ADAPT 90 Nicolas JULIEN