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

  1. private void ReadOrder(string Add)
  2. {
  3. Byte[] sendData = new Byte[];
  4. sendData[] = 0x05; //ENQ
  5. sendData[] = 0x30; //站号
  6. sendData[] = 0x30;
  7. sendData[] = 0x46; //PC号
  8. sendData[] = 0x46;
  9. sendData[] = 0x57; //命令 “WR” 57 52
  10. sendData[] = 0x52;
  11. sendData[] = 0x30; //报文等待
  12. sendData[] = (byte)Convert.ToChar(Add[]); //起始软元件 “D0200”
  13. sendData[] = (byte)Convert.ToChar(Add[]);
  14. sendData[] = (byte)Convert.ToChar(Add[]);
  15. sendData[] = (byte)Convert.ToChar(Add[]);
  16. sendData[] = (byte)Convert.ToChar(Add[]);
  17. sendData[] = 0x30; //软元件点数 默认“01”
  18. sendData[] = 0x31;
  19. int allInt = ;
  20. for (int i = ; i <= ; i++)
  21. {
  22. allInt += (int)sendData[i]; //进行和校验
  23. }
  24. string allStrX = allInt.ToString("X"); //转换成十六进制
  25. sendData[] = (byte)Convert.ToChar(allStrX.Substring(allStrX.Length - , )); //提取十六进制倒数第二位的ASCII值
  26. sendData[] = (byte)Convert.ToChar(allStrX.Substring(allStrX.Length - , )); //提取十六进制倒数第一位的ASCII值
  27. sendData[] = 0x0D; //CR
  28. sendData[] = 0x0A; //LF
  29. this.PLC_SendData(sendData);
  30. }

读取命令

写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

  1. private void WriteOrder(string Add,string Con)
  2. {
  3. Byte[] sendData = new Byte[];
  4. sendData[] = 0x05; //ENQ
  5. sendData[] = 0x30; //站号
  6. sendData[] = 0x30;
  7. sendData[] = 0x46; //PC号
  8. sendData[] = 0x46;
  9. sendData[] = 0x57; //命令 “WR” 57 57
  10. sendData[] = 0x57;
  11. sendData[] = 0x30; //报文等待
  12. sendData[] = (byte)Convert.ToChar(Add[]); //起始软元件 “D0100”
  13. sendData[] = (byte)Convert.ToChar(Add[]);
  14. sendData[] = (byte)Convert.ToChar(Add[]);
  15. sendData[] = (byte)Convert.ToChar(Add[]);
  16. sendData[] = (byte)Convert.ToChar(Add[]);
  17. sendData[] = 0x30; //软元件点数 默认“01”
  18. sendData[] = 0x31;
  19. sendData[] = (byte)Convert.ToChar(Con[]); //内容 “0001”
  20. sendData[] = (byte)Convert.ToChar(Con[]);
  21. sendData[] = (byte)Convert.ToChar(Con[]);
  22. sendData[] = (byte)Convert.ToChar(Con[]);
  23. int allInt = ;
  24. for (int i = ; i <= ; i++)
  25. {
  26. allInt += (int)sendData[i]; //进行和校验
  27. }
  28. string allStrX = allInt.ToString("X"); //转换成十六进制
  29. sendData[] = (byte)Convert.ToChar(allStrX.Substring(allStrX.Length - , )); //提取十六进制倒数第二位的ASCII值
  30. sendData[] = (byte)Convert.ToChar(allStrX.Substring(allStrX.Length - , )); //提取十六进制倒数第一位的ASCII值
  31. sendData[] = 0x0D; //CR
  32. sendData[] = 0x0A; //LF
  33. this.PLC_SendData(sendData);
  34. }

写入命令

上位机与三菱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. 浏览器端使用javascript调用腾讯翻译api

    最近在学习的小玩意,发现腾讯的文档十分坑爹,里面有很多错误的指示. 不过腾讯的机器翻译还是很牛的,我觉得翻译水准比谷歌好很多. 腾讯的机器翻译貌似在试用阶段,不收费,用QQ或微信登录即可申请使用. 首 ...

  2. javascript+html5+canvse+3d俄罗斯方块

    javascript+html5+canvse+3d俄罗斯方块 必须使用支持html5的浏览器打开,比如firefox,chrome 得分:0速度:1000 // 你的浏览器不支持 <canva ...

  3. outlook 2013撤消已经发送的邮件

    使用Outlook 2013发送邮件的时候,发送后,发现邮件写错了或者其它原因需要撤消发送邮件,这里介绍一下.   工具/原料 outlook 2013 方法/步骤   需要打开已经发送的邮件   点 ...

  4. 基于STM8的IIC协议---STM8-第五章

    1. 综述 I2C(IIC,Inter-Integrated Circuit),两线式串行总线,由PHILIPS公司开发用于连接微控制器及其外围设备. 它是由数据线SDA和时钟SCL构成的串行总线,可 ...

  5. SYM File

    Structure  Programme header Section Symbol table Programme header An executable or shared object fil ...

  6. mybatis关于ORM的使用以及设计(三)[参数对象转换为SQL语言]

    上节分析了Mapper对象的创建. 在ORM的定义中可以理解为Object->SQLMapper抽象层(这一层并不负责具体的SQL执行.这一层可以理解为SQL代理层) 本节分析以下内容: ①Sq ...

  7. freemarker数据类型

    基本数据类型: 字符串 数字 布尔值 日期/时间 (日期,时间或日期时间) 数据结构: 哈希表 序列 注意一点:freemarker里面并没有对象这一数据类型!!!. 在freemarker中对象仅仅 ...

  8. 【摘】Oracle执行计划不走索引的原因总结

    感谢原博主 http://soft.chinabyte.com/database/364/12471864.shtml 在Oracle数据库操作中,为什么有时一个表的某个字段明明有索引,当观察一些语的 ...

  9. numpy学习笔记(四)

    (1)NumPy - 矩阵库 NumPy 包包含一个 Matrix库numpy.matlib.此模块的函数返回矩阵而不是返回ndarray对象. matlib.empty()返回一个新矩阵,而不初始化 ...

  10. ssh免密登陆配置

    目录 ssh免密登陆 在A工作站上输入 B服务器上输入 登陆 ssh初次登陆询问 1.单次取消 2.ansible中增加链接参数 3.修改ansible配置参数[推荐] 4.修改服务器上的ssh_co ...