我们知道MODBUS/TCP的访问端口一般默认为 502.但是在linux下开发时要注意502端口在默认状态下禁止应用软件使用。必须通过获得系统的修改权限方可以调用。
WWW_PLC※JS_COM-PmLC-技.术_网
例如:下面的程序WW.W_PLCJS_COM-PLC-技.术_网
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
int sockfd, i;WWcW_PLCJS_COM-PLC-技.术_网
struct sockaddr_in address;WW.W_PLCJS_COM-PLC-技.术_网
size_t addrlength = sizeof(struct sockaddr_in);P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
WWW_PLC※JS_COM-PmLC-技.术_网
if ( (sockfd = socket(PF_INET, SOCK_STREAM, 0)) < 0)WWW_PLCJS@_COM%-PLC-技.术_网
printf("error on socket\n");WWW.PLCJS.COM——可编程控制器技术门户
WWW.PLCJS.COM——可编程控制器技术门户
i = 1; WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &i, sizeof(i));WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
WWW.PLCJS.COM——可编程控制器技术门户
address.sin_family = AF_INET;WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
address.sin_port = htons(PORT_NUMBER);WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
memset(&address.sin_addr, 0, sizeof(address.sin_addr));——可——编——程——控-制-器-技——术——门——户
WWW_P※LCJS_CO※M-PLC-技-.术_网
if (bind(sockfd, (struct sockaddr *) &address, sizeof(address)))——可——编——程——控-制-器-技——术——门——户
printf("error on bind\n");WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
if (listen(sockfd, 5))WWcW_PLCJS_COM-PLC-技.术_网
printf("error on listen\n");WWW.PLCJS.COM——可编程控制器技术门户
——可——编——程——控-制-器-技——术——门——户
在开始编译执行时,提示错误:"error on bind". (with #define PORT_NUMBER 502) P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
WWW_PL※CJS_COM-PLC-技.术_网
如果我们把它定义为2233,那么就不会有问题,如: #define PORT_NUMBER 2233 WWW_PLC※JS_COM-PmLC-技.术_网
这是因为1024以下的端口都是系统保留端口,只有拥有id 0或者 CAP_NET_BIND_SERVICE 能使用它们进行通讯,WWW_PLCJS_COM-PLC-技.术_网
使用:RTFM capabilities(7): 后将会获得CAP_NET_BIND_SERVICE 权利。 WWW.PLCJS.COM——可编程控制器技术门户
以下是对《linux系统下进行modbusTCP开发的端口问题》的回复:
WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
匿名回复:
WWW_P※LCJS_CO※M-PLC-技-.术_网
请教:什么是MODIBUS TCP,与MODIBUS及TCP/IP有何区别!WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
3726810@163.com WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
匿名回复:P.L.C.技.术.网——可编程控制器技术门户
请教:什么是MODIBUS TCP,与MODIBUS及TCP/IP有何区别! WW.W_PLC※JS_C,OM-PL,C-技.术_网
匿名回复:WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
MODBUS TCP是modbus在以太网上的通讯方式,MODBUS支持RTU、ASCII、TCP/IP方式进行通讯。 WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
匿名回复:WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
我也来好好的学习一下新的东西,对我来说的 plcjs.技.术_网