TCP/IP ਕੁਨੈਕਸ਼ਨ ਨਾਲ Qt ਮੋਡਬੱਸ

ਇਸ ਬਲੌਗ ਵਿੱਚ, ਮੈਂ TCP/IP ਉੱਤੇ ਮੋਡਬੱਸ ਕੁਨੈਕਸ਼ਨ ਦੀ ਉਦਾਹਰਨ ਵਜੋਂ ਇੱਕ ਛੋਟੀ Qt Quick ਐਪਲੀਕੇਸ਼ਨ (qml) ਪ੍ਰਦਾਨ ਕਰਨਾ ਚਾਹੁੰਦਾ ਹਾਂ।
Qt ਉਦਾਹਰਨਾਂ ਵਿੱਚ, ਮੈਨੂੰ Modbus ਕੁਨੈਕਸ਼ਨਾਂ ਲਈ QWidget ਉਦਾਹਰਨਾਂ ਹੀ ਮਿਲੀਆਂ ਹਨ, ਅਤੇ ਹਾਲ ਹੀ ਵਿੱਚ ਇਸ ਦੇ ਲਈ Qt Quick ਐਪਲੀਕੇਸ਼ਨ ਬਣਾਉਣ ਤੋਂ ਬਾਅਦ, ਮੈਂ ਇੱਕ ਉਦਾਹਰਨ ਦੇ ਤੌਰ ਤੇ ਇਸਦਾ ਇੱਕ ਪਤਲਾ-ਡਾਊਨ ਸੰਸਕਰਣ ਪ੍ਰਦਾਨ ਕਰਨਾ ਚਾਹੁੰਦਾ ਹਾਂ।

ਪ੍ਰਯੋਗਸ਼ਾਲਾ

ਐਪਲੀਕੇਸ਼ਨ ਦੀ ਜਾਂਚ ਕਰਨ ਦੇ ਯੋਗ ਹੋਣ ਲਈ, ਤੁਹਾਨੂੰ ਇੱਕ Modbus ਸਰਵਰ ਜਾਂ ਇੱਕ ਪ੍ਰੋਗਰਾਮ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ ਜੋ ਅਜਿਹੇ ਸਰਵਰ ਦੀ "ਨਕਲ" ਕਰਦਾ ਹੈ। ਮੈਂ ਇਸ ਦੇ ਲਈ http://www.apphugs.com/modbus-server.html ਤੋਂ "Modbus Server Pro" ਦੀ ਵਰਤੋਂ ਕੀਤੀ। ਇਹ ਤੁਹਾਨੂੰ ਲੋੜੀਂਦੇ ਸਾਰੇ ਦ੍ਰਿਸ਼ਾਂ ਨੂੰ ਚਲਾਉਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ।

Qt ਐਪਲੀਕੇਸ਼ਨ

ਸਭ ਤੋਂ ਪਹਿਲਾਂ: ਕਿਉਂਕਿ ਇੱਥੇ ਸਾਰੇ ਕੋਡ ਨੂੰ ਪੋਸਟ ਕਰਨਾ ਬਹੁਤ ਦੂਰ ਜਾਵੇਗਾ, ਇਸ ਲਈ ਮੈਂ ਪੂਰਾ ਕੋਡ ਇੱਕ ਜ਼ਿਪ ਫਾਈਲ ਦੇ ਰੂਪ ਵਿੱਚ ਪ੍ਰਦਾਨ ਕਰਾਂਗਾ (ਹੇਠਾਂ ਦੇਖੋ)।

ਸੈਟਿੰਗ

ਸਭ ਤੋਂ ਪਹਿਲਾਂ, ਮੈਂ ਇੱਕ ਸਧਾਰਨ ਸੈਟਿੰਗਡਾਇਲਾਗ ਕਲਾਸ ਬਣਾਈ ਹੈ ਜਿਸ ਵਿੱਚ ਕਨੈਕਸ਼ਨ ਵਿਕਲਪ ਸ਼ਾਮਲ ਹਨ। ਸਰਲੀਕ੍ਰਿਤ ਉਦਾਹਰਨ ਵਿੱਚ, ਇਹ ਸਿਰਫ਼ "modbusServerUrl", "responseTime" ਅਤੇ "numberOfRetries" ਹੈ।

    struct Settings {
        QString modbusServerUrl = "192.168.2.86:1502";
        int responseTime = 1000;
        int numberOfRetries = 3;
    };

