目录

  • 前言
    • 通讯测试
    • QT+OpenCV使用ACT控件的问题

前言

以前没有了解过PLC,更不了解PLC通讯,但是新项目必须要跟PLC进行通讯,没办法只能硬着头皮上,搞了差不多一周多,中间一度想要放弃,遇到很多问题也是迟迟解决不了,下面我也会把中间遇到的问题贴上来,以便帮到更多小伙伴。

通讯测试

首先了解了一下上位机与PLC通讯的验证程序,我们用的是三菱PLC-FX5U,例程里有各种语言的代码,如图1,我用的是Vc.NET进行测试,这个是C++ MFC完成的,接下来是通讯测试,需要用到两个软件,如下图2所示。

图1

图2
一、使用GX Works3可以打开一个PLC模拟器,不用使用真实的PLC进行测试,新建工程,右键蓝色区域->在线可以打开软元件/缓冲存储器批量监视,可以对寄存器进行监视和操作,最后打开“模拟开始”完成模拟器的建立。



二、打开Communication Setup Unility,Wizard->输入Logical station number->next->PC side I/F->CPU type->next->finish。


Connection test选定上面的Logical station number,点击test,连接成功显示Communication test is successful.否则显示GX Simulator3 did not start error…,检测GX 软件是否模拟开始。
三、打开对应的例程代码
我用的是vs2015打开Sample2010.运行之后显示界面如下图所示。填入上面的Logical station number,点击Open按钮,连接成功则下方的Output中的Return显示为0x00000000 [HEX]。
下方的Random Read/Write模块是用来读/写任意一个地址的值。Block Read/Write可以连续写多个地址的值。在DeviceName中输入要读/写的地址,在DeviceSize中输入读/写的个数,DeviceData输入要写入的值(读不用),点击ReadDeviceRandom2可以读取对应地址的值,显示在最下方Output中的Data中,点击WriteDeviceRandom2可以将写入DeviceData的值写入对应地址中。至此通讯测试结束。

QT+OpenCV使用ACT控件的问题

我的界面是用QT写的,视觉是用OpenCV实现的,需要将控件添加到QT中,查了一下发现三菱PLC的ACT控件只能在32位编译器才能使用,但是OpenCV3之后是没有x86的,需要手动生成。
一、手动生成x86
1、以opencv4.1为例进行说明,安装路径下有个3rdparty文件夹,里面包含ffmpeg和ippicv两个文件夹。首先新建一个.cache文件夹与3rdparty同一目录下,必须要用cmd建立,输入md .cache。
2、在.cache文件夹下新建两个文件夹ffmpeg和ippicv。
3、然后下载对应的ffmpeg和ippicv动态库。
已有的ffmpeg和ippicv文件夹下有ffmpeg.cmake和ippicv.cmake文件,打开ffmpeg.cmake第一行便是我们要下载的文件。打开ippicv.cmake找到win32下对应的文件,点击这里找到对应名称进行下载。


解压后,将ffmpeg_version.cmake,opencv_ffmpeg.dll,opencv_ffmpeg_64.dll三个文件复制到.cache下新建的ffmpeg文件夹中。将ippicv_2019_win_ia32_20180723_general.zip复制到.cache下新建的ippicv文件夹中,并在名称前加上上图中的HASH码,如下所示。

并将3rdparty文件夹复制到build文件夹下,便于编译。
4、需要安装python3和cmake,安装过程就不再赘述了。打开cmake-gui.exe,输入.cache所在路径和build路径。点击Configure,弹出框中选定Visual Studio 14 2015,点击finish。

配置完成之后再此点击配置,生成(Generate),提示Configuring Done和Generating Done之后关闭CMake。
5、在build文件夹下生成OpenCV.sln,用vs2015打开之后点击 “生成->生成解决方案”,等待几分钟提示编译完成。

打开build->bin->Debug文件夹会看到生成的动态库,共享库和可执行文件。
右键选中解决方案中CMake Targets下的INSTALL->仅用于项目->仅生成INSTALL(B),完成之后在build文件夹下生成一个install文件夹,包括x86 Debug模式下的动态库和共享库。release版本的生成与debug模式下相同。最后将你需要的库添加到工程配置中。
二、x64改成x86
一开始我是在x64下编译的,qt打开之后无法添加ACT控件,只能先换成X86,可能有一些小问题,我的基本上没啥问题。接下来在需要的界面添加ACT控件,拖动QAxWidget控件到界面上任一位置,右键选择“设置控件->MITSUBISHI ActUtlType Control",控件添加成功。
还需要在你的代码中添加.h和.cpp文件,这两个文件需要手动生成,方法如下:
打开qt所在目录下的bin文件夹,找到dumpcpp.exe,cmd打开此路径,输入dumpcpp空格加添加控件时下方的一串字符,便会生成actutltypelib.h和actutltypelib.cpp,将这两个文件复制到你的工程目录下,加载.h文件即可使用。

三、更改配置文件
3.1、选择Qt VS Tools->Qt Options,将默认版本改为msvc2015,

3.2、选择Qt VS Tools->Qt Project Settings->Qt Modules,选中ActiveQt continer和ActiveQt server。
3.3、选择“项目->属性->链接器->输入->附加依赖项”中添加Qt5AxBased.lib
和Qt5AxContainerd.lib。

