milldrone

MrPLC Member
  • Content count

    35
  • Joined

  • Last visited

Community Reputation

0 Neutral

About milldrone

  • Rank
    Sparky

Contact Methods

  • ICQ 0
  1. DL06 Newbie

    Are you opening the project from the DS launch window? I'm presuming you attached only the .prj file there should also be some other extensions like wsp., SCX. SCD., LDA., LCX., LCD. ect. If that fails, sometimes the project can be salvaged by clicking on file, export, program,. This will make a txt. file that can be opened with notepad and copied as text to email or this forum. Below is the text file I just copied from my revised post, if you copy it save it where you can find it, open a new project in Direct Soft click on file, import find the txt you just saved and direct soft will open it. PLC 06 // Rung 1 // Address 0 #BEGIN COMMENT "This is an example of stage programming. It's mentioned in the second volume of the user " "manual." "" "I have found that once you get used to programming in ""stages"" you will find it hard to " "use PLC's that do not have this feature." "" "After viewing your program I need to chastize you for not naming or describing all your " "elements. What follows is an brief example using descriptions" "" "" #END ISG S0 // Rung 2 // Address 2 STRND S7 OUT C7 // Rung 3 // Address 4 STR X21 STR X0 OR C6 ANDSTR ANDN C7 OUT C6 LCD K1 """SYSTEM RUNNING""" // Rung 4 // Address 20 #BEGIN COMMENT "The first thing I would suggest is swapping the condition of X21 in the field." "" "Note: I changed the state of X21 to the opposite state. It needs to be changed in the field " "from a normally open contact to a normally closed contact. The reason for this is is " "consider what would happen if the contact would not work in the field if the wire was cut, " "the button could be pushed but the PLC would not see any change of state." "" "The second thing to consider is that the E stop circuit should supply the voltage for the " "outputs external to the PLC." "" #END STRN X21 LCD K1 """OPERATOR SAFETY""" LCD K1 """E-STOP""" // Rung 5 // Address 38 STRPD C6 SET S1 // Rung 6 // Address 40 #BEGIN COMMENT "This rung resets all but the main stage." "" "Note: if more stages were added they would need to be added to the reset" #END STRN C6 RST S1 S7 // Rung 7 // Address 43 SG S1 // Rung 8 // Address 45 #BEGIN COMMENT "I'm presuming this output is a ""bistable control valve"" " "" "This means the once the output is energised and the spool shifts, it stays shifted in that " "position until the opposite coil is energised. " #END OUT Y0 // Rung 9 // Address 46 STR X13 JMP S3 // Rung 10 // Address 48 #BEGIN COMMENT "This stage starts the drill motor. In your application you may need to use a timer to wait for " "the motor to come up to speed before we go to the next stage (advance feed)." #END SG S3 // Rung 11 // Address 50 OUT Y2 TMR T2 K10 // Rung 12 // Address 54 STR T2 JMP S4 // Rung 13 // Address 56 #BEGIN COMMENT "This stage continues to run the drill motor and advances the feed, once the prox that " "determines the feed has advanced the full stroke is energised we jump to the next stage. " #END SG S4 // Rung 14 // Address 58 OUT Y2 OUT Y3 // Rung 15 // Address 60 STR X14 JMP S5 // Rung 16 // Address 62 #BEGIN COMMENT "This stage continues to run the drill motor, but the advance feed solenoid is not inside this " "stage so the feed will reverse untill the feed retracted prox is made. Once the feed " "retracted prox is made we go to the next stage." #END SG S5 // Rung 17 // Address 64 OUT Y2 // Rung 18 // Address 65 STR X15 JMP S6 // Rung 19 // Address 67 #BEGIN COMMENT "In this stage we wait for the motor to stop. After the timer has timed out we go to the next " "stage" #END SG S6 // Rung 20 // Address 69 TMR T0 K50 // Rung 21 // Address 72 STR T0 JMP S7 // Rung 22 // Address 74 #BEGIN COMMENT "In this stage we unclamp the part and return to the main after the timer times out" #END SG S7 // Rung 23 // Address 76 OUT Y1 TMR T1 K5 // Rung 24 // Address 80 STR T1 JMP S0 // Rung 25 // Address 82 END // Rung 26 // Address 83 NOP #BEGIN ELEMENT_DOC "X0","","","start process" "X13","","","prox on clamp cylinder ""part clamped""" "X14","","","end of feed prox" "X15","","","feed retracted prox" "X21","",""," E stop" "Y0","","","clamp solenoid I'm presuming this is one is a two coil bistable control valve" "Y1","","","unclamp solenoid I'm presuming this is one is a two coil bistable control valve" "Y2","","","run drill motor" "Y3","","","advance feed solenoid" "C6","","","run process" "C7","","","end of process OS" "S0","_S0","","initial and main stage" "S1","","","clamp" "S3","","","run drill motor" "S4","","","advance feed" "S5","","","retract feed" "S6","","","motor stop time" "S7","","","unclamp" "T0","","","wait for motor to stop" "T1","","","wait for unclamp to function" "T2","","","drill motor accell timer" #END
  2. DL06 Newbie

    I made a few mistakes, here is a better version. automate reamer stages_2.zip
  3. DL06 Newbie

    Then after you have done the above and before you start writing code fill in the descriptors of your inputs and outputs. You may understand what you did when you wrote the code but six months from now if you need to revisit or make a change you will be glad you did. I have attached a example of how your code might be written in stage logic (RLL) automate reamer stages.zip
  4. DL05/06 programming questions

    Yes, your challenge is to find a suitable formula.
  5. DL05/06 programming questions

    JayH, I thought you might like to see how someone else might have written your program. I used a conventional timer instead of an accumulating timer. Also I discarded the counter you were using for alternation. I was able to use the least significant bit from the other counter accumulator to perform the alternation Copy the text below, save in notepad, open a new instance of Direct Soft (DL06), click on file, import, program. PLC 06 // Rung 1 // Address 0 #BEGIN COMMENT "http://forums.mrplc.com/index.php?showtopic=21813" "" "You could have used a regular timer or perhaps a TMRF instead of an accumulating timer " "by using a TMRF you can get finer resolution in your time periods" "" "This based on your use of X1 not as a reset" "" "I used a Vmem instead of a constant in this timer. You could use a Cmore or Direct Soft to " "change the timer preset." #END STR X1 ANDN T1 TMRF T1 V401 // Rung 2 // Address 4 #BEGIN COMMENT "By ""looking"" at the last bit of the accumulator word (B1001.0) we can determine if the " "count is even or odd. in this case we are looking for the even count." "" "As others mentioned Vmem registers can be used in place of the constants in the inline " "compares." "" "You might be able to use one timer and just change the values in the compares" "" "" #END STR TA1 V1500 ANDN Y1 ANDN CTA1 K10 AND B1001.0 OUT Y0 // Rung 3 // Address 12 STR TA1 V1501 ANDN CTA1 K10 OUT Y1 // Rung 4 // Address 17 #BEGIN COMMENT "By ""looking"" at the last bit of the accumulator word (B1001.0) we can determine if the " "count is even or odd. In this case we are looking for the odd count." #END STR TA1 V1502 ANDN CTA1 K10 ANDN B1001.0 OUT Y2 // Rung 5 // Address 24 #BEGIN COMMENT "This counter now does double duty. By ""looking"" at the last bit of the accumulator word " "(B1001.0) we can determine if the count is even or odd." "" "BTW The accumulator for CT1 in a DL06 is V1001. " "" "B1001.0 is the least significant bit in that Vmem register " #END STR Y1 STRN X1 CNT CT1 K10 // Rung 6 // Address 29 STRN Y0 ANDN Y1 ANDN Y2 AND X0 OUT Y3 // Rung 7 // Address 34 #BEGIN COMMENT "Because I used text to ""deliver"" this program I'm including this rung to put a value in " "V401, V1500, V1501, V1502. In your program you would not use this rung because the " "numbers wold be entered by a CMORE " "" "You may also notice that the numbers are times 10 of those in your program This is " "because I used a TMRF timer that has 10 times the resolution" #END STR SP1 LD K25 OUT V401 LD K10 OUT V1500 LD K100 OUT V1501 LD K120 OUT V1502 // Rung 8 // Address 43 END // Rung 9 // Address 44 NOP #BEGIN ELEMENT_DOC "X0","Transport Sensor","Blue Wire 18ga.","Sensor" "X1","On Switch","Green Wire 18ga.","Switch" "Y0","Heat Station","Green Wire 18ga.","Solenoid" "Y1","Form Die","Green Wire 18ga.","Solenoid" "Y2","Form Air","Yellow Wire 18ga","Solenoid" "Y3","Transport","Red Wire 18ga.","Solenoid" "T1","Sequencing timer","","Timer that controls when Y0, Y1, and Y2 actuate" "CT1","Cycle count","","Advances by 1 every time the forming die actuates (Y1)" "TA1","Y0 Timer","","starts cycle and sets time between Y0, Y1, Y2" "V401","Preset is V401","","" "CTA1","Machine Count","","Y0, Y1, Y2 cycles as long as the amount of times the form die actuates is less then 10 (or whatever the cycle count is)" "V1500","compare is V1500","","" "V1501","compare is v1501","","" "V1502","compare is v1502","","" "B1001.0","","","Bit 0 of the machine counter accumulator (when count is odd this bit is on)" #END
  6. film sensor

    Does this mean you are trying to detect stretch film on top of an opaque surface, for the entire height of the pallet? Can you control the color of the stretch film and the background? Or are the wrapped pallets coming from outside vendors?
  7. DL06 Analog Problem

    I do not know if I can help or not but I'm having trouble opening up your text in Direct Soft. Did you go to file, export, program, to get this monic listing?
  8. Simple problem but driving me nuts!

    Beuwolf_1, This is my attempt (it's never as clean as Bernie's). If you need two separate events you will need to expand on this. PLC 06 // Rung 1 // Address 0 #BEGIN COMMENT "What I'm tring to do is make a value in a Dword that corresponds to the day hour and " "minute in the PLC RTC" #END STR SP1 LD V7770 MUL K100 ADD V7767 OUT V2000 LD V7771 OUT V2001 // Rung 2 // Address 7 #BEGIN COMMENT "What I'm tring to do is make a value in a Dword that corresponds to the day hour and " "minute for the desired turn on time from the HMI " #END STR SP1 LD V5000 MUL K100 ADD V5001 OUT V2002 LD V5002 OUT V2003 // Rung 3 // Address 14 #BEGIN COMMENT "What I'm tring to do is make a value in a Dword that corresponds to the day hour and " "minute from the desired turn off time in the HMI" #END STR SP1 LD V5003 MUL K100 ADD V5004 OUT V2004 LD V5005 OUT V2005 // Rung 4 // Address 21 STR SP1 LDD V2000 CMPD V2002 AND SP62 OUT C0 // Rung 5 // Address 26 STR SP1 LDD V2000 CMPD V2004 AND SP60 OUT C1 // Rung 6 // Address 31 STR SP1 LDD V2002 CMPD V2004 AND SP62 OUT C2 // Rung 7 // Address 36 STR C0 AND C1 ANDN C2 OUT C3 // Rung 8 // Address 40 STR C0 ANDN C1 AND C2 OUT C4 // Rung 9 // Address 44 STR C3 OR C4 OUT Y0 // Rung 10 // Address 47 END // Rung 11 // Address 48 NOP #BEGIN ELEMENT_DOC "Y0","","","output" "C0","","","turn on bit" "C1","","","turn off bit" "C2","","","turn off day of week is lower than turn on day of week" "C3","","","output needs to be on and values are not inverted" "C4","","","turn off day of week is lower than turn on day of week and output needs to be on" "V2000","","","hours and minutes RTC When used as a dword contains day of week hours and minutes" "V2001","","","day of week RTC" "V2002","","","hours and minutes HMI When used as a dword contains day of week hours and minutes ON" "V2003","","","day of week HMI ON" "V2004","","","hours and minutes HMI When used as a dword contains day of week hours and minutes OFF" "V2005","","","day of week HMI OFF" "V5000","","","contains the hours of the HMI turn on clock time (0-23)" "V5001","","","contains the minutes on the HMI turn on clock time (0-59)" "V5002","","","Contains the day of the week HMI turn on clock time(Mon., Tues., Wed., etc.)" "V5003","","","contains the hours of the HMI turn off clock time (0-23)" "V5004","","","contains the minutes on the HMI turn off clock time (0-59)" "V5005","","","Contains the day of the week HMI turn off clock time(Mon., Tues., Wed., etc.)" "V7767","_V7767","Sys","contains the minutes on the clock (0-59)" "V7770","_V7770","Sys","contains the hours of the clock (0-23)" "V7771","_V7771","Sys","Contains the day of the week (Mon., Tues., Wed., etc.)" "SP60","","","on when the value in the accumulator is less than the instruction value" "SP61","","","on when the value in the accumulator equals the instruction value" "SP62","","","on when the value in the accumulator is greater than the instruction value" #END
  9. pwm question using dl05 mode 10

    I cannot help in the PWM area. But there are other issues you will face. If I'm reading the specs right on the smt160. The voltage output is only 5 volts. The onboard HS inputs on the DL05 require 10 volts to operate (12 volts if you want it to be reliable).You will need some sort of voltage converter that will faithfully mimic the PWM input. At first glance the 4Khz output of the chip would be in range of the 5Khz limit of the HS inputs. But the 5Khz limit is measured with a 50% duty cycle. Obviously the chip changes the duty cycle to something else. I would suspect that around 30% duty cycle and 4Khz the inputs would not be fast enough.
  10. How to enable Overides?

    Is the override editor what you are wanting?
  11. Ergonomic Switches

    Tim, perhaps something like this. http://www.cyber-tech.net/index.cfm?fuseac...ls&subID=44 This brand has been rugged enough for the forest industry.
  12. Automation Direct

    I believe there is another set of factors that skews the lack of AD activity at Mr PLC.com. 1. Automation Direct has their own customer forums. The AD forums are advertised at the same place that you purchase the hardware. Thus it's many users that have problems first stop. There is an old saying " I found it in the last place I looked". Which means when you find what you are looking for, you stop looking. Many questions are answered there, so they stop looking. 2. Target market strategy, I believe AD is aimed at the low $ end of the market. This tends to leave things like redundant control, hot standby, motion control, profibus, and all the really complicated things that generate lots of questions. This means that you have a very basic controller without any very fancy options. I believe it's those fancy options that make documentation and manuals difficult. Because they have not had to spend a large effort on those fancy options, they have spent their time on making things intuitive and easy to understand. 3. Bernie mentioned stage programming. When stage programming fits the application, it's intuitive and it just works! Most of the subroutine "gotchas" are not an issue. So, few "gotchas" = few problems = few questions. BTW I have a hard time understanding why other PLC makes have not adopted this concept.
  13. DL06 LCD Display

    I do not know about proving you wrong, but if you have some spare inputs you can do this. PLC 06 // Rung 1 // Address 0 STRPD X100 STR CT0 CNT CT0 K4 // Rung 2 // Address 5 STRE CTA0 K0 LCD K1 """Slow down timer""" LCD K2 """Time .1 sec "" V400:B" ANDPD X107 ANDN V400 K500 INC V400 // Rung 3 // Address 36 STRE CTA0 K0 ANDPD X106 AND V400 K1 DEC V400 // Rung 4 // Address 43 STRE CTA0 K1 LCD K1 """Warm up time""" LCD K2 """Time .1sec "" V401:B" ANDPD X107 ANDN V401 K9999 INC V401 // Rung 5 // Address 71 STRE CTA0 K1 ANDPD X106 AND V401 K1 DEC V401 // Rung 6 // Address 78 STRE CTA0 K2 LCD K1 """units to run""" LCD K2 """Number "" V402:B" ANDPD X107 ANDN V402 K9999 INC V402 // Rung 7 // Address 104 STRE CTA0 K2 ANDPD X106 AND V402 K1 DEC V402 // Rung 8 // Address 111 STRE CTA0 K3 LCD K1 """Seal timer""" LCD K2 """Time .1 sec "" V403:B" ANDPD X107 ANDN V403 K500 INC V403 // Rung 9 // Address 139 STRE CTA0 K3 ANDPD X106 AND V403 K1 DEC V403 // Rung 10 // Address 146 END // Rung 11 // Address 147 NOP // Rung 12 // Address 148 NOP #BEGIN ELEMENT_DOC "X0","","","E-Stop #1" "X1","","","E-Stop #2" "X2","","","Conveyor VFD Fault" "X3","","","Product Jam Fault" "X4","","","Downstream Equipment Stopped" "X5","","","Low Product Level on Infeed" "X6","","","Auto Run" "X7","","","Reset PB" "X100","","","display (increments display)" "X106","","","dec" "X107","","","inc" "C0","","","Blocker Bit" "C1","","","E-Stop Condition Bit" "C2","","","Product Jam Condition Bit" "CT0","CT0","","display counter" "V400","_v400","","slowdown timer preset" "V401","_v401","","warmup timer preset" "V402","_v402","","product counter preset" "V403","_v403","","seal timer preset" "CTA0","_CTA0","","display counter accumulator" #END
  14. 480VAC SINGLE Phase Motor

    TW, This is just for general info use (not for your project). Single phase 480 volt motors are common in the HVAC industry. The problem though is that they are all stud mount (no base) and wierd shaft configurations (5/8 shaft with a flat insted of a keyway). They use these for condenser fans on 480volt three phase refrigeration systems. I have no idea why they use a single phse motor for the fan.
  15. Programming help

    Here is an example stage program with it's equivalent in std ladder below the end statement. PLC 250-1 // Rung 1 // Address 0 ISG S0 // Rung 2 // Address 2 #BEGIN COMMENT "http://www.plctalk.net/qanda/showthread.php?t=46161" "" "It consists of four tanks." "Tank1 supplies tank3 only when tank3 is below a set level controlled by a trim pot. This is " "the first problem using greater than or equal to logic, which was explained in less than two " "minutes and I still do not understand how this works or even more importantly how to use " "and control this." "When tank 1 has filled tank 3 to a set level controlled by a trim pot level sensor it turns off " "valve 1 and opens valve 2 on tank 2. This continues to fill tank 3 to another set level on " "a different trim pot." "When tank three has reached its set level valve 2 closes and sets off a mixer for a set " "time. Once the mixer unit has completed its set time it stops and valve 3 opens for 10 " "minutes allowing tank 3 to empty. Then the process stops and awaits the start of the next " "cycle." #END STR X100 AND X101 JMP S1 // Rung 3 // Address 5 SG S1 // Rung 4 // Address 7 #BEGIN COMMENT "When you use stages no permissives other than the stage itself are needed. And the item " "turns off when you exit the stage. If this tem were needed in another part of the process it " "could be used in that stage. multiple outs when using stages are not an issue." #END STR X101 OUT Y0 // Rung 5 // Address 9 STR V2001 V2000 AND X101 JMP S2 // Rung 6 // Address 13 SG S2 // Rung 7 // Address 15 STR X101 OUT Y1 // Rung 8 // Address 17 STR V2002 V2001 AND X101 JMP S3 // Rung 9 // Address 21 SG S3 // Rung 10 // Address 23 STR X101 TMR T0 V400 OUT Y3 // Rung 11 // Address 27 STR T0 JMP S4 // Rung 12 // Address 29 SG S4 // Rung 13 // Address 31 STR X101 OUT Y2 // Rung 14 // Address 33 STRE V2001 K0 JMP S0 // Rung 15 // Address 36 END // Rung 16 // Address 37 #BEGIN COMMENT "http://www.plctalk.net/qanda/showthread.php?t=46161" "" "It consists of four tanks." "Tank1 supplies tank3 only when tank3 is below a set level controlled by a trim pot. This is " "the first problem using greater than or equal to logic, which was explained in less than two " "minutes and I still do not understand how this works or even more importantly how to use " "and control this." "When tank 1 has filled tank 3 to a set level controlled by a trim pot level sensor it turns off " "valve 1 and opens valve 2 on tank 2. This continues to fill tank 3 to another set level on " "a different trim pot." "When tank three has reached its set level valve 2 closes and sets off a mixer for a set " "time. Once the mixer unit has completed its set time it stops and valve 3 opens for 10 " "minutes allowing tank 3 to empty. Then the process stops and awaits the start of the next " "cycle." #END STR X100 STR C0 ANDN C1 ORSTR OUT C0 // Rung 17 // Address 42 STRPD C0 OR X102 OR C2 AND X101 OUT C2 // Rung 18 // Address 47 STRPD C0 STR C3 AND C0 ORSTR AND V2000 V2001 OUT C3 // Rung 19 // Address 54 STR C3 AND C2 OUT Y0 // Rung 20 // Address 57 STRND C3 OR C4 AND C0 AND V2002 V2001 OUT C4 // Rung 21 // Address 63 STR C4 AND C2 OUT Y1 // Rung 22 // Address 66 STRND C4 OR C5 AND C0 ANDN T0 OUT C5 // Rung 23 // Address 71 STR Y3 STR T0 AND C1 TMRA T0 V400 // Rung 24 // Address 76 STR C5 AND C2 OUT Y3 // Rung 25 // Address 79 STR C0 ANDND C5 OR C6 ANDNE V2001 K0 OUT C6 // Rung 26 // Address 85 STR C6 AND C2 OUT Y2 // Rung 27 // Address 88 STR C0 ANDND C6 PD C1 // Rung 28 // Address 91 END // Rung 29 // Address 92 NOP #BEGIN ELEMENT_DOC "X100","","","start process push button" "X101","","","stop process push button" "X102","","","continue process pushbutton" "Y0","","","valve 1 (it's on tank 1)" "Y1","","","valve 2 (it's on tank 2)" "Y2","","","valve 3 (it's on tank 3)" "Y3","","","mixer" "C0","","","start process SEALIN" "C1","","","process done" "C2","","","continue" "C3","","","fill tank 3 to correct level with some of tank 1's contents" "C4","","","fill tank 3 to correct level with some of tank 2's contents" "C5","","","mix bit" "C6","","","drain tank 3 bit" "S0","","","start " "S1","","","fill tank 3 to set level with tank 1's contents " "S2","","","fill tank 3 to set level with tank 2's contents" "S3","","","mix" "S4","","","drain tank 3" "T0","","","mix time" "V400","preset mix value","","" "V2000","","","set point to fill tank 3 with tank 1's contents" "V2001","","","tank 3's level" "V2002","","","set point to fill tank 3 with tank 2's contents" #END