#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応答をParseする
int register_value = modbus_get_response_value response_length;
printf "Register value %d\n" register_value;
TCPコネクションを閉じる
close sockfd;
リターン0;
}上記のサンプルコードは、modbusプロトコルのリードホールドレジスタ機能を使用して、TCPコネクションを介してリクエストを送信し、レスポンスを受信してParseし、最後に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応答をParseする
int register_value = modbus_get_response_value response_length;
printf "Register value %d\n" register_value;
TCPコネクションを閉じる
close sockfd;
リターン0;
}
Leave a Reply