C言語組み込みシステムによるmodbus TCP通信のサンプルコード

無料無料技术资料

这篇内容可直接阅读,适合用于基础学习和検索引流。

C言語組み込みシステムによるmodbus TCP通信のサンプルコード

#include stdio.h>
#include stdlib.h>
#string.hを含む
#errno.hを含む
#unistd.hを含む
#fcntl.hを含む
#include termios.h>
#include sys/socket.h>
#include netinet/in.h>
#include arpa/inet.h>

ポート50 2の定義

#ine_IP "192.168.0.100"
#define DEVICE_ID 1

#define BUFFER_SIZE 1024

int main {
    //TCPコネクションの作成
    int sockfd;
    構造体sockaddr_in server_addr;

    s = sAF_INET SOCK_0;
    if s == -1 {
        printf "Failed to create socket %s\n" strerror errno;
        リターン1;
    }

    server_addr.sin_family = AF_INET;
    server_addr.sin_port = htons PORT;
    server_._.s_=__IP;

    if connect sockfd struct sockaddr * server_addr sizeof server_addr = -1 {
        printf "Failed to connect to server %s\n" strerror errno;
        close sockfd;
        リターン1;
    }

    printf "Connected to server successfully.\n"nClose;

    //modbusリクエストの準備
    unsigned char request[BUFFER_SIZE];
    unsigned char response[BUFFER_SIZE];
    int request__;

    //リードホールドレジスタ
    int register_address = 0
    int register_count = 4;
    request_= mod_request request DEVICE_ID MODBUS_FC__HOING_ISTERS register_register_count;

    //modbusリクエストを送信
    if send srequest request_0 == -1 {
        printf "Failed to send request %s\n" strerror errno;
        close sockfd;
        リターン1;
    }

    printf "Sent request successfully.\ N 'N';

    //modbus応答の受信
    response_length = recv sockfd response BUFFER_SIZE 0;
    if_== -1 {
        printf "Failed to receive response %s\n" strerror errno;
        close sockfd;
        リターン1;
    }

    printf "Received response successfully.\ N 'N';

    //modbus応答を解析する
    int register_value = modbus_get_response_value response_length;

    printf "Register value %d\n" register_value;

    TCPコネクションを閉じる
    close sockfd;

    リターン0;
}

上記のサンプルコードは、modbusプロトコルのリードホールドレジスタ機能を使用して、TCPコネクションを介してリクエストを送信し、レスポンスを受信して解析し、最後にTCPコネクションを閉じます。コード内のSERVER_IPやDEVICE_IDなどのパラメータや、読み出したホールドレジスタのアドレスや数を実際の状況に合わせて変更できます。

#include stdio.h>
#include stdlib.h>
#string.hを含む
#errno.hを含む
#unistd.hを含む
#fcntl.hを含む
#include termios.h>
#include sys/socket.h>
#include netinet/in.h>
#include arpa/inet.h>

ポート50 2の定義

#ine_IP "192.168.0.100"
#define DEVICE_ID 1

#define BUFFER_SIZE 1024

int main {
    //TCPコネクションの作成
    int sockfd;
    構造体sockaddr_in server_addr;

    s = sAF_INET SOCK_0;
    if s == -1 {
        printf "Failed to create socket %s\n" strerror errno;
        リターン1;
    }

    server_addr.sin_family = AF_INET;
    server_addr.sin_port = htons PORT;
    server_._.s_=__IP;

    if connect sockfd struct sockaddr * server_addr sizeof server_addr = -1 {
        printf "Failed to connect to server %s\n" strerror errno;
        close sockfd;
        リターン1;
    }

    printf "Connected to server successfully.\n"nClose;

    //modbusリクエストの準備
    unsigned char request[BUFFER_SIZE];
    unsigned char response[BUFFER_SIZE];
    int request__;

    //リードホールドレジスタ
    int register_address = 0
    int register_count = 4;
    request_= mod_request request DEVICE_ID MODBUS_FC__HOING_ISTERS register_register_count;

    //modbusリクエストを送信
    if send srequest request_0 == -1 {
        printf "Failed to send request %s\n" strerror errno;
        close sockfd;
        リターン1;
    }

    printf "Sent request successfully.\ N 'N';

    //modbus応答の受信
    response_length = recv sockfd response BUFFER_SIZE 0;
    if_== -1 {
        printf "Failed to receive response %s\n" strerror errno;
        close sockfd;
        リターン1;
    }

    printf "Received response successfully.\ N 'N';

    //modbus応答を解析する
    int register_value = modbus_get_response_value response_length;

    printf "Register value %d\n" register_value;

    TCPコネクションを閉じる
    close sockfd;

    リターン0;
}
この資料を実際のプロジェクトに活用しませんか?

ツールセンターで電文解析、CRCチェック、デバイスデバッグを行うか、要件を送信して選定と接続のアドバイスを受けましょう。

エンジニア会員

この記事を実行可能なデバッグ資料に

登録すると、高度な電文解析、資料パックのダウンロード、コード例、エンジニアリングケース、優先技術サポートが利用可能に。実際のプロジェクト納品に最適です。

高度なツール無制限
資料パックとコードパック
完全なエンジニアリングケースライブラリ
優先技術サポート窓口

发表回复

あなたのメールアドレスアドレス不会被公开。 必須項目已用 * 标注