在前面的文章中简单介绍过通过Socket套接字读取PLC中的数据,并解析出获取的数据。下面将介绍通过Socket套接字向施耐德PLC中写数据的方法(其实大同小异,只是功能码稍有不同)。

下面测试的是通过Socket套接字应用06功能码写单个保持寄存器的方法

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Windows.Forms;

namespace CXFW
{
    public partial class Form1 : Form
    {
        public System.Threading.Timer timertx1;
        public Form1()
        {
            InitializeComponent();
        }

private void Form1_Load(object sender, EventArgs e)
        {
            TimerCallback callback = new TimerCallback(this.check);
            timertx1 = new System.Threading.Timer(callback, null, 1000, 1000);
            
        }
         private void check(object state)
        {
            byte[] ww = BitConverter.GetBytes(Convert.ToSingle(80.9));
            byte a1 = ww[0];
            byte a2 = ww[1];
            byte a3 = ww[2];
            byte a4 = ww[3];

timertx1.Change(Timeout.Infinite, Timeout.Infinite);
            byte[] bytOut1 = new byte[12];
            bytOut1[0] = 0X00;
            bytOut1[1] = 0X00;
            bytOut1[2] = 0X00;
            bytOut1[3] = 0X00;
            bytOut1[4] = 0X00;
            bytOut1[5] = 0X06;
            bytOut1[6] = 0X01;
            bytOut1[7] = 0X06;
            bytOut1[8] = 0X0F;
            bytOut1[9] = 0XA1;
            bytOut1[10] = a2;
            bytOut1[11] = a1;

byte[] bytOut2 = new byte[12];
            bytOut2[0] = 0X00;
            bytOut2[1] = 0X00;
            bytOut2[2] = 0X00;
            bytOut2[3] = 0X00;
            bytOut2[4] = 0X00;
            bytOut2[5] = 0X06;
            bytOut2[6] = 0X01;
            bytOut2[7] = 0X06;
            bytOut2[8] = 0X0F;
            bytOut2[9] = 0XA2;
            bytOut2[10] = a4;
            bytOut2[11] = a3;
            string host = "200.0.0.81";
            int port = 502;
            IPAddress ip = IPAddress.Parse(host);//
            //组合出远程终结点
            IPEndPoint hostEP = new IPEndPoint(ip, port);
            //创建Socket 实例
            Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            socket.SendTimeout = 1000;
            socket.ReceiveTimeout = 2000;
            try
            {
                //尝试连接
                socket.Connect(hostEP); //建立与远程主机的联接
            }
            catch (Exception se)
            {

}
            if (socket.Connected == true)
            {
                socket.Send(bytOut1, 12,0);
            }
           
            Thread.Sleep(800);

if (socket.Connected == true)
            {
                socket.Send(bytOut2,  12, 0);
            }

Thread.Sleep(800);

try
            {
                 socket.Shutdown(SocketShutdown.Both);
                 socket.Close();
            }
            catch (Exception)
            {
                
            }
            timertx1.Change(1000, 1000);

}
    }
}

