Filthy McNasty

MrPLC Member
  • Content count

    77
  • Joined

  • Last visited

Posts posted by Filthy McNasty


  1. Bob,

     

    The company that I have been doing contract work in since 2011 adopted the policy to leave the keyswitch in the RUN position at all times unless online edits (or downloads) are to be performed. It's been in effect for about 2 years. I do remote support so I have to call the facility to have the operator/technician move the key to RemoteRun and then call them back when my work is finished.

    There is an Enterprise scanner (an -L83) that as one of it's responsibilities is to scan the network for all of the PACs (>250 of them) to report if the key is in any position other than RUN.

    When a PAC has had its mode changed, it is logged and if the key remains in a position other than RUN, that PAC is included in the next day's report which is then sent out to the manager of that location to advise them of the situation. 


  2. On ‎6‎/‎7‎/‎2019 at 1:26 PM, gabrielcembranel said:

    Boa tarde 

    Gostaria de saber tambem como coloco um script dentre de um macro pra deixar rodando todo tempo? O Script ja tenho pronto.

    Meu objectivo e deixar rodando este script toda hora por tras da tela para atulizar valores.
    Alguem pode me ajudar?
     

    Você pode usar um evento na FTView para alterar o valor de uma marca de memória IHM que está vinculada a uma entrada numérica em uma tela que está sempre em segundo plano (ela precisa permanecer carregada na memória). O evento _Change na entrada numérica seria usado para executar seu script.


  3. On ‎7‎/‎12‎/‎2019 at 3:10 PM, B'TO said:

    Hello, I have an oven, this oven has 3 divisions in the form of wheels which rotate. Each wheel is divided like a pie. Each piece of the pie will have an address assigned. Using a robot I will place a part in one of the spaces of the pie for a determined time, (not all spaces will be occupied at the same time) therefore I have to save that address so that when the timer of that particular part ends, the robot knows where to go and look for it again and then take it out of the oven. Each wheel will have around 6 spaces. These wheels will be moved by means of a servomotor and this will be programmed to go clockwise and counterclockwise for easy operation. Now, my question is this: What would be the most efficient method to assign and save the addresses so that when the timer count is over, the robot will know where to go and get that part from? I will be using a CompactLogix 5370 L2 Controller for this application.

    I am not new to this but I have not reached this level either.

    Thank you for any help you can give me. Thank you

     

     

    That sounds like a great exercise for a PLC/PAC Programming course.


  4. Go into the I/O Configuration section and map in the existing I/O module(s). Be sure to identify the exact Rack, Group, and Slot number that the

    module is using and be sure to use the correct Control (Usually an 'N' file or 'BT' file address) and Data (Usually an "N' file though some newer analog cards allowed 'F' (floating point) file addresses) in the configuration. Once that is done, the Setup Screen should be available. Remember to identify the Control/Address files for both BTW/BTR for analog input modules and at least the BTW for analog output modules.


  5. The conversion tool has always been a "ball park" tool. Typically, a programmer has to determine the difference in time that it would take to rewrite the code from scratch vs. using the tools and then mopping up dozens...hundreds..perhaps thousands of PCE errors and dealing with the new "aliased I/O" and incomplete (due to controller differences) MSG, BTR/BTW, ans unsupported instructions ie., . the PLC-5/SLC500 have an SCL instruction that is not part of the native Logix5000 language set.
     

    And has been previously mentioned, the conversion tool lacks the ability to leverage improved methods of doing things in the Logix5000 platform.


  6. As this logic is in a  SLC500, the I/O scan is synchronous. Ordinarily, the physical output would have to wait until the Program Scan is finished before

    the state of the output bit is transferred to the I/O module.
    In this case, the output is a bit is in the DeviceNet transfer block for the Mapped I/O scanlist.

    The data is still treated as physical I/O because it has to be transferred down the backplane to the DeviceNet Scanner in the chassis.
    The DeviceNet configuration in the scanner would dictate when its value is sent over the DeviceNet network.

    To the SLC500 controller, it is still seen (and treated) as physical I/O

    I agree with JJackson on the need to determine where N15:201 gets its value (including HMI, external Write messages, etc.) which leads to my agreeing with
    Michael Loyd in that on the surface, the top rung seems redundant....but there's always something lurking in the woods.


  7. On ‎12‎/‎19‎/‎2017 at 7:34 AM, ScottC said:

    If you have a TechConnect account, look at article 26787. If not, go to RSLinx Classic help and search for "Configure Browse". Include the quotes to limit results. Basically, you have to manually add devices you want to see on the remote network. Older versions of RSLinx did not store these configurations, so you had to reenter them if they were lost. I think the newer versions store the configurations when you do a backup.

    I can vouch for RSLinx 3.81 doing that. Could have used this feature 4 years ago, 


  8. 20 hours ago, chantecler said:

    >>>>>>>In this particular case if any timer times out the outputs are going to change to a safe state and the operator's intervention will be required and the sequence will have to start from the beginning

    I would recommend setting the bit values in Word 0 of your output array to the "safe state" values that you desire.

     

    Quote

    >>>>>>The operator will start the sequence the first time and it has to continue repeating automatically once it reaches the final step

     


     

    If you decide to use Sequencer instructions in one or more routines or embed them in an AOI, some tips...

    If you've worked with SQI and SQO before you know that after the Position value reaches the Length value (the last step) and the last step values are written to the Destination (through the mask)..... the next false-to-true rung transition in front of an SQO moves the bit values of Word 1 to the Destination word (through the mask.) In other words, the word 0 bits are not used again (except as laid out below).

    If you need to reset the sequencer instruction before it reaches the last step, be aware that how and when you reset it dictates the operation of the Destination. To wit:
    Scenario ---                   Reset Method                            True/False status of the rung the SQO is on at time of reset                              
    1.                                    RES instruction                                           False                                                             
    2.                                   RES instruction                                            True
    3.                               CLR or MOV instruction                                  False
                                  setting the Position value to 0 (zero)
    4.                               CLR or MOV instruction                                  True
                                  setting the Position value to 0 (zero)
    Outcome ------
    1. SQO Position is set to 0 (Step 0) but Destination value remains at value dictated by the value of the Stack word (based on Position value) that was last moved to the Destination. It will take a False-to-True rung transition on the SQO rung to move the SQO Position to Step 1.


    2. SQO Position is set to 1 (Step 1) and Destination value changes to value in Stack for Word 1. Obviously a different outcome from Scenario 1.    The next False-to-True rung transition for the SQO rung will move the Position value to 2 and the Destination will reflect the Stack word value for Step 2.


    3. SQO Position is set to 0 (Step 0) but Destination value remains at value dictated by the value of the Stack word that was last moved to the Destination. It will take a False-to-True rung transition on the SQO rung to move the SQO Position to Step 1. (Same outcome as Scenario 1.)


    4. SQO Position is set to 0 (Step 1) AND Destination value changes to value in Stack for Word 0. Obviously a different outcome from all of the scenarios. This would be one way to get the SQO back to your "safe state" if you've used Position 0 in the Stack for that purpose. NOTE: This is nothing the other scenarios do.

    -------
    If you're going to be using sequencer instructions much, I would recommend saving this Scenario list as Rockwell has never explained this well in the Logix5000, PLC-5, and SLC 500 software help files.

    Hope this helps.

     

    ADDENDA: I would actually use logic external to the SQO to put the process in a "safe" state and use Position 0 (zero) for a "home" or "initialized" state.

     

     


  9. Are you using a PLC-5 or Logix5000 platform? Either one allows for indexing through mask values as the SQI transitions through steps

    If PLC-5-------------

    Use an N (integer) or B (binary) file to hold the different mask values. Using the the same R (Control)  element you used for the SQO instruction insures that both instructions are at the same step.

    You would need another integer stack to store the max. time limit for each step. Each member of the stack would also correspond to the position of the sequencer instructions.

    So in the end you might have something like this....

    B10:0 - B10:15     (16 output positions where each B10 element has its 16 bits set or reset as you desire the outputs to be.) for the SQO File

    B11:0 - B11:15     (16 output positions where each B10 element has its 16 bits set or reset as you desire the mask to be.) for the SQI File

    N12:0 - N12:15  (16 time limit value positions where each N12 element has the max. time limit you want a particular step to be in) for the SQO File. You would need a MOV instruction to move the new time limit in your step timer at each step change.

    R6:5  The R (Control) address element used for the SQI and SQO instructions if you desire to keep them in lockstep at all time. If there are times or situations where such a thing is undesirable, you'll use different Control elements for each instruction and add logic to manage their .POS values as necessary.

    I've always been leery about using SQI & SQO instructions when somebody "thinks" there will never be a need to add steps in between...add additional outputs beyond the original number of outputs...allow an operator to change the mask values...etc.You need to make sure that whatever solution you use, there is relative ease for modifications down the road

    If Logix5000 -------

    Substitute tags & tag arrays where elements and data files are mentioned above in the PLC-5 area.

    However...I would use UDTs for the operational/status membbrs of the sequencer...

    So my tags for the operation of the sequencer would look like (using a tag named 'MySEQ' in my example)

    MySEQ.Position

    MySEQ.Output

    MySEQ.Input

    MySEQ.Mask

    MySEQ.StepTimeLimit

    etc.

    If this is something I thought I would do at other locations/machines  or need to change with an HMI, I would create a sequencer AOI (Add-on Instruction).

    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    A few things you didn't mention.....

    When the timer times out for a particular step, does the sequencer automatically advance to the next step? Or do the outputs for that step change

    to a "safe state" until the sequencer advances?

    What starts and stops the sequencer?

    Is there a desire to be able to put the sequencer in a "Hold" state manually? If so, how are the outputs controlled while in that step?

    This is another reason why I would use UDT's and possibly an AOI instruction.

    This would afford me access to monitoring ....

    MySEQ.Start

    MySEQ.Stop

    MySEQ.Reset

    MySEQ.Hold

    MySEQ.ClearOutputs

    MySEQ.Resume

    The AOI would be a lot more flexible than using SQI and SQO instructions as the core of the sequncer

     

     


  10. I prefer MSG instructions because I can control the transfer enabling/time.

    In addition, I rarely use MSG Writes because people can get confused about why data is changing

    in a PAC if there isn't documentation to mention this fact.

     

    Finally, Produce & Consume can get you in trouble.

    If PAC A is producing data and PAC B is consuming it but I decide later to produce an additional tag in PAC A for PAC B to consume

    and I make a mistake in trying to consume it in PAC B by misspelling the produced tag's name in PAC A while creating the consumed tag, not only will this new consumed tag

    fail, but so will the first consumed tag that was previously working.

    1 person likes this

  11. Just now, AndrewG said:

    An update: I found an older version of the project. The original programmer/field service tech probably made some revisions. I converted the older version of the project to RSLogix5 and imported the documentation database without any issues. Then I did an ASCII export on the database. Then I opened the newer version of the project (the one that was converted to RSLogix5 but missing the database) and imported the ASCII database from the older project. So now hopefully I have the latest version of the logic with enough descriptions to get by.

    All you will need to do is upload to get all of the current logic into the project file so it will be the latest & greatest.

    NOTE: You will not get any new/edited rung comments, address descriptions, instruction comments, symbols, and page titles that may have been added to the project after the older version you found... but it wouldn't take long to add the new documentation as you determine its use.


  12. On 6/9/2017 at 3:05 PM, Blindsquirrel said:

    Hello,

    I am sorry I am sure this has been asked before but I did some searching and didn't find much. I have no experience with PLC's and my manager has suggested I take some classes to fill a void in our team's skill set.  We use Allen Bradley PLC's and have a seat of RSlogix5000.  I hope to learn how to modify existing programs for some of our test equipment.  I want to add sensors to some existing test equipment and record data generated by these sensors.  My question for this group is If you were just getting started and you had a budget for a week of training what classes would you take? Where would you take them?  My manger and I realize a week of training may barely scratch the surface.  Is Allen Bradley's training worth the time and money for travel?  Is there local 3rd party training I can find in the Cleveland area that teaches RSlogix5000?    

    I am thinking about the below courses.

    CCP146 Conrtol Logix 5000 System Fundementals

    http://literature.rockwellautomation.com/idc/groups/literature/documents/pp/gmst10-pp185_-en-e.pdf

    and CCP 151 Basic Ladder logic

    http://literature.rockwellautomation.com/idc/groups/literature/documents/pp/gmst10-pp189_-en-e.pdf

     

    Also what is the difference between RSlogix 5000 and RSlogix 500? 

    I would recommend taking both classes as they are 2-day classes each and many distributor/Rockwell locations put them on in the same week.

    I would not recommend taking them out of order. Take CCP146   then CCP 151  nor would I split them up with a long period between each. CCP146 is for people that are new to PACs in general or are coming over from a different company's platform).

    There is also CD based RS Trainer. If you know the path you're heading ...be it Programmer...or Maintenance, you can take Rockwell classes specifically geared to one or the other.

    The 4-day Maintenance & Troubleshooting class would be good after spending time with the RSTrainer learning fundamental terms and ideas.

    The advantage of going to the class is getting immediate feedback from a demo workstation and an instructor to give that feedback.

     


  13. 25 minutes ago, craisondigital said:

    Thanks everyone for the info!  I tried the three usernames with no password, but no luck..  I found a sticker on the machine for Gettinge (the manufacturer) I called the number and they were able to give me the username and password!!

    Now i am logged in, but appear to be getting no communications from the PLC. I'm getting ? instead of values..

    One thing to note is that the original machine, the panelview had a corrupt internal flash card, so i ordered a used panel view logic module and used that flash card in my module.  Maybe that's causing a problem??

    Is the Manufacturer of the Sterilizer, Primus by chance?


  14. 5 hours ago, kosmosisx said:

    In RSLogix 500, verify comes first. I just tested this with a couple of online edits. Before accepting the rung edits verify rung is black and selectable. After accepting the rung edits it is gray and no longer selectable.

    You're right. I'm not sure what Armadillo's KB article has to say on the matter, but for all of the time I've used the software...

     

     

    When online, Verify checks for proper syntax, instruction placement, shorted output branches, non-addressed/incomplete instructions, etc.

    If errors exist, the rung marker remain as is (lower case).

    If no errors exist, the software acknowledges that fact BUT the edit(s) remain(s) in the RAM of the computer that the edit is being performed on.

    -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    When online, Accept does a Verify (checks for proper syntax, instruction placement, shorted output branches, non-addressed/incomplete instructions etc.)

    If errors exist, the rung marker remain as is (lower case).

    If no errors exist, the software acknowledges that fact BUT the edit(s) are copied from the RAM of the computer that the edit is being performed on into the controller

    In addition, if the controller is in Program or Remote Program. The edit(s) are now a permanent part of the project file in the controller and nothing else is required. They won't be getting scanned though.

    If the controller is in Remote Run when there is a successful Accept of the edit(s), the edit(s) in the RAM of the computer performing the edit(s) are copied into the controller and the rungs affected by the edit(s) change to Upper case letters that are either "I" (if the rung is a new addition) or "I" & "R" (if the rung is an edit made to an existing rung.)

    At this point a Test of the edits is performed and if everything is successful, an Assemble is performed. The changes are then permanently part of the project file in the controller.

     

    Later Edit: After having reviewed the Knowledgebase article that Armadillo referenced, I can see where the confusion lies. The term Verify is the culprit.

    If you use the Verify buttons at the top of the screen, they are Verifying the current ladder file or entire project file. I'm not sure why anyone would use either one while online but...different strokes. I use the Verify Project button when offline and about to download so I know if the project is correct.

    The Verify Rung option is selected in the context menu immediately to the left of the ladder rung. It can be used online or offline. (But as I referenced above, using it online is redundant as the Accept verifies AND transfers the changes to the controller.)

     


  15. 3 hours ago, machinebuilder said:

    Can someone explain with an example how the BSL works. There are no examples in the help files. They do explain what each field does, not no example. The manual is worse, the example uses bits that are not even the same in the little diagram they use. Just looking for a simple explanation i can understand.

    Not sure of the platform or software you're using but Version 21 of RSLogix5000 software has 2 examples in the help file.

    1 person likes this