如何用C#往PLC某个端口写数据
我用C#基于SOCKET写了个接口程序,能够实现电脑与电脑间的通信,但往PLC中写数据时,电脑端显示写信息成功,但PLC端接不到数据,为什么呢?我的写数据的代码如下: 
 建立连接: 
 public         Socket   ConnectServer(      )    
 { 
 	Socket   s   =   null; 
 	string   errmessage;          
 	try    
 	      { 
 	            IPAddress   ipAddress   =   IPAddress.Parse   (   ip_address   ); 
 	            IPEndPoint   ipEndPoint   =   new   IPEndPoint   (   ipAddress,port_num   ); 
 	s   =   new   Socket   (   ipEndPoint.AddressFamily      ,SocketType.Stream   ,ProtocolType.Tcp   ); 
 				s.Connect   (   ipEndPoint   ); 
 				if   (   s.Connected==   false   )    
 				{ 
 					s   =   null; 
 				} 
 			} 
 			catch   (   Exception   e   )   {      errmessage   =   e.Message   ;	} 
 			return   s;    			 
 		}   
 往端口写数据: 
 socket.Send   (buffer,sndLen   ,left   ,SocketFlags.None   );   
------解决方案--------------------PLC不都用梯型图么.楼主用C#怎么能运行在PLC上
------解决方案--------------------发送的格式是否有错,不同品牌好象不样的哈,我给你一个参考:   
 UdpClient PLCUdpClient = new UdpClient();//PLC的UDP连接 
 ///  <param name= "open "> 电源开关,1为开,0为关 </param>  
 public void OpenPower(int open, string addr) 
 { 
     Fins_Send[0] = 128;//&H80; 
     Fins_Send[1] = 0;// &H0;系统保留 
     Fins_Send[2] = 2;// &H2;允许的网关数 
     Fins_Send[3] = 0;// &H0;远程Fins网络地址 
     Fins_Send[4] = (byte)PLCnod;//远程Fins节点地址31 
     Fins_Send[5] = 0;// &H0;远程ETN单元地址2 
     Fins_Send[6] = 0;// &H0;本地网络号2 
     Fins_Send[7] = (byte)LocNod;// &H20;本地网络节点号32 
     Fins_Send[8] = 3;// &H3;本地网络单元号 17 
     Fins_Send[9] = 170;//&HAA;service ID 
     //设置Fins命令 
     Fins_Send[10] = 1;// &H1;  // 写内存命令 
     Fins_Send[11] = 2;// &H2;  // SRC 
     //设置Fins参数 
     Fins_Send[12] = 128;// &H80;  //变量区命令DM 82,CIO 80   
     string addr_ciostr = Convert.ToString(Convert.ToInt32(addr), 16).PadLeft(4,  '0 '); 
     Fins_Send[13] = Convert.ToByte(addr_ciostr.Substring(0, 2), 16); // 写DM区开始地址为DM00 
     Fins_Send[14] = Convert.ToByte(addr_ciostr.Substring(2, 2), 16);   
     Fins_Send[15] = 0;// &H0; 
     Fins_Send[16] = 0;// &H0;  //写1个字 
     Fins_Send[17] = 1;// &H1; 
     Fins_Send[18] = 0;// &H0; 
     Fins_Send[19] = (byte)open;// &H1为开,&H0为关   
     IPEndPoint PLCIPEndPoint = new IPEndPoint(IPAddress.Parse(PLCIP), PLCPort);//PLC控制器IP和端口初始化 
     PLCUdpClient.Send(Fins_Send, Fins_Send.Length, PLCIPEndPoint);//向PLC控制器发送命令 
 }   
 立即成为编程经验丰富的程序员不是梦,详见:http://www.psec.net.cn
------解决方案--------------------mark   
 学习
------解决方案--------------------感觉在.net上套字总是会有漏的.   
 观摩学习
------解决方案--------------------UP
------解决方案--------------------呵呵,直接看也能看出是数据类型吧 
 private byte[] Fins_Send = new byte[20]; //定义一字节数组存储发往下位PLC的Fins命令格式   
 轻松编程:http://www.psec.net.cn
------解决方案--------------------需要有指令性格式 
------解决方案--------------------