上位链路通信功能

  • 序言
  • 环境
  • 功能实现原理
  • 源码
  • 命令的编码问题

序言

老实说,对于这些设备通信的,只有没写过的才会觉得无从下手和难,一旦了解了,也就那么一回事而已。本来想写一些TCP/UDP的功能,但是奈何这类太多了,写了没意思。

环境

Android
Qt5.12——armeabi-v7a
KV-EP21V——EtherNet/IP 单元
注:该功能实现可跨平台,只要与EtherNet/IP 单元处于同一局域网下即可。

功能实现原理

在终端(PC)创建通信程序,然后终端(PC)通过以太网向KV-EP21V发送命令,并通过以太网接收EtherNet/IP单元返回的响应,这样可读写CPU单元的数据、监控其运行状态。
通信时,PLC(包括EtherNet/IP单元)为服务器,PC等终端为客户端。服务器从客户端接收命令,并自动向客户端返回响应。
上位链路通信支持TCP/IP和UDP/IP两种通信协议。

通俗来说,就算Qt上设个TCP/UDP客户端,连接EtherNet/IP 单元自带的TCP/UDP服务器即可,本文以TCP连接为例。

IP地址需要自行察看,但默认192.168.0.10,端口号默认8501

源码

//carData是我写的类似d指针的东西,不清楚d指针的可以只看其属性即可。carData.networkIP = QHostAddress("192.168.0.10");
carData.networkPort = 8501;
carData.networkTcpSocket.connectToHost(carData.networkIP,carData.networkPort);
connect( &carData.networkTcpSocket, &QTcpSocket::connected, this, &WindowDialog::connectSuccessDisplay, Qt::UniqueConnection);
connect( &carData.networkTcpSocket, &QTcpSocket::disconnected, this, &WindowDialog::connectErrorDisplay, Qt::UniqueConnection);
connect( &carData.networkTcpSocket, &QTcpSocket::readyRead, this, &WindowDialog::plcInforFeedback, Qt::UniqueConnection);void WindowDialog::connectSuccessDisplay()
{...
}void WindowDialog::connectErrorDisplay()
{...
}void WindowDialog::plcInforFeedback()
{QByteArray feedbackInfor = carData.networkTcpSocket.readAll();        //读取...反馈的信息处理...
}void WindowDialog::readValue()
{QString JOGPlusFeedbackString = "RD DM5012\r";carData.networkTcpSocket.write( JOGPlusFeedbackString.toUtf8());  //写入
}

值得注意的是,发送命令给EtherNet/IP 单元时,要知道EtherNet/IP 单元只识别ASCII码,其他编码的命令会强行当ASCII码来识别。

所以要将QString的命令转化为UTF-8再发送过去,有人可能有些疑惑,我来解释下。

命令的编码问题

QString内部是以Unicode编码存储,Unicode以2个字节表示一个字符,而ASCII码以1个字节表示一个字符。

当写好的命令交以Unicode表示,并以ASCII码接受,那么这接受的编码命令应该是词不达意的。

UTF-8编码是“可变长编码”,以1-4个字节表示一个字符,其中单个字符时,字节第一位是0,后面为表示字符的二进制。

在这种情况下,常规ASCII码的表示范围就刚好符合UTF-8。

