PLC侧设置:

和校验+协议4

读D200单字: 05 30 30 46 46 57 52 30 44 30 32 30 30 30 31     返回“201”:02 30 30 46 46 30 30 43 39 03

         private void ReadOrder(string Add)
{
Byte[] sendData = new Byte[];
sendData[] = 0x05; //ENQ
sendData[] = 0x30; //站号
sendData[] = 0x30;
sendData[] = 0x46; //PC号
sendData[] = 0x46;
sendData[] = 0x57; //命令 “WR” 57 52
sendData[] = 0x52;
sendData[] = 0x30; //报文等待
sendData[] = (byte)Convert.ToChar(Add[]); //起始软元件 “D0200”
sendData[] = (byte)Convert.ToChar(Add[]);
sendData[] = (byte)Convert.ToChar(Add[]);
sendData[] = (byte)Convert.ToChar(Add[]);
sendData[] = (byte)Convert.ToChar(Add[]);
sendData[] = 0x30; //软元件点数 默认“01”
sendData[] = 0x31;
int allInt = ;
for (int i = ; i <= ; i++)
{
allInt += (int)sendData[i]; //进行和校验
}
string allStrX = allInt.ToString("X"); //转换成十六进制
sendData[] = (byte)Convert.ToChar(allStrX.Substring(allStrX.Length - , )); //提取十六进制倒数第二位的ASCII值
sendData[] = (byte)Convert.ToChar(allStrX.Substring(allStrX.Length - , )); //提取十六进制倒数第一位的ASCII值
sendData[] = 0x0D; //CR
sendData[] = 0x0A; //LF
this.PLC_SendData(sendData);
}

读取命令

写1到D100: 05 30 30 46 46 57 57 30 44 30 31 30 30 30 31 30 30 30 31    返回:06 30 30 46 46

         private void WriteOrder(string Add,string Con)
{
Byte[] sendData = new Byte[];
sendData[] = 0x05; //ENQ
sendData[] = 0x30; //站号
sendData[] = 0x30;
sendData[] = 0x46; //PC号
sendData[] = 0x46;
sendData[] = 0x57; //命令 “WR” 57 57
sendData[] = 0x57;
sendData[] = 0x30; //报文等待
sendData[] = (byte)Convert.ToChar(Add[]); //起始软元件 “D0100”
sendData[] = (byte)Convert.ToChar(Add[]);
sendData[] = (byte)Convert.ToChar(Add[]);
sendData[] = (byte)Convert.ToChar(Add[]);
sendData[] = (byte)Convert.ToChar(Add[]);
sendData[] = 0x30; //软元件点数 默认“01”
sendData[] = 0x31;
sendData[] = (byte)Convert.ToChar(Con[]); //内容 “0001”
sendData[] = (byte)Convert.ToChar(Con[]);
sendData[] = (byte)Convert.ToChar(Con[]);
sendData[] = (byte)Convert.ToChar(Con[]);
int allInt = ;
for (int i = ; i <= ; i++)
{
allInt += (int)sendData[i]; //进行和校验
}
string allStrX = allInt.ToString("X"); //转换成十六进制
sendData[] = (byte)Convert.ToChar(allStrX.Substring(allStrX.Length - , )); //提取十六进制倒数第二位的ASCII值
sendData[] = (byte)Convert.ToChar(allStrX.Substring(allStrX.Length - , )); //提取十六进制倒数第一位的ASCII值
sendData[] = 0x0D; //CR
sendData[] = 0x0A; //LF
this.PLC_SendData(sendData);
}

写入命令

