通过Socket套接字向施耐德PLC写数据
在前面的文章中简单介绍过通过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写数据相关推荐
- 三菱Q系列PLC编程TCP Socket套接字程序
三菱Q系列PLC编程TCP Socket套接字程序 用于和上位机通讯 支持掉线自动后自动重连 附详细注释和指令说明! 编号:969665940010231沉默物语
- day7 面向对象进阶、socket套接字
文章目录 1. 静态方法.类方法 1.1 静态方法 1.2 类方法 2. 属性方法 3. 类的一些成员方法 4. 反射 5. 异常处理 6. socket 套接字 1. 静态方法.类方法 1.1 静态 ...
- linux socket 套接字状态 EAGAIN EWOULDBLOCK EINTR 与非阻塞 简介
EWOULDBLOCK:用于非阻塞模式,不需要重新读或者写 EINTR:指操作被中断唤醒,需要重新读/写 在Linux环境下开发经常会碰到很多错误(设置errno),其中EAGAIN是其中比较常见的一 ...
- 三、初识Socket套接字结构体
一.初识Socket套接字结构体 1.通用套接字结构体类型 struct sockaddr{sa_family_t sa_family; //协议簇char sa_data[14]; //协议簇数据} ...
- 基于UDP协议的socket套接字编程 基于socketserver实现并发的socket编程
基于UDP协议 的socket套接字编程 1.UDP套接字简单示例 1.1服务端 import socketserver = socket.socket(socket.AF_INET,socket.S ...
- Python 技术篇-socket套接字实现两个窗口间消息传递实例演示,TCP实现
上一篇:Python 技术篇-socket 套接字实现服务器客户端消息传递,UDP 实现 本篇介绍用 TCP 来实现. socket 实现客户端服务器的消息传递有 TCP 和 UDP 两种方式. TC ...
- Python 技术篇-socket套接字实现服务器客户端消息传递实例演示,UDP实现
上一篇:Python 技术篇-socket 套接字实现两个窗口间消息传递,TCP 实现 本篇介绍用 UDP 来实现. socket 套接字实现服务器客户端消息传递有 UDP 和 TCP 两种形式.他们 ...
- java实现套接字网络编程_Java网络编程(一)Socket套接字
一.基础知识 1.TCP:传输控制协议. 2.UDP:用户数据报协议. 二.IP地址封装 1.InetAddress类的常用方法 getLocalHost() 返回本地主机的InetAddress对象 ...
- C语言socket bind()函数(为socket套接字关联了一个相应的地址与端口号)
#include <sys/socket.h>int bind(int socket, const struct sockaddr *address, socklen_t address_ ...
最新文章
- (转)如何修改maven的默认jdk版本
- 【Paper】论文中定义、定理、引理、证明分别的含义
- hdu 3094——A tree game
- 改善代码可读性的5种方法
- mysql 随机取不重复数据_随机生成不重复数字,想做Excel抽奖器你必须掌握!
- 智能优化算法应用:基于GWO优化的二维最大熵图像阈值分割 - 附代码
- 服务器如果选用CPU
- 电力系统技术导则_《电力系统安全稳定导则(征求意见稿)》发布
- c 语言dll源码查看,易语言DLL函数查看器源码
- 笨方法学Python 习题16
- Raspberry Pi (树莓派)折腾记之一
- udp端口转发 Linux,Linux下利用iptables快速实现UDP/TCP端口转发
- win7怎么关闭虚拟机服务器,为你win7系统彻底关闭退出vmware虚拟机的处理对策
- Lipschitz continuity (利普希茨连续)
- 一个智能省心的空空java代码生成平台上线了——前后端代码生成
- 为什么要做小程序?90%的商家不知道的好处!
- MLY -- 13.Error analysis:look at dev set examples to evaluate ideas
- 工具类:自动生成名字工具类
- 减法公式运算法则_小学数学加减乘除计算运算法则
- 熊猫阿波的故事(无顺序抽签问题)
热门文章
- 图解人工智能知识架构(从知识角度告诉你人工智能到底学些啥)
- Docker | 入门
- Spring: Spring依赖注入有哪几种方式?
- tigase-7.1.3集群搭建
- C语言实现地球自转参数更新
- android 输入ip地址,我应该使用什么android:inputType输入IP地址?
- 在Typora中永久插入图片
- 暨大计算机考研要求高不高,暨南大学考研难吗?一般要什么水平才可以进入?...
- MYIR-ZYNQ7000系列-zturn教程(23):DMA回环测试
- SpringBoot+Idea:工具栏Application Servers 消失