目录
1、安装博途TIA V15.1以及SIMATIC NET V14 SP1
2、通过在线寻找连接PLC
3、在软件上配置OPC SERVER
4、在PC上配置OPC SERVER
5、对博途软件上的PC STATION进行在线组态
6、qt从5.11开始集成了opcua模块,但必须自己编译
7、配置KepServer
8、配置Qt为OpcUA客户端连接KepServer
9、裸SOCKET配置
本文主要记录的PLC+OPC开发配置,包括以下几个部分:
①在软件上添加一个PLC模块,并且与PLC实体进行连通测试;
②在软件上添加一个OPC模块;
③在本地PC上添加OPC服务器;
④连通软件上的OPC模块和本地PC的;
安装这个两个软件的主要问题都在于注册表,TIA的安装是过程中不断的重启,而SIMATIC NET的安装是失败退出,他们的原因都是相同的,就是注册表中的重启键,删除了就好了。
创建成功之后点击“项目视图”打开
将PLC通过网线连接到路由器上,与本机PC在同一个局域网上,点击菜单“在线”-“可访问设备”,进入设备搜索模式
找到之后选中,点显示,即可在左侧菜单中看到
选中此在线设备,点击“在线”-“将设备作为新站上传”,上传成功即可在我们的项目中看到新上传的设备信息,里面还包含了数据,这些数据是之前写入进去的,我们在这里重点不是研究编程,因此在此就不重新编写这些数据了。
到这里我们软件与实体PLC(192.168.0.1)连接就成功了。
注意:有一个问题在于,我们的PLC与我们的本机电脑(192.168.2.178)不在同一个网段。现在连接相当于是我们用一个虚拟的IP(192.168.0.241)将他们连接在一起的。这样不是不可以,但是我们接下来要配置OPC SERVER在本机的时候,他会识别到本机的真实IP(192.168.2.178),而不能识别到这个虚拟IP(192.168.0.241)。我们在软件上配置OPC SERVER时,填的地址如果为192.168.2.178,则与PLC的192.168.0.1不是同一个网段,如果填的是192.168.0.241,则与实体OPC SERVER的地址192.168.2.178不一致,导致寻找不到,因此我们必须给PLC一个相同网段的IP,摈弃用虚拟IP与PLC相连。
对PLC右键属性,修改其IP地址和子网掩码,必须与本机真实的IP一致。
注意掩码也要一致,非常关键。
修改之后下发到实体。
然后对PLC右键转为在线,发现可以正常连线,至此PLC配置才真正完成。
注意2:假设IP地址都已经设好了,有一天发现断了,连不上,转到在线时显示PLC未响应,那么此时可能是IP地址发生了冲突。
因为你这个IP是设固定的,当你断电期间,有别的设备使用了这个IP,你这个PLC就没办法使用这个IP了,电脑跟PLC无法通过这个IP地址进行通信,他又不会自己指定另外的IP。此时要通过修改软件上的IP然后下发给PLC,是无法进行下发的,因为连接不上。此时只有将PLC直接连接到电脑的网口上,在软件修改了IP之后,直接下发,搜索可用设备,然后直接下发给设备就可以了。都完成之后,再将PLC重新接入交换机,而电脑也是如此,这个时候电脑的软件设定和PLC都是相同的IP,这样就可以转到在线了。
添加新设备:
选定一个槽,选一个IE,版本不能太高,因为我们的NET版本较低,太高的版本会对不上。
选一个OPC SERVER同样版本不能高了,最多14。
博途软件端的OPC SERVER就暂时配置到这里。
打开Station Configuration Editor。点击ADD,先添加一个IE。
再添加一个OPC SERVER。
还未设置IE的IP,我们先设置IE的IP再来组态。
转至在线。
转在线成功。
将PC station和PLC连起来。
组态其中的数据
下载到设备。
以为这样就结束了,naive。配置opc中各种折磨...这个转至在线可以了,为什么Station configuration editor中的连接标志没有出现?
先将转为离线,编译,下载到设备(全部),在转为在线,就可以看到连接标志了。
注:最终用西门子opc server组件没有调通,用诊断工具看一直显示连接未使用,后来改用KepServer比较顺利调通了,易用性上面相差非常多。KepServer如何使用在后面记录数据通信时再讲。
参考这边文章进行编译:
https://blog.csdn.net/vivisoul/article/details/99733034
①使用Qt5.12版本,下载地址:
http://download.qt.io/archive/qt/5.12/5.12.0/
下载exe版本就可以了,他的编译器配置可以在项目中配置。
注意:要先安装vs2017,这样再装qt的时候可以自动识别编译器,不需要再自己手动配置。
②打开qt中的vs2017编译器64位,进行qtopcua编译
③进行vs编译器环境设置(动态)
打开这个命令行时,有提醒需要call vcvarsall.bat进行环境变量设置。这个走了很多弯路,不知道要在本窗口直接设置直接使用。
说明:本机win7 x64,我们的编译器要用msvc2017_64。
设置成功。
④开始编译
接下来开始编译,会退到最初的位置。
// 第一句就是设置环境变量的
"c:\Program Files (x86)\Microsoft Visual Studio\2017\WDExpress\VC\Auxiliary\Build\vcvarsx86_amd64.bat"
git clone https://code.qt.io/qt/qtopcua.git
cd qtopcua
git checkout 5.12
mkdir build
cd build
qmake ..
nmake
nmake install
①下载KepServer,打开直接添加通道,添加设备
注意这些名称不要用中文不然等下QT识别不到(可能跟编码有关)
②添加标记,一个标记就是PLC上面的一个地址
我没办法看到是否连接上,就添加完标记再测试是否连接成功吧。
右键添加标记
从博图上找到想添加的变量,按照他的书写方法写进去。
在客户端上进行修改,查看PLC是否同步修改。
从客户端进行修改他
已发生变化,说明修改成功,KepServer搭建已经成功。
③设置可以匿名登录
6.7版本可以设置,6.7以下版本,没看到在哪里设置,有的电脑安装之后,qt会连不上,所以最好还是按照6.7版本。
先安装6.7,如果安装后运行正常,重启再观察是否能正常启动服务,不能的话则卸载掉再装6.4。步骤:
卸载6.7->清空残留文件夹->重启系统->安装6.4->验证是否能正常启动服务->重启电脑再次验证能否正常启动服务->安装完成。
根据上面的QT编译OPC模块操作之后,OPC就不是什么问题了,但是在连接Server的时候还是出了一点问题,这里记录一下。
①下载了最新的Qt5.13.1,并进行OPC插件编译,注意编译插件时git版本要切换为5.13.1版本。
②从github下载qtopcua项目,直接在github搜索qtopcua,第一个项目就是,注意下载5.13.1版本。
③下载解压之后,直接打开examples项目,注意不要将其单独拷贝出来,此项目还依赖文件夹中其他代码。
④直接运行该项目,可以跑起来。会找不到证书的错误:
qt.opcua.security: No client certificate found at "E:/hit-qt/OpcTest/qtopcua-5.13.1/build-examples-Desktop_Qt_5_13_1_MSVC2017_64bit-Debug/opcua/opcuaviewer/debug/pki/own/certs/opcuaviewer.der" . Application identity will be invalid.
先不用管它。
⑤尝试搜索opc server服务器,未果。
⑥由于端口未知,所以搜索服务器肯定是找不到的,这里要做两个事情:一是查找究竟服务器端口是哪个;一个是因为没有证书,如何配证书。
⑦查看服务器端口
找到端口。
⑧配置证书
从上一步骤打开的软件,点击受信任的客户端,下载证书,放到刚才运行qt报错的位置,还是搜索不到服务器。
直接在这里双击,取消掉加密:
⑨重新启动server
⑩重新启动之后再用qt客户端连接成功