{"id":17375,"date":"2026-09-20T07:01:59","date_gmt":"2026-09-20T07:01:59","guid":{"rendered":"https:\/\/www.dgcrane.com\/?p=17375"},"modified":"2026-09-20T07:02:02","modified_gmt":"2026-09-20T07:02:02","slug":"crane-travelling-static-resistance-calculator","status":"publish","type":"post","link":"https:\/\/www.dgcrane.com\/fr\/crane-travelling-static-resistance-calculator\/","title":{"rendered":"Calculateur de r\u00e9sistance statique de d\u00e9placement de grue"},"content":{"rendered":"<div id=\"calculator\">\n  <div class=\"calculator-shell\">\n    <form id=\"calculator-form\" novalidate action=\"\">\n      <span class=\"calculator-sr-only\">Base de calcul\u00a0: EN 13135:2026. Domaine d\u2019application\u00a0: roues en acier avec roulements \u00e0 rouleaux sur rails en acier. La norme ISO 8686-1:2012 n\u2019est pas utilis\u00e9e pour cette \u00e9quation. Date de v\u00e9rification\u00a0: 17\/09\/2026.<\/span>\n\n      <section class=\"calculator-section\">\n        <div class=\"calculator-grid\">\n          <div class=\"calculator-field\">\n            <label for=\"calculator-loadMass\">Charge nominale, G<sub>n<\/sub> (kg)<\/label>\n            <input id=\"calculator-loadMass\" name=\"loadMass\" type=\"number\" inputmode=\"decimal\" min=\"0\" max=\"1000000000\" step=\"any\" value=\"10000\" aria-describedby=\"calculator-loadMass-error\">\n            <span id=\"calculator-loadMass-error\" class=\"error-msg\" aria-live=\"polite\"><\/span>\n          <\/div>\n\n          <div class=\"calculator-field\">\n            <label for=\"calculator-gravity\">Gravit\u00e9, g (N\/kg)<\/label>\n            <input id=\"calculator-gravity\" name=\"gravity\" type=\"number\" inputmode=\"decimal\" min=\"1\" max=\"20\" step=\"any\" value=\"10\" aria-describedby=\"calculator-gravity-error\">\n            <span id=\"calculator-gravity-error\" class=\"error-msg\" aria-live=\"polite\"><\/span>\n          <\/div>\n\n          <div class=\"calculator-field\">\n            <label for=\"calculator-gradient\">Pente ascendante, i (\u2030)<\/label>\n            <input id=\"calculator-gradient\" name=\"gradient\" type=\"number\" inputmode=\"decimal\" min=\"0\" max=\"100\" step=\"any\" value=\"1\" aria-describedby=\"calculator-gradient-error\">\n            <span id=\"calculator-gradient-error\" class=\"error-msg\" aria-live=\"polite\"><\/span>\n          <\/div>\n\n          <div class=\"calculator-field\">\n            <label for=\"calculator-wheelType\">Construction de roues<\/label>\n            <select id=\"calculator-wheelType\" name=\"wheelType\">\n              <option value=\"flanged\" selected>Roues \u00e0 rebord<\/option>\n              <option value=\"flangeless\">roues sans rebord<\/option>\n            <\/select>\n            <span id=\"calculator-wheelType-error\" class=\"error-msg\" aria-live=\"polite\"><\/span>\n          <\/div>\n\n          <div class=\"calculator-field\">\n            <label for=\"calculator-craneMass\">Masse propre de la grue, G (kg)<\/label>\n            <input id=\"calculator-craneMass\" name=\"craneMass\" type=\"number\" inputmode=\"decimal\" min=\"0.000001\" max=\"1000000000\" step=\"any\" value=\"20000\" aria-describedby=\"calculator-craneMass-error\">\n            <span id=\"calculator-craneMass-error\" class=\"error-msg\" aria-live=\"polite\"><\/span>\n          <\/div>\n\n          <div class=\"calculator-field\">\n            <label for=\"calculator-trolleyMass\">Masse propre du chariot, G<sub>1<\/sub> (kg)<\/label>\n            <input id=\"calculator-trolleyMass\" name=\"trolleyMass\" type=\"number\" inputmode=\"decimal\" min=\"0.000001\" max=\"1000000000\" step=\"any\" value=\"2000\" aria-describedby=\"calculator-trolleyMass-error\">\n            <span id=\"calculator-trolleyMass-error\" class=\"error-msg\" aria-live=\"polite\"><\/span>\n          <\/div>\n\n          <div class=\"calculator-field\">\n            <label for=\"calculator-craneDiameter\">Roue de grue D<sub>w<\/sub> (mm)<\/label>\n            <select id=\"calculator-craneDiameter\" name=\"craneDiameter\">\n              <option value=\"50\">50<\/option>\n              <option value=\"80\">80<\/option>\n              <option value=\"100\">100<\/option>\n              <option value=\"125\">125<\/option>\n              <option value=\"160\">160<\/option>\n              <option value=\"250\">250<\/option>\n              <option value=\"320\">320<\/option>\n              <option value=\"400\" selected>400<\/option>\n              <option value=\"630\">630 et plus<\/option>\n            <\/select>\n            <span id=\"calculator-craneDiameter-error\" class=\"error-msg\" aria-live=\"polite\"><\/span>\n          <\/div>\n\n          <div class=\"calculator-field\">\n            <label for=\"calculator-craneFactor\">Facteur de grue, F<sub>r<\/sub><\/label>\n            <select id=\"calculator-craneFactor\" name=\"craneFactor\" aria-describedby=\"calculator-craneFactor-error\"><\/select>\n            <span id=\"calculator-craneFactor-error\" class=\"error-msg\" aria-live=\"polite\"><\/span>\n          <\/div>\n\n          <div class=\"calculator-field\">\n            <label for=\"calculator-trolleyDiameter\">Roue de chariot D<sub>w<\/sub> (mm)<\/label>\n            <select id=\"calculator-trolleyDiameter\" name=\"trolleyDiameter\">\n              <option value=\"50\">50<\/option>\n              <option value=\"80\">80<\/option>\n              <option value=\"100\">100<\/option>\n              <option value=\"125\">125<\/option>\n              <option value=\"160\" selected>160<\/option>\n              <option value=\"250\">250<\/option>\n              <option value=\"320\">320<\/option>\n              <option value=\"400\">400<\/option>\n              <option value=\"630\">630 et plus<\/option>\n            <\/select>\n            <span id=\"calculator-trolleyDiameter-error\" class=\"error-msg\" aria-live=\"polite\"><\/span>\n          <\/div>\n\n          <div class=\"calculator-field\">\n            <label for=\"calculator-trolleyFactor\">Facteur de trolleybus, F<sub>r<\/sub><\/label>\n            <select id=\"calculator-trolleyFactor\" name=\"trolleyFactor\" aria-describedby=\"calculator-trolleyFactor-error\"><\/select>\n            <span id=\"calculator-trolleyFactor-error\" class=\"error-msg\" aria-live=\"polite\"><\/span>\n          <\/div>\n        <\/div>\n      <\/section>\n\n      <div id=\"calculator-error-summary\" class=\"calculator-error-summary\" role=\"alert\" tabindex=\"-1\"><\/div>\n\n      <div class=\"calculator-actions\">\n        <button type=\"submit\">Calculer<\/button>\n        <button type=\"reset\" class=\"calculator-reset\">R\u00e9initialiser<\/button>\n      <\/div>\n    <input type=\"hidden\" name=\"trp-form-language\" value=\"fr\"\/><\/form>\n\n    <section class=\"calculator-results\" aria-live=\"polite\" aria-atomic=\"true\">\n      <div class=\"calculator-result-card calculator-result-main\">\n        <span>r\u00e9sistance statique du d\u00e9placement de la grue, F<sub>st,max<\/sub><\/span>\n        <strong id=\"calculator-craneTotal\">\u2014<\/strong>\n      <\/div>\n\n      <div class=\"calculator-result-card\">\n        <span>r\u00e9sistance statique du d\u00e9placement du chariot, F<sub>st,max<\/sub><\/span>\n        <strong id=\"calculator-trolleyTotal\">\u2014<\/strong>\n      <\/div>\n    <\/section>\n  <\/div>\n\n  <style>\n    #calculator {\n      --primary-color: #0a3487;\n      --primary-hover: #F58423;\n      --error-color: #e53935;\n      --bg-color: #EAEEF7;\n      --text-color: #4a4a4a;\n      --surface-color: #ffffff;\n      --border-color: #cccccc;\n      --soft-primary: #edf2ff;\n      --soft-error: #fff3f2;\n      --focus-shadow: rgba(10, 52, 135, 0.18);\n\n      max-width: 545px;\n      margin: 0 auto;\n      padding: 30px;\n      color: var(--text-color);\n      background: var(--bg-color);\n      font-family: Arial, Helvetica, sans-serif;\n      line-height: 1.5;\n      box-sizing: border-box;\n    }\n\n    #calculator *,\n    #calculator *::before,\n    #calculator *::after {\n      box-sizing: border-box;\n    }\n\n    #calculator .calculator-shell {\n      padding: 24px;\n      border-top: 5px solid var(--primary-color);\n      background: var(--surface-color);\n    }\n\n    #calculator .calculator-sr-only {\n      position: absolute;\n      width: 1px;\n      height: 1px;\n      padding: 0;\n      margin: -1px;\n      overflow: hidden;\n      clip: rect(0, 0, 0, 0);\n      white-space: nowrap;\n      border: 0;\n    }\n\n    #calculator .calculator-section {\n      margin: 0 0 16px;\n      padding: 16px;\n      background: var(--bg-color);\n    }\n\n    #calculator .calculator-grid {\n      display: grid;\n      grid-template-columns: repeat(2, minmax(0, 1fr));\n      gap: 12px 14px;\n      align-items: start;\n    }\n\n    #calculator .calculator-field {\n      min-width: 0;\n    }\n\n    #calculator label,\n    #calculator button,\n    #calculator select {\n      font-size: 14px;\n    }\n\n    #calculator label {\n      display: flex;\n      min-height: 38px;\n      margin-bottom: 5px;\n      align-items: flex-end;\n      font-weight: 700;\n    }\n\n    #calculator input,\n    #calculator select,\n    #calculator button {\n      width: 100%;\n      border-radius: 0;\n      transition: 0.2s ease;\n    }\n\n    #calculator input,\n    #calculator select {\n      height: 36px;\n      padding: 5px 9px;\n      border: 1px solid var(--border-color);\n      color: var(--text-color);\n      background: var(--surface-color);\n      font-size: 16px;\n    }\n\n    #calculator input:focus,\n    #calculator select:focus {\n      border: 2px solid var(--primary-color);\n      outline: 0;\n      box-shadow: 0 0 0 3px var(--focus-shadow);\n    }\n\n    #calculator input.error,\n    #calculator select.error,\n    #calculator input.error:focus,\n    #calculator select.error:focus {\n      border: 2px solid var(--error-color);\n      box-shadow: none;\n    }\n\n    #calculator .error-msg {\n      display: none;\n      margin-top: 5px;\n      color: var(--error-color);\n      font-size: 12px;\n      font-weight: 700;\n    }\n\n    #calculator .error-msg.visible {\n      display: block;\n    }\n\n    #calculator .calculator-error-summary {\n      display: none;\n      margin-bottom: 14px;\n      padding: 10px;\n      border-left: 4px solid var(--error-color);\n      color: var(--error-color);\n      background: var(--soft-error);\n      font-weight: 700;\n    }\n\n    #calculator .calculator-error-summary.visible {\n      display: block;\n    }\n\n    #calculator .calculator-actions {\n      display: flex;\n      gap: 12px;\n      margin-top: 4px;\n    }\n\n    #calculator button {\n      height: 34px;\n      padding: 0 16px;\n      border: 0;\n      color: var(--surface-color);\n      background: var(--primary-color);\n      font-weight: 700;\n      line-height: 34px;\n      cursor: pointer;\n    }\n\n    #calculator button:hover,\n    #calculator button:focus-visible {\n      background: var(--primary-hover);\n      outline: 2px solid var(--primary-color);\n      outline-offset: 2px;\n    }\n\n    #calculator button.calculator-reset {\n      color: var(--primary-color);\n      background: var(--surface-color);\n      border: 1px solid var(--primary-color);\n    }\n\n    #calculator button.calculator-reset:hover,\n    #calculator button.calculator-reset:focus-visible {\n      color: var(--surface-color);\n      background: var(--primary-hover);\n    }\n\n    #calculator .calculator-results {\n      display: grid;\n      grid-template-columns: 1fr 1fr;\n      gap: 12px;\n      margin-top: 18px;\n    }\n\n    #calculator .calculator-result-card {\n      margin: 0;\n      padding: 14px;\n      border-left: 4px solid var(--primary-color);\n      background: var(--soft-primary);\n    }\n\n    #calculator .calculator-result-card > span {\n      display: block;\n      font-size: 13px;\n      font-weight: 700;\n    }\n\n    #calculator .calculator-result-card strong {\n      display: block;\n      margin: 4px 0 10px;\n      color: var(--primary-color);\n      font-size: 32px;\n      line-height: 1.15;\n      overflow-wrap: anywhere;\n    }\n\n    @media (max-width: 768px) {\n      #calculator {\n        padding: 0.3rem;\n      }\n\n      #calculator .calculator-shell {\n        padding: 0.3rem;\n      }\n\n      #calculator label,\n      #calculator input,\n      #calculator select,\n      #calculator button {\n        font-size: 0.28rem;\n      }\n\n      #calculator input,\n      #calculator select,\n      #calculator button {\n        min-height: 0.7rem;\n        height: 0.7rem;\n      }\n\n      #calculator button {\n        line-height: 0.7rem;\n      }\n\n      #calculator .calculator-actions {\n        flex-direction: column;\n      }\n\n      #calculator .calculator-actions button {\n        width: 100%;\n      }\n\n      #calculator .calculator-grid {\n        grid-template-columns: repeat(2, minmax(0, 1fr));\n        gap: 0.24rem;\n      }\n\n      #calculator label {\n        min-height: 0.7rem;\n      }\n\n      #calculator .calculator-results {\n        grid-template-columns: 1fr;\n      }\n    }\n\n    @media (prefers-reduced-motion: reduce) {\n      #calculator *,\n      #calculator *::before,\n      #calculator *::after {\n        transition: none;\n      }\n    }\n  <\/style>\n\n  <script>\n    (() => {\n      \"use strict\";\n\n      const root = document.getElementById(\"calculator\");\n      if (!root) return;\n\n      const form = root.querySelector(\"#calculator-form\");\n      const summary = root.querySelector(\"#calculator-error-summary\");\n\n      const diameterPoints = [\n        50, 80, 100, 125, 160, 250, 320, 400, 630\n      ];\n\n      const factorSets = {\n        flanged: [\n          0.013, 0.011, 0.010, 0.009, 0.008,\n          0.0065, 0.006, 0.0055, 0.005\n        ],\n        flangeless: [\n          0.011, 0.0095, 0.0085, 0.0075, 0.007,\n          0.0055, 0.0052, 0.005, 0.0045\n        ]\n      };\n\n      const fields = {\n        loadMass: root.querySelector(\"#calculator-loadMass\"),\n        gravity: root.querySelector(\"#calculator-gravity\"),\n        gradient: root.querySelector(\"#calculator-gradient\"),\n        wheelType: root.querySelector(\"#calculator-wheelType\"),\n        craneMass: root.querySelector(\"#calculator-craneMass\"),\n        craneDiameter: root.querySelector(\"#calculator-craneDiameter\"),\n        craneFactor: root.querySelector(\"#calculator-craneFactor\"),\n        trolleyMass: root.querySelector(\"#calculator-trolleyMass\"),\n        trolleyDiameter: root.querySelector(\"#calculator-trolleyDiameter\"),\n        trolleyFactor: root.querySelector(\"#calculator-trolleyFactor\")\n      };\n\n      const outputs = {\n        craneTotal: root.querySelector(\"#calculator-craneTotal\"),\n        trolleyTotal: root.querySelector(\"#calculator-trolleyTotal\")\n      };\n\n      function setError(fieldName, message) {\n        const input = fields[fieldName];\n        const error = root.querySelector(\n          `#calculator-${fieldName}-error`\n        );\n\n        input.classList.add(\"error\");\n        input.setAttribute(\"aria-invalid\", \"true\");\n\n        if (error) {\n          error.textContent = message;\n          error.classList.add(\"visible\");\n        }\n      }\n\n      function clearError(fieldName) {\n        const input = fields[fieldName];\n        const error = root.querySelector(\n          `#calculator-${fieldName}-error`\n        );\n\n        input.classList.remove(\"error\");\n        input.removeAttribute(\"aria-invalid\");\n\n        if (error) {\n          error.textContent = \"\";\n          error.classList.remove(\"visible\");\n        }\n      }\n\n      function validateInput(\n        fieldName,\n        label,\n        minimum,\n        maximum,\n        allowZero\n      ) {\n        const input = fields[fieldName];\n        const value = Number.parseFloat(input.value);\n\n        clearError(fieldName);\n\n        if (\n          input.value.trim() === \"\" ||\n          !Number.isFinite(value)\n        ) {\n          setError(\n            fieldName,\n            `${label} is required and must be a finite number.`\n          );\n          return null;\n        }\n\n        if (\n          (!allowZero && value <= minimum) ||\n          (allowZero &#038;&#038; value < minimum) ||\n          value > maximum\n        ) {\n          const relation = allowZero\n            ? `from ${minimum}`\n            : `greater than ${minimum}`;\n\n          setError(\n            fieldName,\n            `${label} must be ${relation} and no more than ${maximum}.`\n          );\n          return null;\n        }\n\n        return value;\n      }\n\n      function rollingFactor(wheelType, diameter) {\n        const factors = factorSets[wheelType];\n\n        if (!factors) {\n          throw new Error(\"Unsupported wheel construction.\");\n        }\n\n        const index = diameterPoints.indexOf(Number(diameter));\n\n        if (index === -1) {\n          throw new Error(\n            \"Unsupported wheel diameter selection.\"\n          );\n        }\n\n        return factors[index];\n      }\n\n      function calculateTravelResistance(\n        loadMass,\n        selfMass,\n        gravity,\n        gradientPerMille,\n        factor\n      ) {\n        const normalForce =\n          (loadMass + selfMass) * gravity;\n\n        const rolling =\n          normalForce * factor;\n\n        const grade =\n          normalForce * gradientPerMille \/ 1000;\n\n        return {\n          total: rolling + grade\n        };\n      }\n\n      function clearResults() {\n        outputs.craneTotal.textContent = \"\u2014\";\n        outputs.trolleyTotal.textContent = \"\u2014\";\n      }\n\n      function formatForce(value) {\n        return `${value.toLocaleString(\"en-US\", {\n          minimumFractionDigits: 2,\n          maximumFractionDigits: 2\n        })} N`;\n      }\n\n      function formatFactor(value) {\n        return value\n          .toFixed(6)\n          .replace(\/0+$\/, \"\")\n          .replace(\/\\.$\/, \"\");\n      }\n\n      function populateFactorOptions(prefix) {\n        const wheelType = fields.wheelType.value;\n        const diameter =\n          Number(fields[`${prefix}Diameter`].value);\n\n        const factorSelect =\n          fields[`${prefix}Factor`];\n\n        const factors = factorSets[wheelType];\n\n        const options = factors.map((factor) => {\n          const option =\n            document.createElement(\"option\");\n\n          option.value = String(factor);\n          option.textContent =\n            formatFactor(factor);\n\n          return option;\n        });\n\n        factorSelect.replaceChildren(...options);\n\n        factorSelect.value = String(\n          rollingFactor(wheelType, diameter)\n        );\n      }\n\n      function syncWheelSelectors(\n        prefix,\n        changedField\n      ) {\n        const wheelType =\n          fields.wheelType.value;\n\n        const diameterSelect =\n          fields[`${prefix}Diameter`];\n\n        const factorSelect =\n          fields[`${prefix}Factor`];\n\n        if (changedField === \"type\") {\n          populateFactorOptions(prefix);\n          return;\n        }\n\n        if (changedField === \"factor\") {\n          const factor =\n            Number(factorSelect.value);\n\n          const index =\n            factorSets[wheelType].findIndex(\n              (candidate) => candidate === factor\n            );\n\n          if (index !== -1) {\n            diameterSelect.value =\n              String(diameterPoints[index]);\n          }\n\n          return;\n        }\n\n        factorSelect.value = String(\n          rollingFactor(\n            wheelType,\n            Number(diameterSelect.value)\n          )\n        );\n      }\n\n      function readAndValidate() {\n        const values = {\n          loadMass: validateInput(\n            \"loadMass\",\n            \"Rated load\",\n            0,\n            1000000000,\n            true\n          ),\n\n          gravity: validateInput(\n            \"gravity\",\n            \"Gravity\",\n            1,\n            20,\n            false\n          ),\n\n          gradient: validateInput(\n            \"gradient\",\n            \"Uphill gradient\",\n            0,\n            100,\n            true\n          ),\n\n          craneMass: validateInput(\n            \"craneMass\",\n            \"Crane self mass\",\n            0,\n            1000000000,\n            false\n          ),\n\n          craneDiameter:\n            Number(fields.craneDiameter.value),\n\n          craneFactor:\n            Number(fields.craneFactor.value),\n\n          trolleyMass: validateInput(\n            \"trolleyMass\",\n            \"Trolley self mass\",\n            0,\n            1000000000,\n            false\n          ),\n\n          trolleyDiameter:\n            Number(fields.trolleyDiameter.value),\n\n          trolleyFactor:\n            Number(fields.trolleyFactor.value),\n\n          wheelType:\n            fields.wheelType.value\n        };\n\n        const linkedSelectionsValid =\n          values.craneFactor === rollingFactor(\n            values.wheelType,\n            values.craneDiameter\n          ) &&\n          values.trolleyFactor === rollingFactor(\n            values.wheelType,\n            values.trolleyDiameter\n          );\n\n        const invalid =\n          Object.entries(values).filter(\n            ([name, value]) =>\n              name !== \"wheelType\" &&\n              (\n                value === null ||\n                !Number.isFinite(value)\n              )\n          );\n\n        if (!linkedSelectionsValid) {\n          setError(\n            \"craneFactor\",\n            \"Wheel construction, diameter and factor must match.\"\n          );\n\n          setError(\n            \"trolleyFactor\",\n            \"Wheel construction, diameter and factor must match.\"\n          );\n\n          return null;\n        }\n\n        return invalid.length ? null : values;\n      }\n\n      function showResults(crane, trolley) {\n        outputs.craneTotal.textContent =\n          formatForce(crane.total);\n\n        outputs.trolleyTotal.textContent =\n          formatForce(trolley.total);\n      }\n\n      populateFactorOptions(\"crane\");\n      populateFactorOptions(\"trolley\");\n\n      fields.wheelType.addEventListener(\n        \"change\",\n        () => {\n          syncWheelSelectors(\"crane\", \"type\");\n          syncWheelSelectors(\"trolley\", \"type\");\n        }\n      );\n\n      fields.craneDiameter.addEventListener(\n        \"change\",\n        () => syncWheelSelectors(\n          \"crane\",\n          \"diameter\"\n        )\n      );\n\n      fields.craneFactor.addEventListener(\n        \"change\",\n        () => syncWheelSelectors(\n          \"crane\",\n          \"factor\"\n        )\n      );\n\n      fields.trolleyDiameter.addEventListener(\n        \"change\",\n        () => syncWheelSelectors(\n          \"trolley\",\n          \"diameter\"\n        )\n      );\n\n      fields.trolleyFactor.addEventListener(\n        \"change\",\n        () => syncWheelSelectors(\n          \"trolley\",\n          \"factor\"\n        )\n      );\n\n      Object.keys(fields).forEach(\n        (fieldName) => {\n          fields[fieldName].addEventListener(\n            \"input\",\n            () => clearError(fieldName)\n          );\n\n          fields[fieldName].addEventListener(\n            \"change\",\n            () => clearError(fieldName)\n          );\n        }\n      );\n\n      form.addEventListener(\n        \"submit\",\n        (event) => {\n          event.preventDefault();\n\n          summary.textContent = \"\";\n          summary.classList.remove(\"visible\");\n\n          const values = readAndValidate();\n\n          if (!values) {\n            clearResults();\n\n            summary.textContent =\n              \"Please correct the highlighted fields.\";\n\n            summary.classList.add(\"visible\");\n            summary.focus();\n            return;\n          }\n\n          const crane =\n            calculateTravelResistance(\n              values.loadMass,\n              values.craneMass,\n              values.gravity,\n              values.gradient,\n              values.craneFactor\n            );\n\n          const trolley =\n            calculateTravelResistance(\n              values.loadMass,\n              values.trolleyMass,\n              values.gravity,\n              values.gradient,\n              values.trolleyFactor\n            );\n\n          showResults(crane, trolley);\n        }\n      );\n\n      form.addEventListener(\n        \"reset\",\n        () => {\n          window.setTimeout(() => {\n            Object.keys(fields).forEach(\n              clearError\n            );\n\n            summary.textContent = \"\";\n            summary.classList.remove(\"visible\");\n\n            populateFactorOptions(\"crane\");\n            populateFactorOptions(\"trolley\");\n            clearResults();\n          }, 0);\n        }\n      );\n    })();\n  <\/script>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Formule de calcul de la r\u00e9sistance statique de d\u00e9placement d&#39;une grue<\/h2>\n\n\n\n<div id=\"travel-resistance-formulas\">\n  <div class=\"formula\">\n    F<sub>f<\/sub>\n    = (G<sub>n<\/sub> + G) \u00d7 g \u00d7 f<sub>r<\/sub>\n  <\/div>\n\n  <div class=\"formula\">\n    F<sub>s<\/sub>\n    = (G<sub>n<\/sub> + G) \u00d7 g \u00d7 i\n    <span class=\"formula-condition\">\n    <\/span>\n  <\/div>\n\n  <div class=\"formula formula-total\">\n    F<sub>st,max<\/sub>\n    = F<sub>f<\/sub>\n    + F<sub>s<\/sub>\n  <\/div>\n\n  <style>\n    #travel-resistance-formulas {\n      --text-color: #4a4a4a;\n\n      width: 100%;\n      margin: 0;\n      padding: 0;\n      color: var(--text-color);\n      box-sizing: border-box;\n    }\n\n    #travel-resistance-formulas *,\n    #travel-resistance-formulas *::before,\n    #travel-resistance-formulas *::after {\n      box-sizing: border-box;\n    }\n\n    #travel-resistance-formulas .formula {\n      padding: 7px 0;\n      color: var(--text-color);\n      font-family: \"Segoe UI\", Arial, Helvetica, sans-serif;\n      font-size: 20px;\n      font-style: normal;\n      font-weight: 400;\n      line-height: 1.55;\n      text-align: left;\n      white-space: nowrap;\n    }\n\n    #travel-resistance-formulas .formula sub {\n      font-size: 65%;\n      font-style: normal;\n      vertical-align: -0.3em;\n    }\n\n    #travel-resistance-formulas .formula-condition {\n      margin-left: 8px;\n      font-size: 16px;\n      font-style: normal;\n      font-weight: 400;\n    }\n\n    #travel-resistance-formulas .formula-total {\n      color: var(--text-color);\n      font-size: 20px;\n      font-style: normal;\n      font-weight: 600;\n    }\n\n    @media (max-width: 520px) {\n      #travel-resistance-formulas {\n        overflow-x: auto;\n      }\n\n      #travel-resistance-formulas .formula {\n        font-size: 18px;\n      }\n\n      #travel-resistance-formulas .formula-condition {\n        font-size: 14px;\n      }\n\n      #travel-resistance-formulas .formula-total {\n        font-size: 18px;\n      }\n    }\n  <\/style>\n<\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li>g<sub>n<\/sub>Charge nominale de la grue, unit\u00e9 : kg<\/li>\n\n\n\n<li>G : Poids propre de la grue, unit\u00e9 : kg<\/li>\n\n\n\n<li>g<sub>1<\/sub>Poids propre du chariot, unit\u00e9 : kg<\/li>\n\n\n\n<li>g : Gravit\u00e9 (la valeur est prise comme 10 N\/kg)<\/li>\n\n\n\n<li>f<sub>r<\/sub>: Facteur de frottement de roulement<\/li>\n\n\n\n<li>i : Pente suppos\u00e9e<\/li>\n\n\n\n<li>F<sub>f<\/sub>R\u00e9sistance au frottement, unit\u00e9 : N<\/li>\n\n\n\n<li>Fs : R\u00e9sistance graduelle, unit\u00e9 : N<\/li>\n\n\n\n<li>F<sub>st, max<\/sub>R\u00e9sistance statique de d\u00e9placement de la grue, unit\u00e9 : N<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Notes<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ce f<sub>r<\/sub> Ce coefficient repr\u00e9sente en r\u00e9alit\u00e9 la r\u00e9sistance au roulement de la roue plus le frottement des roulements de roue, ainsi que les effets suppl\u00e9mentaires li\u00e9s \u00e0 la bride de la roue.<\/li>\n\n\n\n<li>En r\u00e8gle g\u00e9n\u00e9rale, le diam\u00e8tre des roues du m\u00e9canisme de translation de la grue est sup\u00e9rieur \u00e0 celui des roues du m\u00e9canisme de translation du chariot. Par cons\u00e9quent, ce calculateur permet d&#39;effectuer des calculs distincts en fonction des param\u00e8tres respectifs.<\/li>\n\n\n\n<li>Pour les m\u00e9canismes de d\u00e9placement et les moteurs \u00e9lectriques, les besoins en puissance sont relativement sensibles. M\u00eame une pente de seulement 1\u00a0\u2030 g\u00e9n\u00e8re une r\u00e9sistance au fonctionnement. Par cons\u00e9quent, en l\u2019absence de donn\u00e9es mesur\u00e9es sur l\u2019installation, une pente de r\u00e9f\u00e9rence est int\u00e9gr\u00e9e afin d\u2019\u00e9viter le sous-dimensionnement du moteur.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Grues applicables<\/h2>\n\n\n\n<p>Les produits \u00e9num\u00e9r\u00e9s ci-dessous sont principalement adapt\u00e9s \u00e0 une utilisation dans des environnements industriels int\u00e9rieurs clos.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Pont roulant monopoutre<\/li>\n\n\n\n<li>Pont roulant \u00e0 double poutre<\/li>\n\n\n\n<li>Pont roulant monopoutre (pour usage int\u00e9rieur)<\/li>\n\n\n\n<li>Pont roulant \u00e0 double poutre (pour usage int\u00e9rieur)<\/li>\n\n\n\n<li>Chariot de pont roulant<\/li>\n\n\n\n<li>Chariot de grue \u00e0 portique<\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"Le calculateur de r\u00e9sistance statique au d\u00e9placement d&#39;une grue estime la force n\u00e9cessaire pour vaincre le frottement et la pente de la voie en conditions normales de d\u00e9placement. \u00c0 partir de la charge nominale et du poids propre de la grue, il v\u00e9rifie la compatibilit\u00e9 des moteurs et des variateurs avec le syst\u00e8me de d\u00e9placement. Les r\u00e9sultats obtenus facilitent le choix des moteurs, r\u00e9ducteurs et roues adapt\u00e9s. Ce calculateur permet \u00e9galement d&#39;\u00e9valuer le risque de patinage des roues. Sur les voies inclin\u00e9es, le calcul \u00e9value le risque de glissement de la grue apr\u00e8s l&#39;arr\u00eat, pr\u00e9venant ainsi l&#39;endommagement des roulements, le morsure des rails et les probl\u00e8mes li\u00e9s \u00e0 l&#39;installation.","protected":false},"author":8,"featured_media":17373,"parent":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"single-onlinetools.php","format":"standard","meta":{"_acf_changed":false,"rank_math_lock_modified_date":false,"pgc_sgb_lightbox_settings":"","footnotes":""},"categories":[1059],"tags":[],"class_list":["post-17375","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-online-tools"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.dgcrane.com\/fr\/wp-json\/wp\/v2\/posts\/17375"}],"collection":[{"href":"https:\/\/www.dgcrane.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dgcrane.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dgcrane.com\/fr\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dgcrane.com\/fr\/wp-json\/wp\/v2\/comments?post=17375"}],"version-history":[{"count":5,"href":"https:\/\/www.dgcrane.com\/fr\/wp-json\/wp\/v2\/posts\/17375\/revisions"}],"predecessor-version":[{"id":17380,"href":"https:\/\/www.dgcrane.com\/fr\/wp-json\/wp\/v2\/posts\/17375\/revisions\/17380"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dgcrane.com\/fr\/wp-json\/wp\/v2\/media\/17373"}],"wp:attachment":[{"href":"https:\/\/www.dgcrane.com\/fr\/wp-json\/wp\/v2\/media?parent=17375"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dgcrane.com\/fr\/wp-json\/wp\/v2\/categories?post=17375"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dgcrane.com\/fr\/wp-json\/wp\/v2\/tags?post=17375"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}