ਇਹ ਅਹੁਦੇ - ਮੇਰੇ ਖ਼ਿਆਲ ਵਿਚ - ਸਵੈ-ਵਿਆਖਿਆਤਮਕ ਹਨ।

  • modbusServerUrl = TCP/IP ਨੰਬਰ ਦੇ ਨਾਲ-ਨਾਲ Modbus ਸਰਵਰ ਪੋਰਟ, ਜਿਵੇਂ ਕਿ 192.168. 2. 86:502
  • responseTime = ms ਵਿੱਚ ਵੱਧ ਤੋਂ ਵੱਧ ਸਮਾਂ ਜਿਸ ਵਿੱਚ ਸਰਵਰ ਤੋਂ ਜਵਾਬ ਦੀ ਉਡੀਕ ਕੀਤੀ ਜਾਂਦੀ ਹੈ
  • NumberOfRetries = ਅਸਫਲ ਕੋਸ਼ਿਸ਼ਾਂ ਦੀ ਸੰਖਿਆ ਜਿਨ੍ਹਾਂ ਨੂੰ ਸਵੀਕਾਰ ਕੀਤਾ ਜਾਵੇਗਾ।

ਐਪਲੀਕੇਸ਼ਨName

onConnectButtonClicked ()

onConnectButtonClicked() ਫੰਕਸ਼ਨ ਸੈਟਿੰਗ ਫਾਇਲ ਤੋਂ ਕੁਨੈਕਸ਼ਨ ਡਾਟਾ ਪੜ੍ਹਦਾ ਹੈ ਅਤੇ Modbus ਸਰਵਰ ਨਾਲ ਕੁਨੈਕਸ਼ਨ ਸਥਾਪਿਤ ਕਰਦਾ ਹੈ।

onReadButtonClicked ()

onReadButtonClicked () ਨਾਲ ਵੱਖ-ਵੱਖ readRequests ਫਿਰ ਸ਼ੁਰੂ ਕੀਤੇ ਜਾਂਦੇ ਹਨ ਅਤੇ ਸੰਬੰਧਿਤ ਰਜਿਸਟਰਾਂ ਨੂੰ ਮੋਡਬੱਸ ਸਰਵਰ ਤੋਂ ਪੜ੍ਹਿਆ ਜਾਂਦਾ ਹੈ। ਵਾਪਸ ਕੀਤੇ ਗਏ ਮੁੱਲਾਂ ਨੂੰ qml ਨੂੰ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ ਜਿਵੇਂ ਕਿ ਈਮਿਟ ਸਿਗਨਲਾਂ ਰਾਹੀਂ Q_PROPERTY ਜਾਂਦਾ ਹੈ ਅਤੇ ਉਪਭੋਗਤਾ ਇੰਟਰਫੇਸ ਵਿੱਚ ਅੱਪਡੇਟ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।

ਲਿਖਣ ਫੰਕਸ਼ਨ

WriteButtonClicked (int writeregister) ਉੱਤੇ ਫੰਕਸ਼ਨ ਨੂੰ Modbus ਸਰਵਰ ਰਜਿਸਟਰਾਂ ਨੂੰ ਲਿਖਣ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। ਇੱਥੇ ਇਹ ਕਲਪਨਾ ਕੀਤੀ ਗਈ ਹੈ ਕਿ ਮੋਡਬੱਸ ਸਰਵਰ 'ਤੇ ਵੱਖ-ਵੱਖ ਰਜਿਸਟਰਾਂ ਨੂੰ ਵੇਰੀਏਬਲ "ਰਾਈਟਰੇਗਿਸਟਰ" ਰਾਹੀਂ ਲਿਖਿਆ ਜਾ ਸਕਦਾ ਹੈ।

ਤੁਸੀਂ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਇੱਥੇ ix-modbus-tcp-example.zip ਡਾਊਨਲੋਡ ਕਰ ਸਕਦੇ ਹੋ।