通过Socket套接字向施耐德PLC写数据相关推荐

  1. 三菱Q系列PLC编程TCP Socket套接字程序

    三菱Q系列PLC编程TCP Socket套接字程序 用于和上位机通讯 支持掉线自动后自动重连 附详细注释和指令说明! 编号:969665940010231沉默物语

  2. day7 面向对象进阶、socket套接字

    文章目录 1. 静态方法.类方法 1.1 静态方法 1.2 类方法 2. 属性方法 3. 类的一些成员方法 4. 反射 5. 异常处理 6. socket 套接字 1. 静态方法.类方法 1.1 静态 ...

  3. linux socket 套接字状态 EAGAIN EWOULDBLOCK EINTR 与非阻塞 简介

    EWOULDBLOCK:用于非阻塞模式,不需要重新读或者写 EINTR:指操作被中断唤醒,需要重新读/写 在Linux环境下开发经常会碰到很多错误(设置errno),其中EAGAIN是其中比较常见的一 ...

  4. 三、初识Socket套接字结构体

    一.初识Socket套接字结构体 1.通用套接字结构体类型 struct sockaddr{sa_family_t sa_family; //协议簇char sa_data[14]; //协议簇数据} ...

  5. 基于UDP协议的socket套接字编程 基于socketserver实现并发的socket编程

    基于UDP协议 的socket套接字编程 1.UDP套接字简单示例 1.1服务端 import socketserver = socket.socket(socket.AF_INET,socket.S ...

  6. Python 技术篇-socket套接字实现两个窗口间消息传递实例演示,TCP实现

    上一篇:Python 技术篇-socket 套接字实现服务器客户端消息传递,UDP 实现 本篇介绍用 TCP 来实现. socket 实现客户端服务器的消息传递有 TCP 和 UDP 两种方式. TC ...

  7. Python 技术篇-socket套接字实现服务器客户端消息传递实例演示,UDP实现

    上一篇:Python 技术篇-socket 套接字实现两个窗口间消息传递,TCP 实现 本篇介绍用 UDP 来实现. socket 套接字实现服务器客户端消息传递有 UDP 和 TCP 两种形式.他们 ...

  8. java实现套接字网络编程_Java网络编程(一)Socket套接字

    一.基础知识 1.TCP:传输控制协议. 2.UDP:用户数据报协议. 二.IP地址封装 1.InetAddress类的常用方法 getLocalHost() 返回本地主机的InetAddress对象 ...

  9. C语言socket bind()函数(为socket套接字关联了一个相应的地址与端口号)

    #include <sys/socket.h>int bind(int socket, const struct sockaddr *address, socklen_t address_ ...

最新文章

  1. (转)如何修改maven的默认jdk版本
  2. 【Paper】论文中定义、定理、引理、证明分别的含义
  3. hdu 3094——A tree game
  4. 改善代码可读性的5种方法
  5. mysql 随机取不重复数据_随机生成不重复数字,想做Excel抽奖器你必须掌握!
  6. 智能优化算法应用:基于GWO优化的二维最大熵图像阈值分割 - 附代码
  7. 服务器如果选用CPU
  8. 电力系统技术导则_《电力系统安全稳定导则(征求意见稿)》发布
  9. c 语言dll源码查看,易语言DLL函数查看器源码
  10. 笨方法学Python 习题16
  11. Raspberry Pi (树莓派)折腾记之一
  12. udp端口转发 Linux,Linux下利用iptables快速实现UDP/TCP端口转发
  13. win7怎么关闭虚拟机服务器,为你win7系统彻底关闭退出vmware虚拟机的处理对策
  14. Lipschitz continuity (利普希茨连续)
  15. 一个智能省心的空空java代码生成平台上线了——前后端代码生成
  16. 为什么要做小程序?90%的商家不知道的好处!
  17. MLY -- 13.Error analysis:look at dev set examples to evaluate ideas
  18. 工具类:自动生成名字工具类
  19. 减法公式运算法则_小学数学加减乘除计算运算法则
  20. 熊猫阿波的故事(无顺序抽签问题)

热门文章

  1. 图解人工智能知识架构(从知识角度告诉你人工智能到底学些啥)
  2. Docker | 入门
  3. Spring: Spring依赖注入有哪几种方式?
  4. tigase-7.1.3集群搭建
  5. C语言实现地球自转参数更新
  6. android 输入ip地址,我应该使用什么android:inputType输入IP地址?
  7. 在Typora中永久插入图片
  8. 暨大计算机考研要求高不高,暨南大学考研难吗?一般要什么水平才可以进入?...
  9. MYIR-ZYNQ7000系列-zturn教程(23):DMA回环测试
  10. SpringBoot+Idea:工具栏Application Servers 消失