EasyManua.ls Logo

Omron CS1W-ETN11 - Page 121

Omron CS1W-ETN11
317 pages
To Next Page IconTo Next Page
To Next Page IconTo Next Page
To Previous Page IconTo Previous Page
To Previous Page IconTo Previous Page
Loading...
100
Sending Commands From a Host Computer Section 5-4
14 /*
15 *
FINS COMMUNICATIONS SAMPLE PROGRAM
16 */
17 main(argc,argv)
18 int argc;
19 char *argv[];
20 {
21 int sockfd;
22 struct sockaddr_in ws_addr,cs_addr;
23 char fins_cmnd[MAX_MSG],fins_resp[MAX_MSG];
24 int sendlen,recvlen,addrlen;
25 char sid=0;
26 extern recv_fail();
27
28 /*
GENERATE UDP SOCKET*/
29 if((sockfd=socket(AF_INET,SOCK_DGRAM,0))<<0)
30 err_exit(”can’t open datagram socket”);
31
32 /*
ALLOCATE IP ADDRESS AND PORT # TO SOCKET*/
33 bzero((char*)&ws_addr,sizeof(ws_addr));
34 ws_addr.sin_family=AF_INET;
35 ws_addr.sin_addr.s_addr=htonl(INADDR_ANY);
36 ws_addr.sin_port=htons(FINS_UDP_PORT);
37 if(bind(sockfd,(struct sockaddr*)&ws_addr,sizeof(ws_addr))<0)
38 err_exit(”can’t bind local address”);
39
40 /*
41 *
GENERATE MEMORY AREA READ COMMAND
42 *(READ 150 WORDS FROM D00100.)
43 /*
44 fins_cmnd[0]=0x80; /*ICF*/
45 fins_cmnd[1]=0x00; /*RSV*/
46 fins_cmnd[2]=0x02; /*GCT*/
47 fins_cmnd[3]=0x01; /*DNA*/
48 fins_cmnd[4]=0x64; /*DA1*/ /*
Ethernet Unit FINS NODE NUMBER*/
49 fins_cmnd[5]=0x00; /*DA2*/
50 fins_cmnd[6]=0x01; /*SNA*/
51 fins_cmnd[7]=0x32; /*SA1*/ /*
WS FINS NODE NUMBER*/
52 fins_cmnd[8]=0x00; /*SA2*/
53 fins_cmnd[9]=++sid; /*SID*/
54 fins_cmnd[10]=0x01; /*MRC*/
55 fins_cmnd[11]=0x01; /*SRC*/
56 fins_cmnd[12]=0x82; /*
VARIABLE TYPE: DM*/
57 fins_cmnd[13]=0x00; /*
READ START ADDRESS: 100*/
58 fins_cmnd[14]=0x64;
59 fins_cmnd[15]=0x00;
60 fins_cmnd[16]=0x00; /*
WORDS READ: 150*/
61 fins_cmnd[17]=0x96;
62
63
64 /*
SEND FINS COMMAND*/
65 bzero((char*)&cs_addr,sizeof(cs_addr));
66 cs_addr.sin_family=AF_INET;
67 cs_addr.sin_addr.s_addr=inet_addr(SERV_IP_ADDR);
68 cs_addr.sin_port=htons(FINS_UDP_PORT);
69
70 signal(SIGALRM,recv_fail);
71
72 CMND_SEND:
73 sendlen = 18;
74 if(sendto(sockfd,fins_cmnd,sendlen,0,&cs_addr,sizeof(cs_addr))
==sendlen){
75 alarm(RESP_TIMEOUT); /*
START RESPONSE MONITOR TIMER*/
76 printf(”send length %d¥n”,sendlen);

Table of Contents

Related product manuals