LabVIEW通过以太网与西门子S7-1200PLC通信,制作你自己的WINCC
原创不易,请勿抄袭!
很多人可能听过或者用过这个软件,其实简单来说就是一个信息采集的系统,在工业中,对应的就是人机界面,类似于WINCC,INTOUCH,组态王等等,近几年在国内很火,今天和大家分享一下。
其实,建立自己的人机界面的方式有很多种,其中包括文中所讲的Labview,除此之外作者还使用过VB运用prodave驱动或者Libnodave驱动连接PLC数据制作画面,也非常好用。都是非常好用且有趣的应用,而且使用这些小众化的方式可以使得编出来的人机界面很高大上,最重要的是没有刻苦学习过的人无法更改或者判断故障,也就是不可替代性!搞工控的都知道不可替代性代表了什么,尤其是在每年数万电气自动化毕业生就业的前提下。
除了上述的目的,我觉得对于这些应用,一般的工控人员来讲只需要简单了解,需要用的时候再去研究学习即可,毕竟自动化知识不是纸上谈兵,没有实际应用再好的学生也学不来。
好吧,开始我们今天的案例!
一 概述
西门子S7-1200 PLC支持多种协议通过以太网通讯方式,如OPC、TCP、S7、MODBUS-TCP等。TCP方式相比其它协议,具有更多的灵活性,更快的数据响应等优点,本人即介绍LabVIEW通过TCP方式与S7-1200 PLC通信。
S7-1200 PLC的TCP通信方式,称之为“开放式用户通讯”,通过以太网发送或读取数据。
二 测试硬件和软件
硬件包括:
博途S1200PLC:CPU 1215C和PC一台;
软件包括:
博途 TIA V14 SP1和LabVIEW 2012 或以上版本
编程思路分为两步;
1PLC编程:配置PLC --> 添加发送和接收数据块 --> 发送数据程序 --> 接收数据程序 --> 编译下载
2LabVIEW编程:创建TCP连接 --> 接收或发送数据 --> 关闭连接
三 操作步骤
3.1 CPU配置
1 打开 TIA Portal,创建项目,添加CPU为1215C。
2 双击“设备组态”,切换到“设备视图”,点击CPU,右键选择属性。
3 在常规栏,选择PROFINET 接口[X1]/以太网地址属性,设置CPU的IP地址,本例设置为 192.168.0.10,如下图所示:
4 在常规栏,选择系统和时间存储器属性,启用系统存储器字节和时钟存储器字节,如下图:
5 如果传输的数据量大,且实时性要求高,可选择通信负载属性,把由通信引起的循环负荷由默认为20%,提高到 50%。
3.2 添加数据块
1 添加发送数据块。该数据块用于存储PLC向LabVIEW发送的数据。点击程序块/添加新块,在打开的对话框中选择数据块,输入名称,如 PlcSendData ,类型可选择全局DB。注意如果不一次性传输大量数据,可以直接使用PLC变量,单次发送一个数据,不需要创建数据块。
2 打开该数据块PlcSendData ,添加数据,名称如 ArySendData,选择数据类型Array of Byte,即字节数组,数组长度设置为10。
3 修改数据块属性。选中数据块PlcSendData ,右键属性,在属性栏去掉优化的块访问,以支持绝对寻址模式。
4 添加接收数据块。该数据块用于存储LabVIEW向PLC发送的数据。数据块名称PlcRecvData,数据类型Array of Byte,操作方法同步骤1、2、3。
3.3 编写发送数据程序
1 打开 Main 程序
2 添加指令通信/开放式用户通信/TSEND_C到程序段1,调用选项的数据块名称采用默认。
3 配置 TSEND_C 的通讯参数。选中 TSEND_C,右键属性,切换到组态页,选择连接参数属性。伙伴项选择未指定,连接数据选择新建,系统会自动创建一个连接数据 ,如PLC_1_Send_DB。输入伙伴的IP地址,如192.168.0.12。由伙伴主动建立连接 ,PLC的端口可保留默认的2000。连接类型为TCP,连接ID采用默认值。(注:所谓伙伴即与PLC通信的另一方,可以为上位机PC、HMI等)
4 配置 TSEND_C 的输入输出。TSEND_C在检测到参数 REQ 上升沿时执行发送作业,因此每次发送数据时,都应在REQ上产生一个脉冲,此处为了简便,调用系统时钟 Clock_10Hz(每秒10次),周期性的发送数据。参数DATA为待发送的数据,此处调用数据块 PlcSendData。注意 DATA采用纯符号寻址时,发送 LEN 应设置为0,而采用绝对寻址时,应设置为实际发送数据的长度。通讯状态参数 DONE\BUSY等按需要连接。
3.4 编写接收数据程序
1 添加指令通信/开放式用户通信/TRCV_C 到程序段2,调用选项的数据块名称采用默认。
2 配置 TRCV_C 的通讯参数。选中 TRCV_C,右键属性,切换到组态页,选择连接参数属性。伙伴项选择未指定,连接数据选择3.3 步骤自动创建的数据,如PLC_1_Send_DB,切记不要选择新建 (此例的通讯连接为自动创建,因此发送与接收共用一个连接,必须保持一致才能正常通讯)。
3 配置 TRCV_C 的输入输出。TRCV_C在检测到参数 EN_R 为1时启动接收。参数DATA为数据接收区,此处调用3.2步骤所创建的数据块PlcRecvData。注意DATA采用纯符号寻址时,接收 LEN 应设置为0,而采用绝对寻址时,应设置为实际发送数据的长度。通讯状态参数 DONE\BUSY等按需要连接。具体参数信息请查看帮助文档。
4 为了判断PLC是否正确接收到LabVIEW所发送的数据,可通过以下两种方法测试。
a、将第3.3 的数据发送区设置为与数据接收区相同的数据块,即 PlcRecvData,使PLC把接收到数据发送回LabVIEW。
b、添加 MOVE 指令采用数据移动的方法完成此功能,如下所示:
3.5 编写LabVIEW程序
1) 创建TCP连接TCP OpenConnection。输入PLC的IP地址 192.168.0.10 和端口号2000。
2) 读取数据TCP Read。输入读取长度10(PLC程序的发送数据块长度为10个字节)。
3) 发送数据TCP Write。
4) 关闭连接TCP Close Connection。
5) 前面板如下。点击 Write,把数据WriteData写入PLC,同时PLC把该数据发回LabVIEW,通过 ReadData显示。如果ReadData数据与WriteData一致,即通信正常。
3.6 下载程序,连接测试
哎呀妈呀,累死我了,大家点个赞支持我一下呗!
喜欢的话请点赞并分享,您的支持是我坚持下去的动力!送人玫瑰,手有余香!
PLC, LABVIEW,C#——浅谈自动化工程师编程语言的选择
大家好,我是华山自控编程的朱老师!
常常有一些刚出来的大学生问我,想学习自动化方面编程,PLC, LABVIEW,C# 到底该选择哪一种编程语言? 同样,一些PLC工程师们想转型上位机编程,也会问,LABVIEW和C#这两种编程语言哪一种较好?在这里,我想分享下自己的看法。
我99年开始从事PLC编程,当时的主流PLC品牌包括西门子,AB,OMRON ,三菱 等品牌PLC我基本上都用过,随着运动控制卡的兴起,2008年后开始在一些小型设备上使用上位机编程,2012年后所开发的一些专机设备很多都带机器视觉,控制系统也基本上都是使用上位机编程了。在这里,我想从以下几个方面谈谈自动化行业如何选择适合自己的编程语言。
一.编程语言方面的差异
PLC编程主要是梯形图语言,当然也有个别的使用STL,SCL等这些类似于basic的简单语言编程,学习起来比较容易,指令也容易理解,手册基本中文,没有什么学历要求,其实自己拿手册多看几遍,也可以很快地入门(当年我自己就这样入行的)。
LABVIEW采用的是图形化编程,主要是框图连线样式,连线控件看上去有点像西门子的FB功能块编程,界面也是全中文,直观形象,特别是它的帮助功能强大,基本上所有的指令都有非常详细的帮助支持,提供详细说明和使用样例,因此学习起来也相对比较轻松的,就算学历不高,只要逻辑思维能力强,也是能学好的。
C#语言采用的是代码编程方式,从事这种编程也就是我们常说的’码农’。 C#语言有一定学习门槛,要学好一般来说需要大中专以上学历,还有就是需要你有一定的英语基础,因为界面上特别是代码界面基本上是英语呀,所以从入门来说,英语就需要一定的基础,我个人觉得有高中以上的英语基础就能应付,英语基础差的,可以专门学习《C#编程英语词汇》,这个词汇我整理了一份,有需要的同学可以找我分享。
至于PLC, LABVIEW , C#三种语言在程序结构和运行方式上面的差异,这里不详谈。
二.PLC ,LABVIEW , C# 适用的范围
PLC主要是适用过程控制,应用的领域大多是工厂的自动化流水线系统,在分散控制方面PLC有优势,用远程模块或总线方式,就能把一条很长的流水线串连起来。因此,PLC系统在这些分散式IO较多的系统,比如电磁阀,指示灯,传送,移载等场合应用较多。
LABVIEW 也称’虚拟仪器’,从名称上就可以看出,这个语言跟仪器是紧密相关的。它主要应用于 电流,电压,流量,电阻,电容,各种设备参数 等需要测试的场合,与测试仪器连接较多,自带很多仪器的驱动,因此用来做测试程序也具有无可比拟的优势。LABVIEW也可以用来做运动和视觉方面的控制系统,相对来说,测试系统更是LABVIEW应用的主流,PCB行业应用较多。
C#在自动化行业的应用,近年呈直线式上升。2015年以前VB和VC++是自动化行业应用较多的语言,2015年以后大部分都用C#开发了。C#特点是界面制作简单快捷,程序开发速度快。相较于LABVIEW, C#的灵活性更强,市场应用面也更广。运动控制卡,机器视觉,数据库,通讯等自动化控制领域C#的应用比较多。贴片机,点胶机,切割机,焊接机等很多的高精密的专机设备,大都采用C#配运动控制卡和CCD视觉的控制系统。
三.PLC ,LABVIEW , C# 从业人员出差情况及薪资水平比较
广东地区来说,PLC行业入门起薪在5K左右,5年左右资深PLC工程师12K左右,再上升难度就比较大了。PLC工程师基本上需要经常出差,因为设备在现场组装,必须到现场调试才能将系统运行起来。
LABVIEW 新手工资在7K左右,5年左右资深LABVIEW工程师12K~15K左右比较多,再上升难度也比较大,相对来说, LABVIEW工程师在现场调试的时间不会像PLC工程师多
C#新手起薪一般在8K左右,5年左右资深的C#工程师15K~25K左右的比较多。
因为C#控制系统的设备主要应用在专机上,因此一般在出厂前都调试好了,整机出厂,现场调试的时间很少,就算有问题一般也可以通过远程方式解决,相对来说出差也是比较少的。
这个只是市场大体行情,个别情况不做比较。
以上啰嗦了这么多,希望对那些选择编程语言困难的同学有帮助。想从事自动化编程的同学,可以根据自身的爱好和特点,以及希望从事的工作方向,选择适合自己的编程语言。
相关问答
labview如何控制西门子plc?
1编程方法是按照西门子PLC的通讯协议来做这里通常PC做为上位机,调用labview的visa-read/write就行了2如上上位机用VISA就行了具体清参考一下NI的串口...
怎样用LabVIEW和OMRONPLC通讯?
你要用什麼方式来通讯,串口还是以太网串口就用VISA控件来控制,PLC就是HOSTLINK,协议就用FINS以太网也是用TCP控件,协议用FINS/TCP你要用什麼方式来通讯,...
如何实现labview和西门子s7-200plc串口通信?
1、如果使用自由口通信,那要PLC端向串口写数据,才能在串口收到数据本身PLC是不主动向串口发消息的2、要么用PLC本身的PPI协议,要么用modbus协议1、如果使用...
LabVIEW与WinCC哪个组态液压系统简单?
WinCC应该简单一些,简体得看你的下位机是什么。首先LabVIEW并不是专业的工业组态软件,而是图形编程软件(性质类似VB),LabView的强项是虚拟仪器、信号处理。...
电气自动化需要哪些高级语言?
在西门子的编程软件中就叫做SCL编程,如下图就是在博图软件中建立一个块的时候,就可以选择对这个块的编程语言是什么!还需要说一点的是西门子PLC中还有一种STL...
labview支持什么嵌入式系统-only_晔儿的回答-懂得
很多,arduino,PLC是STM32你得到NI官网看一下,总的说来支持的多,不支持的少
ifix组态和西门子PLC怎么通讯?
iFIX连接西门子PLC的驱动S7A、SI7、SL4等是无法连接仿真PLC的。WinCC和WinCCflexible可以连接是因为都是西门子的东西,而iFIX的这些驱动程序是第三方开发的,...
普通二本自动化专业学生干PLC前景和待遇怎么样?
我也是普通二本自动化毕业,到现在将近11年了。我从毕业到现在,一直从事PLC方面的工作。PLC用处很大,工业上各行各业都要用到。如果想从事PLC方面的工作,我建...
非计算机专业如何学习编程?
编程应该是很多非计算机专业入门的必学科目,编程就像我们小时候的牙牙学语,只有学会快乐说话,才能去学习语文等科目。而语文就像计算机专业的人工智能,还没有...
做了8年的电气工作,已做到电气工程师职位,但是越来越感觉迷茫,想问下同样做电气的你,境遇如何呢?
作为同行,我有几个建议你看下!像你这样的电气工程师很多,有的没有专科里学的有的是专科里学过再从事的,我们比如我周边很多都是自学成才逐步提高自己,甚至...人...