上位机与三菱FX3U通过FX-232-BD通信的更多相关文章

  1. c#上位机与三菱PLC(FX3U)串口通讯

    项目中会经常用到上位机与PLC之间的串口通信,本文介绍一下C#如何编写上位机代码 与三菱FX3U进行通讯 1. 第一种方法是自己写代码实现,主要代码如下: //对PLC的Y7进行置1 byte[] Y ...

  2. 上位机开发之三菱FX3U以太网通信实践

    上次跟大家介绍了一下上位机与三菱Q系列PLC通信的案例,大家可以通过点击这篇文章:上位机开发之三菱Q系列PLC通信实践(←戳这里) 今天以三菱FX3U PLC为例,跟大家介绍一下,如何实现上位机与其之 ...

  3. 上位机开发之西门子PLC-S7通信实践

    写在前面: 就目前而言,在中国的工控市场上,西门子仍然占了很大的份额,因此对于上位机开发而言,经常会存在需要与西门子PLC进行通信的情况.然后对于西门子PLC来说,通信方式有很多,下面简单列举一下: ...

  4. 上位机开发之三菱Q系列PLC通信实践

    经常关注我们公众号或者公开课的学员(如果还没有关注的话,左上角点击一波关注)应该知道,我们会经常使用西门子PLC,其实对于其他品牌的PLC,我们都会讲到,包括三菱.欧姆龙.基恩士.松下及国产台达.信捷 ...

  5. 多个rs485设备怎样跟上位机通讯?

    http://bbs.hcbbs.com/thread-819457-1-1.html 多个rs485设备怎样跟上位机通讯? [复制链接] |关注本帖     fdemeng 签到天数: 1228 天 ...

  6. 【精讲版】上位机C#/.NET与西门子PLC通信

    618来啦 亲们,腾讯课堂101机构打榜了,快来助力<新阁教育>,<免费赠送课程>! 1.手机QQ(微信请也来一遍)扫下方二维码↓,找到<新阁教育> 2.点击“支持 ...

  7. 上位机面试必备——TCP通信灵魂二十问【上】

    关注公众号获取更多干货 TCP通信协议应该是上位机开发中应用最广泛的协议,无论是西门子S7协议.三菱MC协议或者是欧姆龙的Fins-TCP协议等,都是TCP通信协议的典型应用.很多人在上位机面试时,都 ...

  8. C#做上位机软件——绘图并传输给下位机

    拿到任务之后首先分成了几个部分: 1.绘图.学习了GDI+ 2.图片保存. 3.将图片转换成byte[].由于使用Socket通信,只能传输byte[]数据,所以这一步是向下位机传输的关键. 相应地, ...

  9. QT编写上位机程序一定要初始化变量以及谨慎操作指针

    背景: 在编写QT上位机界面时,界面在运行的时候经常出现卡死或者直接挂掉的怪现象. 正文: 上位机有个函数为check_receive():该函数的作用为定时调用循环检测USB是否有数据.若有,则将信 ...

随机推荐

  1. Ignite(二): 架构及工具

    1.集群和部署 Ignite集群基于无共享架构,所有的集群节点都是平等的,独立的,整个集群不存在单点故障. 通过灵活的Discovery SPI组件,Ignite节点可以自动地发现对方,因此只要需要, ...

  2. Stripes视图框架与Struts2之间的比较

    https://blog.csdn.net/boonya/article/details/14227149 Stripes视图框架与Struts2的行为很相似,所以在这里做一个简要的对比,发现它们的优 ...

  3. DOM知识点总结

    今天简单整理了一下js三部曲之DOM部分的内容,二话不说先上笔记: 1.什么是DOM? Document Object Model,即文档对象模型,它是让JavaScript能够操作html和xml的 ...

  4. HTML prefetch 预加载无效的记录

    在link中新增: <link rel="prefetch" href="/view/search.html" /> 预加载会将内容缓存到浏览器, ...

  5. .net 多线程临时变量

    结果 : 5 5 5 5 5 结果:0 1 2 3 4

  6. Python基础之re模块

    什么是模块? 为了编写可维护的代码,我们把很多的函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式,在Python中,一个.py文件就称为一个模块 ...

  7. 复习python(条件判断、循环、字符串格式化)

    1.条件判断: 只有一种 if: *** elif:#多个条件加elif,想加几个加几个 **** else: **** python里靠缩进来表示表示语句块,见到冒号,下行就要缩进 2.循环 两种, ...

  8. 使用yum安装 gdb/g++等软件包

    报错: Cannot find a valid baseurl for repo: base/7/x86_6 解决方法: 方法一. 1.打开 vi /etc/sysconfig/network-scr ...

  9. Cesium学习网址

    不错的案例介绍: 根据地形瓦片直接绘制高程.坡度及等高线 同一场景下显示两个不同的瓦片图层 https://cloud.tencent.com/developer/article/1113355 绘制 ...

  10. DRF 认证、权限、限制

    DRF 认证.权限.限制   认证: 定义一个用户表和一个保存用户的Token表 # ======================day96======================= class ...