You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
2.4 KiB
95 lines
2.4 KiB
#include <stdio.h> |
|
#include <unistd.h> |
|
#include <string.h> |
|
#include <stdlib.h> |
|
#include <errno.h> |
|
#include <string.h> |
|
//包含Modbus相关头文件 |
|
#include <modbus.h> |
|
|
|
|
|
|
|
|
|
//Tcp模式下的Master端 |
|
int main(void) |
|
{ |
|
int ret = -1 ; |
|
|
|
//创建需要轮询的ip地址 和 port端口号 |
|
char ipArray[2][16] = { "192.168.1.231" , "192.168.1.231" } ; |
|
int portArray[2] = { 1502 , 1503 }; |
|
//创建读取数据的tab_registers数组 和 创将tab_input_registers的数组 |
|
uint16_t tab_registers[24] ; |
|
uint16_t tab_input_registers[134] ; |
|
|
|
//创建一个TCP类型的变量 并 使用for循环进行轮询 |
|
modbus_t* ctx[2] = { NULL , NULL } ; |
|
|
|
for(int i = 0 ; i < 2; i++) |
|
{ |
|
ctx[i] = modbus_new_tcp( ipArray[i] , portArray[i] ); |
|
if (NULL == ctx[i]) |
|
{ |
|
fprintf(stderr, "Error: %s\n", modbus_strerror(errno)); |
|
return 1; |
|
} |
|
else |
|
{ |
|
printf("设置TCP成功\n"); |
|
} |
|
|
|
|
|
//遍历 连接Server |
|
ret = modbus_connect(ctx[i]); |
|
if (-1 == ret) |
|
{ |
|
fprintf(stderr, "Connection failed: %s\n", modbus_strerror(errno)); |
|
modbus_free(ctx[i]); |
|
return 1; |
|
} |
|
} |
|
|
|
|
|
while(1) |
|
{ |
|
for(int i = 0 ; i < 2 ; i++) |
|
{ |
|
//清空缓存并读取数据 |
|
memset( tab_registers , 0 , sizeof(tab_registers) ) ; |
|
memset( tab_input_registers , 0 , sizeof(tab_input_registers) ) ; |
|
|
|
ret = modbus_read_registers(ctx[i] , 30000 , 24 , tab_registers); |
|
if( ret == -1 ) |
|
{ |
|
perror("read tab_registers error") ; |
|
printf("\n") ; |
|
fprintf( stderr , "read tab_registers error %s " , modbus_strerror(errno)); |
|
printf("\n") ; |
|
} |
|
|
|
ret = modbus_read_input_registers( ctx[i] , 40000 , 100 , tab_input_registers ) ; |
|
if( ret == -1) |
|
{ |
|
perror("read tab_input_registers error") ; |
|
printf("\n") ; |
|
fprintf( stderr , "read tab_input_registers error %s " , modbus_strerror(errno)) ; |
|
} |
|
|
|
printf("\n---------- IP is : %s ----------PORT is : %d----------\n" , ipArray[i] , portArray[i]) ; |
|
printf("\n===================================================================\n") ; |
|
printf("----------tab_registers value Array :----------\n") ; |
|
for( int i = 0 ; i < 24 ; i++ ) |
|
{ |
|
printf("%d\t" , tab_registers[i]) ; |
|
} |
|
printf("\n----------tab_input_registers value Array :----------\n") ; |
|
for( int i = 0 ; i < 135 ; i++) |
|
{ |
|
printf("%d\t" , tab_input_registers[i] ) ; |
|
} |
|
printf("\n===================================================================\n") ; |
|
sleep(1) ; |
|
} |
|
} |
|
return 0 ; |
|
}
|
|
|