Ken Roach

MrPLC Member
  • Content count

  • Joined

  • Last visited

Community Reputation

128 Excellent


About Ken Roach

  • Rank
    Propeller Head

Recent Profile Visitors

8484 profile views
  1. Kinetix 300 Hard Limits

    Are we talking about a Kinetix 350, or a Kinetix 300 ? The 300 has the browser/java configuration interface and is a standalone or treated-as-an-IO-adapter device with ControlLogix. The 350 works as a CIP Motion axis, and is configured entirely within Studio 5000 Logix Designer.   That's the one you would use a Motion Servo On (MSO) instruction on. I installed four Kinetix 350's on a project where I had no hardwired overtravels, and had to use CIP MSG instructions to turn off the Overtravel feature (it's stored in NVRAM so it's permanent unless you load new firmware).   I just made those MSG instructions something we toggled once when setting up the machine.  
  2. 1738-IT2IM12 thermocouple wiring - compensating cable

    Not to mention the cold junction offset values !    That is meant to be used as a substitute for the CJC devices themselves;  you're supposed to put the estimated temperature at the module in there, and un-check the CJC box.    Your temperature isn't off by 10 degrees;  it's off by 40. You need proper thermocouple extension cable if this system is going to get anywhere near accurate measurements.
  3. Kinetix 300 Hard Limits

    The Web interface should give you options of "Ignore", "Disable and Coast" or "Ramp and Disable".    I assume that "Alarm Only" means the same as "Ignore" since the drive isn't going to stop when it sees the overtravel signals.
  4. Fixed Cyclic Execution of Motion Tasks

    In general, the motion controllers and the motion subsystem of the Logix operating system take care of interrupts and motion planning by themselves.  As a programmer, I just try to keep my other program tasks from taking up too much processor bandwidth. I usually use a relatively fast cyclic task (5-10 ms) to hold my motion control routines, because I want to be able to react quickly to motion-related events, like the completion of a move or a change in gearing or dynamics.
  5. Fault 16# 0002 on 1756-DHRIO

    I'm a little confused by your description, so let's take a bit of a step back and review. Is the 1756-DHRIO in the same chassis with your ControlLogix CPU, or is it located in a chassis that is connected to the ControlLogix CPU via Ethernet and a 1756-EN2TR module ? You *can* put DHRIO and DNB modules in remote chassis.    The amount of data that gets moved across the network is substantial, but it works. The Unicast option won't be for the 1794-ASB entry in the I/O tree, but for the 1756-DHRIO entry itself.  
  6. Fault 16# 0002 on 1756-DHRIO

    If you are only using the module for DH+, it doesn't need to be in the I/O tree at all.   What you're describing is a module that's not doing anything.   If it was connected to a running DH+ network that channel LED would be steady green, and as you've said it's not connected to anything. Is your program originating messages to DH+ devices via this module ?   If the module isn't connected to anything it obviously can't process DH+ messages and its buffers could have filled up if your messaging logic is re-triggering them without waiting for them to time out. The specific error message you're seeing is usually associated with RIO adapters under the 1756-DHRIO's Scanner channel when the DHRIO is located in a remote rack over EtherNet/IP with Multicast enabled.  This is described in RA Knowledgebase article 567942.
  7. rsview32 works

    If you are using RSLinx Classic as the data server (most do) then RSLinx needs to be activated in some way to serve data to RSView32.     RSLinx Lite, the no-activation version that will let RSLogix connect to controllers, won't serve data to any HMI or other software. Why are you building a new RSView32 program ?   The software has been obsolete for a decade and won't run on any modern 64-bit OS.

    I agree that you need the I/O connection to be the full size on the EtherNet/IP side, for the Kinetix 300 to establish and keep the I/O connection going. What's actually happening there is that the EIP 'Master' doesn't check the I/O size until after the data is flowing.    If it's the wrong size, it shuts down the connection and you get an I/O connection fault.   Weird, but what I've seen.

    I pulled my head off the pillow and realize you're talking about the Assembly Object, Instances 113, 114, and 115. Those are, of course, the Input, Output and Configuration assemblies for the Kinetix 300.    They're described in detail in Appendix B of the User Manual.   I notice that my claim that the Input data assembly is 68 bytes conflicts with the manual's description of the Input assembly as 65 bytes.    There may be a run/idle status header I'm not seeing right away. Are you using the NetTap  NT100-RE-DN device, where the Primary network is the EIP Scanner and the Secondary network is the DeviceNet Slave ? I would approach this by using the ENIP Generic Adapter module from the Slave device folder, rather than trying to create an EDS.     That will let you more easily change the size and configuration while you're experimenting, rather than creating a new EDS and unregistering/reregistering it in the SyCon tool. This is quite a challenge, and I'll be impressed if you can get the PLC-5 to handle the datatypes and data configuration effectively.   I'm particularly scratching my head about the Input data assembly, as in general the largest DeviceNet assembly is 64 bytes.   Maybe you could exclude some of the data by customizing your Mapping.    

    The I/O structures for the Kinetix 300 are 68 bytes of Input data and 52 bytes of Output data. I'm not exactly sure which Assemblies to specify, in a simple EDS.  If it helps, this is the structure of the I/O assemblies, from the Save As XML feature in Studio 5000:   <Structure DataType="AB:K300:I:0"> <DataValueMember Name="Fault" DataType="DINT" Radix="Decimal" Value="0"/> <DataValueMember Name="DriveEn" DataType="BOOL" Value="0"/> <DataValueMember Name="PhysicalAxisFault" DataType="BOOL" Value="0"/> <DataValueMember Name="PositionLockStatus" DataType="BOOL" Value="0"/> <DataValueMember Name="CurrentLimitStatus" DataType="BOOL" Value="0"/> <DataValueMember Name="RegistrationEventStatus" DataType="BOOL" Value="0"/> <DataValueMember Name="IndexingStatus" DataType="BOOL" Value="0"/> <DataValueMember Name="MotionComplete" DataType="BOOL" Value="0"/> <DataValueMember Name="PositiveOvertravelInput" DataType="BOOL" Value="0"/> <DataValueMember Name="NegativeOvertravelInput" DataType="BOOL" Value="0"/> <DataValueMember Name="HomingStatus" DataType="BOOL" Value="0"/> <DataValueMember Name="AxisHomedStatus" DataType="BOOL" Value="0"/> <DataValueMember Name="VelocityStandstillStatus" DataType="BOOL" Value="0"/> <DataValueMember Name="VelocityLockStatus" DataType="BOOL" Value="0"/> <DataValueMember Name="PowerStructureEn" DataType="BOOL" Value="0"/> <DataValueMember Name="DigitalInputA1Status" DataType="BOOL" Value="0"/> <DataValueMember Name="DigitalInputA2Status" DataType="BOOL" Value="0"/> <DataValueMember Name="DigitalInputA3Status" DataType="BOOL" Value="0"/> <DataValueMember Name="DigitalInputA4Status" DataType="BOOL" Value="0"/> <DataValueMember Name="DigitalInputB1Status" DataType="BOOL" Value="0"/> <DataValueMember Name="DigitalInputB2Status" DataType="BOOL" Value="0"/> <DataValueMember Name="DigitalInputB3Status" DataType="BOOL" Value="0"/> <DataValueMember Name="DigitalInputB4Status" DataType="BOOL" Value="0"/> <DataValueMember Name="DigitalInputC1Status" DataType="BOOL" Value="0"/> <DataValueMember Name="DigitalInputC2Status" DataType="BOOL" Value="0"/> <DataValueMember Name="DigitalInputC3Status" DataType="BOOL" Value="0"/> <DataValueMember Name="DigitalInputC4Status" DataType="BOOL" Value="0"/> <DataValueMember Name="ActiveIndex" DataType="DINT" Radix="Decimal" Value="0"/> <DataValueMember Name="ActualVelocity" DataType="REAL" Radix="Float" Value="0.0"/> <DataValueMember Name="ActualPosition" DataType="REAL" Radix="Float" Value="0.0"/> <DataValueMember Name="PositionCommand" DataType="REAL" Radix="Float" Value="0.0"/> <DataValueMember Name="PositionError" DataType="REAL" Radix="Float" Value="0.0"/> <DataValueMember Name="MotorCurrent" DataType="REAL" Radix="Float" Value="0.0"/> <DataValueMember Name="RegistrationPosition" DataType="REAL" Radix="Float" Value="0.0"/> <DataValueMember Name="UserDefinedIntegerData0" DataType="DINT" Radix="Decimal" Value="0"/> <DataValueMember Name="UserDefinedIntegerData1" DataType="DINT" Radix="Decimal" Value="0"/> <DataValueMember Name="UserDefinedRealData0" DataType="REAL" Radix="Float" Value="0.0"/> <DataValueMember Name="UserDefinedRealData1" DataType="REAL" Radix="Float" Value="0.0"/> </Structure> </Data> </InputTag> <OutputTag ExternalAccess="Read/Write"> <Data Format="L5K"> <![CDATA[[0,0,0,0,0,0,0.00000000e+000,0.00000000e+000,0.00000000e+000,0.00000000e+000,0.00000000e+000                     ,0.00000000e+000,0,0,0.00000000e+000,0.00000000e+000]]]> </Data> <Data Format="Decorated"> <Structure DataType="AB:K300:O:0"> <DataValueMember Name="AbortIndex" DataType="BOOL" Value="0"/> <DataValueMember Name="StartMotion" DataType="BOOL" Value="0"/> <DataValueMember Name="DefineHome" DataType="BOOL" Value="0"/> <DataValueMember Name="AbortHoming" DataType="BOOL" Value="0"/> <DataValueMember Name="StartHoming" DataType="BOOL" Value="0"/> <DataValueMember Name="DriveEn" DataType="BOOL" Value="0"/> <DataValueMember Name="StartingIndex" DataType="DINT" Radix="Decimal" Value="0"/> <DataValueMember Name="ReferenceSource" DataType="DINT" Radix="Decimal" Value="0"/> <DataValueMember Name="AccelerationLimit" DataType="REAL" Radix="Float" Value="0.0"/> <DataValueMember Name="DecelerationLimit" DataType="REAL" Radix="Float" Value="0.0"/> <DataValueMember Name="CommandCurrentOrVelocity" DataType="REAL" Radix="Float" Value="0.0"/> <DataValueMember Name="VelocityLimit" DataType="REAL" Radix="Float" Value="0.0"/> <DataValueMember Name="CommandPosition" DataType="REAL" Radix="Float" Value="0.0"/> <DataValueMember Name="RegistrationOffset" DataType="REAL" Radix="Float" Value="0.0"/> <DataValueMember Name="UserDefinedIntegerData0" DataType="DINT" Radix="Decimal" Value="0"/> <DataValueMember Name="UserDefinedIntegerData1" DataType="DINT" Radix="Decimal" Value="0"/> <DataValueMember Name="UserDefinedRealData0" DataType="REAL" Radix="Float" Value="0.0"/> <DataValueMember Name="UserDefinedRealData1" DataType="REAL" Radix="Float" Value="0.0"/> </Structure>

    By coincidence I am doing my first project with NetTAP devices.   I'm using their NT100-RE-DP to bridge from EtherNet/IP adapter to Profibus DP Master. While I was getting ready to reply to this post I discovered that something has hosed up my Studio 5000 v29 installation and I can't create new modules on the Ethernet.    Time to do some install repairs, and to thank Heaven for the good folks at VMWare.

    What model of gateway device are you using, and what software is used to configure it ? You're correct that the Kinetix 300 EDS file doesn't contain enough information to create a generic I/O connection;   generally they're using with Rockwell controllers and an Add-On Profile or Module Profile. The solution might be to use EZ-EDS or another utility to create an EDS file that works for your gateway.       So let's start with the gateway make/model and software.  
  13. AB 5/04 and Lantronix UDS1100

    Is this an ordinary UDS-1100 or a UDS-1100-IAP with Industrial Automation Protocols ? General-purpose Serial/Ethernet converters work by allowing a device to use them as a "virtual serial port".    Your OPC server is probably running a DF1 Full Duplex serial driver on that virtual serial port, which is connecting to the serial port of the UDS-1100 just like it was a serial cable.   That's why you have to virtually "unplug" it. The UDS-1100-IAP converts EtherNet/IP protocol to DF1 protocol, and allows multiple devices to use the serial port at the same time.    The OPC server would have to use an Ethernet driver, not a DF1 driver on a remote serial port. This is also how the old 1761-NET-ENI module worked, and similar devices from Digi and RTA and LanTronix (the -IAP stuff) work the same way.
  14. Timer tags

    Timers and Counters are simple examples of "compound" datatypes, with Boolean (the .DN and .EN and .TT bits) as well as DINT (Preset and Accumulated time) sub-elements. They should show up as "folder" icons in FactoryTalk View Studio's address picker when you browse the controller data tables using RSLinx Enterprise.  Click on the Folder, and you should see the sub-elements.
  15. PLC 5/15 to Kinetix 300

    What data, exactly, do you need to get from the PLC-5/15 to the Kinetix 300 ? Do you also have any available "rack" addresses on the RIO scanner channel available on the PLC-5/15 ? Are you replacing an existing motion controller ? The concern I'm looking ahead to is that you might need to send a 32-bit unsigned integer to the Kinetix 300 as a position setpoint, and be unable to generate that type of data in the PLC-5/15 easily.