QT+C++与PLC进行以太网通讯相关推荐

  1. c#rs232与三菱通讯_C#对三菱PLC的以太网和串口通讯以及台达PLC的以太网通讯

    [实例简介] C#对三菱PLC的以太网和串口通讯以及台达PLC的以太网通讯 [实例截图] [核心代码] Conn └── Conn ├── Conn.sln └── ConnTest ├── bin ...

  2. 西门子S7-300型PLC与西门子S7200smart型PLC的以太网通讯例程

    西门子S7-300型PLC与西门子S7200smart型PLC的以太网通讯例程 为程序 300PLC的IP地址:192.168.0.1 200PLC的IP地址:192.168.0.4 S7-300 与 ...

  3. 威纶触摸屏与三菱PLC的以太网通讯

    威纶通触摸屏(以MT(ie)系列为例)通过以太网连接三菱FX系列PLC,NET30-FX通讯桥接器为PLC提供以太网通讯接口. 三菱PLC FX2N设备信息化 威纶通触摸屏 上位数据采集 应用要求 使 ...

  4. PLC通讯实现-C#实现欧姆龙以太网通讯FINS(二)

    PLC通讯实现-C#实现欧姆龙以太网通讯FINS(二) 背景 抽象设计 欧姆龙以太网通讯实现FINS 背景 本人近十年的工作都与工业软件相关.其中工控系统开发过程中有一个必要环节就是跟各大厂商的PLC ...

  5. VB、C#等高级语言与三菱PLC(Q系列、L系列、FX系列)串口、以太网通讯的DLL及源代码

    http://blog.sina.com.cn/s/blog_16d7d3ecb0102x6wj.html 1.0 通讯组件概述 通讯组件用于PC与可编程控制器(PLC).智能仪表等进行数据通讯,适用 ...

  6. Profinet高速协议下,PLC之间如何实现无线以太网通讯?

    本文以西门子S7-200SMART为例,介绍两台S7-200Smart PLC的无线 Profinet通信实现过程.无需更改网络参数和原有程序,也不必了解Profinet协议细节,只需要采用西门子PL ...

  7. PLC通讯实现-C#实现西门子PLC以太网通讯Sharp7(六)

    PLC通讯实现-C#实现西门子PLC以太网通讯Sharp7(六) 背景 抽象设计 西门子以太网通讯实现Sharp7 背景 本人近十年的工作都与工业软件相关.其中工控系统开发过程中有一个必要环节就是跟各 ...

  8. 三菱FX系列PLC以太网通讯

    三菱FX系列PLC以太网通讯 BCBet-FX用于三菱FX1N/1S/2N/3U/3G/3S等系列PLC,以及汇川.禾川.士林等品牌PLC. BCBet-FX 以太网模块采用三通设计,不占用PLC通讯 ...

  9. 欧姆龙CP系列PLC以太网通讯连接SCADA介绍

    远创智控YC8000-CP转以太网模块采用即插即用设计,不占用 PLC 通讯口,即编程软件/上位机软件通过以太网对 PLC 数据监控的同时,触摸屏可以通过复用接口与 PLC 进行通讯.远创智控YC80 ...

最新文章

  1. 三次握手,四次挥手?
  2. nginx 域名跳转 ---IP跳转----
  3. Inside ASP.NET 2.0 – Controls Model(转载)
  4. 6、Power View—条形图的应用
  5. 首页列表显示全部问答,完成问答详情页布局
  6. CSS hr修改样式
  7. 疫情下的618:搜索热度已盖过双11,全民练习“直播带货”
  8. Leetcode-Pascal's Triangle
  9. python xml转excel_一个python 脚本将XML文件转换到excel
  10. Redis之SDS数据结构
  11. 凭实力讲,运维工程师能不能做成预言家?
  12. 强化学习—— Target Network Double DQN(解决高估问题,overestimate)
  13. 我的2018:用一年的时间写一份年终总结!
  14. Java中加载图片并显示
  15. 天行健君子以自强不息----宣言
  16. Ubuntu安装WPS2016
  17. nginx--如何基于rpm包进行离线安装及配置(Linux)
  18. 基于java毕业设计审核系统
  19. (转) JVM Crash with SIGSEGV - problematic frame - libzip.so
  20. 哗啦啦王济民:如何解决餐饮供应链供需错配问题

热门文章

  1. 网络命令以及如何使用Ipconfig.exe工具查看TCP/IP配置
  2. 华展云能这么玩? 玩转华展云之新手入门
  3. 如何用Autojs写自己的卡密验证界面?实战代码
  4. 【渝粤教育】广东开放大学 互换性原理 形成性考核 (29)
  5. 禁止穿透 uniapp
  6. 网狐大联盟创建房间游戏组件列表为空问题解决
  7. python 计算灰度共生矩阵
  8. uni-app引入海康威视h5player实现视频监控的播放
  9. linux第二块sata硬盘叫什么意思,在Linux系统中,第二块SATA硬盘中的第2个逻辑分区应该表示为()...
  10. c语言魔塔游戏页面,(魔塔案例)写游戏步骤: