Advanced Search

Search Results (Searched for: )

  • PCW
  • PCW's Avatar
07 Jun 2025 18:58
Replied by PCW on topic Mesa 7i97T & LinuxCNC setup struggles

Mesa 7i97T & LinuxCNC setup struggles

Category: Installing LinuxCNC

I would try setting the following errors wider so you can see the actual behavior without getting an instant following error
(say 25 and 25 mm)

Then first set the PID up with all terms 0 except a small amount of P

Then check if the motors roughly hold position and move when jogged

 
  • TheTinkeringMechanic1
  • TheTinkeringMechanic1
07 Jun 2025 18:46
Replied by TheTinkeringMechanic1 on topic CNC lathe to grinder.

CNC lathe to grinder.

Category: Basic Configuration

Please read the post fully to understand why this is necessary.
  • TheTinkeringMechanic1
  • TheTinkeringMechanic1
07 Jun 2025 18:44
Replied by TheTinkeringMechanic1 on topic CNC lathe to grinder.

CNC lathe to grinder.

Category: Basic Configuration

I will get this posted as soon as I can. Thank you.
  • farmer_mike
  • farmer_mike
07 Jun 2025 17:59
Replied by farmer_mike on topic Experimental XML config generator

Experimental XML config generator

Category: EtherCAT

Thanks for the help everyone. I decided to move my project to a Raspberry Pi 4, so I made sure to use the latest versions of LinuxCNC and Ethercat. I think I have the experimental XML config working now. I am a little unsure what to do with the output file. 

I'll paste two files below. The first file is the ethercat-conf.xml from my CNC project when I had a single axis using an Rtelligent ECT 60 stepper motor.The single axis worked, so I have since bought two Rtelligent RS750E AC Servo drives. All I have done with the RS750E drives is power them up and connect the Ethernet. I haven't done any onboard parameter programming yet.

The experimental XML config generator recognized all three drives in order.