Qt 基恩士PLC EtherNet/IP 单元上位链路通信功能TCP实现相关推荐

  1. 基于Ethernet KRL,上位机C#通过TCP/IP与KUKA库卡机械臂通讯Demo

    目录 0.引言: 1.本文使用的相关软硬件或产品: 2.一些注意事项: 2.1.涉及到的一些概念: 2.2.配置以太网连接以及以及发送接收结构: 2.3.上位机应当如何传输: 2.4.通过smartH ...

  2. 博图V13+PLCSIM+ NettoplcsimS7o121+KEPServer模拟PLC运行及与上位机通信

    在做此相关的项目,之前一直要到工程现场才可以去开发.验证上位机程序,一直想在本地的笔记本电脑就能够完成模拟,现在用此技术就可以实现了,直接模拟运行PLC程序,然后通过NettoplcsimS7o121 ...

  3. 浅析基于TCP/IP的一对多通信1——TCP/IP是什么鬼?

    声明本文蓝色标注字体为重要内容,其他都是废话(包括这句),有兴趣可以读读,不想听我BB可以直接跳过. 在我之前已经有无数的大佬写过有关TCP/IP的文章,内容非常详细,如果想要深入学习,精通该技术,推 ...

  4. EtherNet/IP协议开发2:理论学习

    前言 接续第一章,其实可能也没啥关系,水一篇. 一 EtherNet/IP百度百科概念 百度百科写的还挺好的,从其中能提取很多有用的知识. EtherNet/IP来自哪里         EtherN ...

  5. 川崎机器人总线通信_川崎机器人 | EtherNet/IP安装使用说明

    川崎机器人 | EtherNet/IP安装使用说明 注:本文章文字.图片部分来自网络 版权归原作者,侵删. 您是否对将工业自动化集成到您的设施中感兴趣?如果是这样,那么您应该致电工业自动化和集成领域的 ...

  6. [工业互联-12]:主流的工业以太网技术简介(PROFINET、POWERLINK、ETHERNET/IP、ETHERCAT、SERCOSIII、MODBUS TCP、CC-LINK IE)

    目录 前言: 1.工业通信要求 1.1 工业通信网络分层模型 1.2 工业控制的实时性要求 2.  以太网技术 2.1 协议分层 2.2 实时应用 3. 常见工业以太网技术 3.1 PROFINET通 ...

  7. Ethernet/IP和cip协议的介绍与分析

    一. CIP协议簇介绍 CIP 协议族是由 ODVA .CI 等机构联合推出的应用层协议标准, 又称为控制与信息协议, 它为采用不同物理层和数据链路层的各层网络提供了统一的应用层协议标准, 使得各层网 ...

  8. 基恩士上位机链路通讯_基恩士PLC通讯源码

    基恩士PLC KV7000,8000还是比较好用的,那如何和上位机通讯,我把源码写出来了.采用上位链路通讯,基恩士官方给我们留了8501端口,这个端口有意思刚好是我生日.基恩士的资料我觉得做的特别好, ...

  9. 基于EtherNet/IP实现欧姆龙NX系列PLC通信

    1.引言 工业以太网协议 (Ethernet/IP) 是由ODVA所开发并得到了罗克韦尔自动化的强大支持.它使用已用于ControlNet和DeviceNet的控制和信息协议 (CIP) 为应用层协议 ...

最新文章

  1. 介绍一下你对浏览器内核的理解?
  2. 独家 | Python的“predict_prob”方法不能真实反映预测概率校准(如何实现校准)...
  3. msyql主从同步实践
  4. Linux常用命令——paste
  5. Graylog2+mongdb+rsyslog中央日志服务器对syslog的web管理--转载
  6. bcb中使用pas文件
  7. Javascript——说说js的调试
  8. 帧率ffmepg 摄像头_【WIN电竞】CSGO解除锁帧方法介绍
  9. 在MAC中配置Tomcat+Nginx代理
  10. 背景图片适应屏幕百分百
  11. hashcat 基本使用
  12. mysql ibtmp1 太大_mysql5.7 ibtmp1文件过大
  13. Source Insight 4.0 常用设置
  14. Python:学习笔记
  15. 2021-06-10 JUC01DAY
  16. Thinkphp if标签不支持3层以上嵌套
  17. 为什么Excel公式使用不了?
  18. 解决SQLServer复制到Excel中内容换行问题
  19. iOS - 检测耳机孔是否存在耳机:
  20. GPU编程自学1 —— 引言

热门文章

  1. Spring Boot 实现 AI 人脸识别功能,So Easy!
  2. 【Python打包成exe方法】——已解决导入第三方包无法打包的问题​
  3. IIS中开启运行exe文件
  4. 【论文阅读】Cross Language Image Matching for Weakly Supervised Semantic Segmentation
  5. 抓取网页(3)之部分工程文件
  6. 第九章结构体变量实验报告
  7. javaScript正则表达式截取字符串【截取中间、截取前面、截取后面】
  8. excel vba 阻塞 先刷新 连接 再 刷新所有透视表
  9. 基于Transformer的翻译模型(英->中)
  10. fm算法详解_FM算法(一):算法理论