Is the output from the experimental XML config generator meant to be used to create the ethercat-conf.xml file?
<masters>
  <master idx="0" appTimePeriod="1000000" refClockSyncCycles="1">
    <!-- Joint 0 -->
    <slave idx="0" type="generic" vid="00000a88" pid="0a880002" configPdos="true">
      <dcConf assignActivate="300" sync0Cycle="*1" sync0Shift="0"/>
      <sdoConfig idx="2000" subIdx="0"><sdoDataRaw data ="88 13"/></sdoConfig>  <!-- Max motor current (5.0) -->
      <sdoConfig idx="2007" subIdx="6"><sdoDataRaw data ="05"/></sdoConfig>     <!-- Input 6 - Emergency Stop -->
      <sdoConfig idx="2007" subIdx="5"><sdoDataRaw data ="05"/></sdoConfig>     <!-- Input 3 - Home Function -->
      <sdoConfig idx="2011" subIdx="0"><sdoDataRaw data ="01 00"/></sdoConfig>  <!-- Closed loop -->
      <sdoConfig idx="6098" subIdx="0"><sdoDataRaw data ="11 00"/></sdoConfig>  <!-- Home mode 17 -->
      <sdoConfig idx="607C" subIdx="0"><sdoDataRaw data ="00 00"/></sdoConfig>  <!-- Home offset 0  -->
      <sdoConfig idx="609A" subIdx="0"><sdoDataRaw data ="F4 01"/></sdoConfig>  <!-- Home accelleration 500 -->
      <sdoConfig idx="6099" subIdx="01"><sdoDataRaw data ="C4 09"/></sdoConfig>  <!-- Home fast speed 2500-->
      <sdoConfig idx="6099" subIdx="02"><sdoDataRaw data ="F4 01"/></sdoConfig>  <!-- Home slow speed 500 -->
      <syncManager idx="2" dir="out">
        <pdo idx="1600">
          <pdoEntry idx="6040" subIdx="00" bitLen="16" halPin="cia-controlword" halType="u32"/>
          <pdoEntry idx="6060" subIdx="00" bitLen="8" halPin="opmode" halType="s32"/>
          <!-- Target Position -->
          <pdoEntry idx="607A" subIdx="00" bitLen="32" halPin="target-position" halType="s32"/>
          <!-- Target Velocity -->
          <pdoEntry idx="60FF" subIdx="00" bitLen="32" halPin="target-velocity" halType="s32"/>
          <!-- Digtial Outputs (manufacturer's extension ECT86/ECT60)-->
          <pdoEntry idx="204A" subIdx="0" bitLen="16" halType="complex">
            <complexEntry bitLen="1" halPin="out-1" halType="bit"/>
            <complexEntry bitLen="1" halPin="out-2" halType="bit"/>
            <complexEntry bitLen="14"/>
          </pdoEntry>
        </pdo>
      </syncManager>
      <syncManager idx="3" dir="in">
        <pdo idx="1a00">
          <pdoEntry idx="6041" subIdx="00" bitLen="16" halPin="cia-statusword" halType="u32"/>
          <pdoEntry idx="6061" subIdx="00" bitLen="8" halPin="opmode-display" halType="s32"/>
          <pdoEntry idx="6064" subIdx="00" bitLen="32" halPin="actual-position" halType="s32"/>
          <pdoEntry idx="606C" subIdx="00" bitLen="32" halPin="actual-velocity" halType="s32"/>
          <pdoEntry idx="6077" subIdx="00" bitLen="32" halPin="actual-torque" halType="s32"/>
          <!-- Digtial_inputs (cia402 compatible) -->
          <pdoEntry idx="60FD" subIdx="0" bitLen="32" halType="complex">
            <complexEntry bitLen="1" halPin="CW-limit" halType="bit"/>
            <complexEntry bitLen="1" halPin="CCW-limit" halType="bit"/>
            <complexEntry bitLen="1" halPin="in-home" halType="bit"/>
            <complexEntry bitLen="13"/>
            <complexEntry bitLen="1" halPin="in-1" halType="bit"/>
            <complexEntry bitLen="1" halPin="in-2" halType="bit"/>
            <complexEntry bitLen="1" halPin="in-3" halType="bit"/>
            <complexEntry bitLen="1" halPin="in-4" halType="bit"/>
            <complexEntry bitLen="1" halPin="in-5" halType="bit"/>
            <complexEntry bitLen="1" halPin="in-6" halType="bit"/>
            <complexEntry bitLen="10"/>
          </pdoEntry>          
        </pdo>
      </syncManager>
    </slave>
 
    
   </master>
</masters>


<masters>
  <master idx="0">
    <slave idx="0" type="ECT60" name="D1">
      <!-- Enable support for Cyclic Synchronous Position mode. -->
      <modParam name="enableCSP" value="true"/>
      
      <!-- Enable support for Cyclic Synchronous Velocity mode. -->
      <modParam name="enableCSV" value="false"/>
      
      <!-- Maximum stepper Amps. -->
      <modParam name="peakCurrent_amps" value="6.0"/>
      
      <!-- Operation mode: openloop, closedloop, or foc. -->
      <modParam name="controlMode" value="closedloop"/>
      
      <!-- Number of encoder steps per revolution. -->
      <modParam name="encoderResolution" value="4000"/>
      
      <!-- Output 1 use: general, alarm, brake, in-place. -->
      <modParam name="output1Func" value="alarm"/>
      
      <!-- Output 2 use: general, alarm, brake, in-place. -->
      <modParam name="output2Func" value="brake"/>
      
      <!-- Input 3 use: general, cw-limit, ccw-limit, home, clear-fault, emergency-stop, motor-offline, probe1, probe2 -->
      <modParam name="input3Func" value="cw-limit"/>
      
      <!-- Input 4 use: general, cw-limit, ccw-limit, home, clear-fault, emergency-stop, motor-offline, probe1, probe2 -->
      <modParam name="input4Func" value="ccw-limit"/>
      
      <!-- Input 5 use: general, cw-limit, ccw-limit, home, clear-fault, emergency-stop, motor-offline, probe1, probe2 -->
      <modParam name="input5Func" value="home"/>
      
      <!-- Input 6 use: general, cw-limit, ccw-limit, home, clear-fault, emergency-stop, motor-offline, probe1, probe2 -->
      <modParam name="input6Func" value="motor-offline"/>
      
    </slave>
    <slave idx="1" type="basic_cia402" vid="0x00000a88" pid="0x0a880013" name="D2">
      <!--RS750E(COE)-->
      <modParam name="ciaRxPDOEntryLimit" value="9"/>
      <modParam name="ciaTxPDOEntryLimit" value="9"/>
      <modParam name="enablePP" value="true"/>
      <modParam name="enablePV" value="true"/>
      <modParam name="enableTQ" value="true"/>
      <modParam name="enableHM" value="true"/>
      <modParam name="enableCSP" value="true"/>
      <modParam name="enableCSV" value="true"/>
      <modParam name="enableCST" value="true"/>
      <modParam name="enableActualFollowingError" value="true"/>
      <modParam name="enableActualTorque" value="true"/>
      <modParam name="enableDigitalInput" value="true"/>
      <modParam name="digitalInChannels" value="16"/>
      <modParam name="enableDigitalOutput" value="true"/>
      <modParam name="digitalOutChannels" value="16"/>
      <modParam name="enableErrorCode" value="true"/>
      <modParam name="enableFollowingErrorTimeout" value="true"/>
      <modParam name="enableFollowingErrorWindow" value="true"/>
      <modParam name="enableHomeAccel" value="true"/>
      <modParam name="enableMaximumCurrent" value="true"/>
      <modParam name="enableMaximumTorque" value="true"/>
      <modParam name="enablePolarity" value="true"/>
      <modParam name="enablePositionDemand" value="true"/>
      <modParam name="enablePositioningTime" value="true"/>
      <modParam name="enablePositioningWindow" value="true"/>
      <modParam name="enableProbeStatus" value="true"/>
      <modParam name="enableProfileAccel" value="true"/>
      <modParam name="enableProfileDecel" value="true"/>
      <modParam name="enableProfileMaxVelocity" value="true"/>
      <modParam name="enableProfileVelocity" value="true"/>
      <modParam name="enableTargetTorque" value="true"/>
      <modParam name="enableTorqueDemand" value="true"/>
      <modParam name="enableTorqueSlope" value="true"/>
      <modParam name="enableVelocityErrorTime" value="true"/>
      <modParam name="enableVelocityErrorWindow" value="true"/>
    </slave>
    <slave idx="2" type="basic_cia402" vid="0x00000a88" pid="0x0a880013" name="D3">
      <!--RS750E(COE)-->
      <modParam name="ciaRxPDOEntryLimit" value="9"/>
      <modParam name="ciaTxPDOEntryLimit" value="9"/>
      <modParam name="enablePP" value="true"/>
      <modParam name="enablePV" value="true"/>
      <modParam name="enableTQ" value="true"/>
      <modParam name="enableHM" value="true"/>
      <modParam name="enableCSP" value="true"/>
      <modParam name="enableCSV" value="true"/>
      <modParam name="enableCST" value="true"/>
      <modParam name="enableActualFollowingError" value="true"/>
      <modParam name="enableActualTorque" value="true"/>
      <modParam name="enableDigitalInput" value="true"/>
      <modParam name="digitalInChannels" value="16"/>
      <modParam name="enableDigitalOutput" value="true"/>
      <modParam name="digitalOutChannels" value="16"/>
      <modParam name="enableErrorCode" value="true"/>
      <modParam name="enableFollowingErrorTimeout" value="true"/>
      <modParam name="enableFollowingErrorWindow" value="true"/>
      <modParam name="enableHomeAccel" value="true"/>
      <modParam name="enableMaximumCurrent" value="true"/>
      <modParam name="enableMaximumTorque" value="true"/>
      <modParam name="enablePolarity" value="true"/>
      <modParam name="enablePositionDemand" value="true"/>
      <modParam name="enablePositioningTime" value="true"/>
      <modParam name="enablePositioningWindow" value="true"/>
      <modParam name="enableProbeStatus" value="true"/>
      <modParam name="enableProfileAccel" value="true"/>
      <modParam name="enableProfileDecel" value="true"/>
      <modParam name="enableProfileMaxVelocity" value="true"/>
      <modParam name="enableProfileVelocity" value="true"/>
      <modParam name="enableTargetTorque" value="true"/>
      <modParam name="enableTorqueDemand" value="true"/>
      <modParam name="enableTorqueSlope" value="true"/>
      <modParam name="enableVelocityErrorTime" value="true"/>
      <modParam name="enableVelocityErrorWindow" value="true"/>
    </slave>
  </master>
</masters>

  • farmer_mike
  • farmer_mike
07 Jun 2025 17:55
test post was created by farmer_mike

test post

Category: Off Topic and Test Posts

Thanks for the help everyone. I decided to move my project to a Raspberry Pi 4, so I made sure to use the latest versions of LinuxCNC and Ethercat. I think I have the experimental XML config working now. I am a little unsure what to do with the output file. 

I'll paste two files below. The first file is the ethercat-conf.xml from my CNC project when I had a single axis using an Rtelligent ECT 60 stepper motor.The single axis worked, so I have since bought two Rtelligent RS750E AC Servo drives. All I have done with the RS750E drives is power them up and connect the Ethernet. I haven't done any onboard parameter programming yet.

The experimental XML config generator recognized all three drives in order.

Is the output from the experimental XML config generator meant to be used to create the ethercat-conf.xml file?
<masters>
  <master idx="0" appTimePeriod="1000000" refClockSyncCycles="1">
    <!-- Joint 0 -->
    <slave idx="0" type="generic" vid="00000a88" pid="0a880002" configPdos="true">
      <dcConf assignActivate="300" sync0Cycle="*1" sync0Shift="0"/>
      <sdoConfig idx="2000" subIdx="0"><sdoDataRaw data ="88 13"/></sdoConfig>  <!-- Max motor current (5.0) -->
      <sdoConfig idx="2007" subIdx="6"><sdoDataRaw data ="05"/></sdoConfig>     <!-- Input 6 - Emergency Stop -->
      <sdoConfig idx="2007" subIdx="5"><sdoDataRaw data ="05"/></sdoConfig>     <!-- Input 3 - Home Function -->
      <sdoConfig idx="2011" subIdx="0"><sdoDataRaw data ="01 00"/></sdoConfig>  <!-- Closed loop -->
      <sdoConfig idx="6098" subIdx="0"><sdoDataRaw data ="11 00"/></sdoConfig>  <!-- Home mode 17 -->
      <sdoConfig idx="607C" subIdx="0"><sdoDataRaw data ="00 00"/></sdoConfig>  <!-- Home offset 0  -->
      <sdoConfig idx="609A" subIdx="0"><sdoDataRaw data ="F4 01"/></sdoConfig>  <!-- Home accelleration 500 -->
      <sdoConfig idx="6099" subIdx="01"><sdoDataRaw data ="C4 09"/></sdoConfig>  <!-- Home fast speed 2500-->
      <sdoConfig idx="6099" subIdx="02"><sdoDataRaw data ="F4 01"/></sdoConfig>  <!-- Home slow speed 500 -->
      <syncManager idx="2" dir="out">
        <pdo idx="1600">
          <pdoEntry idx="6040" subIdx="00" bitLen="16" halPin="cia-controlword" halType="u32"/>
          <pdoEntry idx="6060" subIdx="00" bitLen="8" halPin="opmode" halType="s32"/>
          <!-- Target Position -->
          <pdoEntry idx="607A" subIdx="00" bitLen="32" halPin="target-position" halType="s32"/>
          <!-- Target Velocity -->
          <pdoEntry idx="60FF" subIdx="00" bitLen="32" halPin="target-velocity" halType="s32"/>
          <!-- Digtial Outputs (manufacturer's extension ECT86/ECT60)-->
          <pdoEntry idx="204A" subIdx="0" bitLen="16" halType="complex">
            <complexEntry bitLen="1" halPin="out-1" halType="bit"/>
            <complexEntry bitLen="1" halPin="out-2" halType="bit"/>
            <complexEntry bitLen="14"/>
          </pdoEntry>
        </pdo>
      </syncManager>
      <syncManager idx="3" dir="in">
        <pdo idx="1a00">
          <pdoEntry idx="6041" subIdx="00" bitLen="16" halPin="cia-statusword" halType="u32"/>
          <pdoEntry idx="6061" subIdx="00" bitLen="8" halPin="opmode-display" halType="s32"/>
          <pdoEntry idx="6064" subIdx="00" bitLen="32" halPin="actual-position" halType="s32"/>
          <pdoEntry idx="606C" subIdx="00" bitLen="32" halPin="actual-velocity" halType="s32"/>
          <pdoEntry idx="6077" subIdx="00" bitLen="32" halPin="actual-torque" halType="s32"/>
          <!-- Digtial_inputs (cia402 compatible) -->
          <pdoEntry idx="60FD" subIdx="0" bitLen="32" halType="complex">
            <complexEntry bitLen="1" halPin="CW-limit" halType="bit"/>
            <complexEntry bitLen="1" halPin="CCW-limit" halType="bit"/>
            <complexEntry bitLen="1" halPin="in-home" halType="bit"/>
            <complexEntry bitLen="13"/>
            <complexEntry bitLen="1" halPin="in-1" halType="bit"/>
            <complexEntry bitLen="1" halPin="in-2" halType="bit"/>
            <complexEntry bitLen="1" halPin="in-3" halType="bit"/>
            <complexEntry bitLen="1" halPin="in-4" halType="bit"/>
            <complexEntry bitLen="1" halPin="in-5" halType="bit"/>
            <complexEntry bitLen="1" halPin="in-6" halType="bit"/>
            <complexEntry bitLen="10"/>
          </pdoEntry>          
        </pdo>
      </syncManager>
    </slave>
 
    
   </master>
</masters>



<masters>
  <master idx="0">
    <slave idx="0" type="ECT60" name="D1">
      <!-- Enable support for Cyclic Synchronous Position mode. -->
      <modParam name="enableCSP" value="true"/>
      
      <!-- Enable support for Cyclic Synchronous Velocity mode. -->
      <modParam name="enableCSV" value="false"/>
      
      <!-- Maximum stepper Amps. -->
      <modParam name="peakCurrent_amps" value="6.0"/>
      
      <!-- Operation mode: openloop, closedloop, or foc. -->
      <modParam name="controlMode" value="closedloop"/>
      
      <!-- Number of encoder steps per revolution. -->
      <modParam name="encoderResolution" value="4000"/>
      
      <!-- Output 1 use: general, alarm, brake, in-place. -->
      <modParam name="output1Func" value="alarm"/>
      
      <!-- Output 2 use: general, alarm, brake, in-place. -->
      <modParam name="output2Func" value="brake"/>
      
      <!-- Input 3 use: general, cw-limit, ccw-limit, home, clear-fault, emergency-stop, motor-offline, probe1, probe2 -->
      <modParam name="input3Func" value="cw-limit"/>
      
      <!-- Input 4 use: general, cw-limit, ccw-limit, home, clear-fault, emergency-stop, motor-offline, probe1, probe2 -->
      <modParam name="input4Func" value="ccw-limit"/>
      
      <!-- Input 5 use: general, cw-limit, ccw-limit, home, clear-fault, emergency-stop, motor-offline, probe1, probe2 -->
      <modParam name="input5Func" value="home"/>
      
      <!-- Input 6 use: general, cw-limit, ccw-limit, home, clear-fault, emergency-stop, motor-offline, probe1, probe2 -->
      <modParam name="input6Func" value="motor-offline"/>
      
    </slave>
    <slave idx="1" type="basic_cia402" vid="0x00000a88" pid="0x0a880013" name="D2">
      <!--RS750E(COE)-->
      <modParam name="ciaRxPDOEntryLimit" value="9"/>
      <modParam name="ciaTxPDOEntryLimit" value="9"/>
      <modParam name="enablePP" value="true"/>
      <modParam name="enablePV" value="true"/>
      <modParam name="enableTQ" value="true"/>
      <modParam name="enableHM" value="true"/>
      <modParam name="enableCSP" value="true"/>
      <modParam name="enableCSV" value="true"/>
      <modParam name="enableCST" value="true"/>
      <modParam name="enableActualFollowingError" value="true"/>
      <modParam name="enableActualTorque" value="true"/>
      <modParam name="enableDigitalInput" value="true"/>
      <modParam name="digitalInChannels" value="16"/>
      <modParam name="enableDigitalOutput" value="true"/>
      <modParam name="digitalOutChannels" value="16"/>
      <modParam name="enableErrorCode" value="true"/>
      <modParam name="enableFollowingErrorTimeout" value="true"/>
      <modParam name="enableFollowingErrorWindow" value="true"/>
      <modParam name="enableHomeAccel" value="true"/>
      <modParam name="enableMaximumCurrent" value="true"/>
      <modParam name="enableMaximumTorque" value="true"/>
      <modParam name="enablePolarity" value="true"/>
      <modParam name="enablePositionDemand" value="true"/>
      <modParam name="enablePositioningTime" value="true"/>
      <modParam name="enablePositioningWindow" value="true"/>
      <modParam name="enableProbeStatus" value="true"/>
      <modParam name="enableProfileAccel" value="true"/>
      <modParam name="enableProfileDecel" value="true"/>
      <modParam name="enableProfileMaxVelocity" value="true"/>
      <modParam name="enableProfileVelocity" value="true"/>
      <modParam name="enableTargetTorque" value="true"/>
      <modParam name="enableTorqueDemand" value="true"/>
      <modParam name="enableTorqueSlope" value="true"/>
      <modParam name="enableVelocityErrorTime" value="true"/>
      <modParam name="enableVelocityErrorWindow" value="true"/>
    </slave>
    <slave idx="2" type="basic_cia402" vid="0x00000a88" pid="0x0a880013" name="D3">
      <!--RS750E(COE)-->
      <modParam name="ciaRxPDOEntryLimit" value="9"/>
      <modParam name="ciaTxPDOEntryLimit" value="9"/>
      <modParam name="enablePP" value="true"/>
      <modParam name="enablePV" value="true"/>
      <modParam name="enableTQ" value="true"/>
      <modParam name="enableHM" value="true"/>
      <modParam name="enableCSP" value="true"/>
      <modParam name="enableCSV" value="true"/>
      <modParam name="enableCST" value="true"/>
      <modParam name="enableActualFollowingError" value="true"/>
      <modParam name="enableActualTorque" value="true"/>
      <modParam name="enableDigitalInput" value="true"/>
      <modParam name="digitalInChannels" value="16"/>
      <modParam name="enableDigitalOutput" value="true"/>
      <modParam name="digitalOutChannels" value="16"/>
      <modParam name="enableErrorCode" value="true"/>
      <modParam name="enableFollowingErrorTimeout" value="true"/>
      <modParam name="enableFollowingErrorWindow" value="true"/>
      <modParam name="enableHomeAccel" value="true"/>
      <modParam name="enableMaximumCurrent" value="true"/>
      <modParam name="enableMaximumTorque" value="true"/>
      <modParam name="enablePolarity" value="true"/>
      <modParam name="enablePositionDemand" value="true"/>
      <modParam name="enablePositioningTime" value="true"/>
      <modParam name="enablePositioningWindow" value="true"/>
      <modParam name="enableProbeStatus" value="true"/>
      <modParam name="enableProfileAccel" value="true"/>
      <modParam name="enableProfileDecel" value="true"/>
      <modParam name="enableProfileMaxVelocity" value="true"/>
      <modParam name="enableProfileVelocity" value="true"/>
      <modParam name="enableTargetTorque" value="true"/>
      <modParam name="enableTorqueDemand" value="true"/>
      <modParam name="enableTorqueSlope" value="true"/>
      <modParam name="enableVelocityErrorTime" value="true"/>
      <modParam name="enableVelocityErrorWindow" value="true"/>
    </slave>
  </master>
</masters>

  • tommylight
  • tommylight's Avatar
07 Jun 2025 17:47
Replied by tommylight on topic CNC lathe to grinder.

CNC lathe to grinder.

Category: Basic Configuration

I do not have much experience with lathe, but homing near the chuck is just asking for trouble, there is a damn good reason to home as far as possible from the chuck, especially if the machine has a toolchanger.
  • tommylight
  • tommylight's Avatar
07 Jun 2025 17:43

ESP32/S2/S3 LinuxCNC Controller (6 axis hardware step gen), USB plug-and-play

Category: Computers and Hardware

Try to set networking from serial, if it reboots do not bother with it as it will not work.
Something got left unfinished, the developer has not been around for a year or two, so short of you forking it and fixing it, there is not much use.
It also does not work with ESP32S3 despite him posting everything running on it, it will not compile at all.
Use the hal2udp version of it, the older version worked fine on ESP32Wroom, but the new version also has issues. You can get the older version on github, or try the new version as this one is being developed still.
  • Aciera
  • Aciera's Avatar
07 Jun 2025 17:35
Replied by Aciera on topic CNC lathe to grinder.

CNC lathe to grinder.

Category: Basic Configuration

If you change your home position then you will also need to change the limit values for the axis/joint in question.
If unsure please post your ini file.
Displaying 15376 - 15383 out of 15383 results.
Time to create page: 0.915 seconds
Powered by Kunena Forum