点击学习>>《龙哥手把手教你学LabVIEW视觉设计》视频教程
随着工业自动化的发展, 客户一些特殊的要求普通的触摸屏加PLC的人机交互方案已经不能满足,比如数据库储存,数据查询,压力位移曲线的保存,简易视觉的构建等等,这样我们就需要通过工控机带PCI总线板卡实现整套自动化系统的方案,但是这种应用在中大型自控系统是没有问题的,而一些小型自动化解决方案,用工控机自控系统性价比不高,方案竞争力不足,而且整个工控机编程对程序员的文本逻辑性要求比较高,针对上述情况,推出使用触摸一体机与下位机PLC以太网通讯来实现,PLC是逻辑控制的首选器件,上层功能则在触摸一体机中实现。
本文档针对西门子S7-1200PLC来做此次说明,首先最好实现的就是OPC通讯,但是测试下来数据延迟比较高,S7协议又是封闭的,所以只能通过OpenIE 开放式以太网的方式来实现!
什么是OPENIE(开放式以太网)?
西门子S7-1200 Profinet端口支持多种以太网网络上的通信标准:
1.传输控制协议(TCP)
2.ISO on TCP(RFC 1006)
3.用户数据报协议(UDP)
测试硬件:S7-1200 1215C V4.0
PC机或者工控机
测试软件:labview 2014
编程软件:tiA Protal V13
测试目的:通过上位机控制PLC的输出点,以及在上位机上反馈PLC输入点状态。
下位机程序编写步骤:
1.在MAIN程序OB1中添加TSEND_C(带连接控制的以太网发送指令)
2.配置发送指令TSEND_C,配置方法:鼠标右键指令属性打开配置对话框
具体参数配置如下:
注意:连接数据也就是指令中的CONNECT不要自己手动建,否则会出现通讯不上。
3.在MAIN程序OB1中添加TRCV_C(带连接控制的以太网接收指令)
接收指令参数配置如下:
关于上述配置中端口的说明:
注意:建立被动的TCP 、ISO on TCP 和UDP的连接时,建议使用端口范围: 2000~5000。一些端口号和TSAP 号是受到限制不能被使用的。 下列端口号和TSAP号不能使用:
ISO TSAP (passive): 01.00, 01.01, 02.00, 02.01, 03.00, 03.01
TCP/UDP port (passive): 20, 21, 25, 80, 102, 135, 161, 34962 … 34964,53, 80, 162, 443, 520, 9001。
我们最好端口号从2000开始。
关于发送指令与接收指令中DATA参数的链接说明:
符号寻址:如果建立的DB块是符号寻址,那么DATA端口上直接填写DB块名称即可,另外需要注意的是LEN长度参数一定要设置为0.
绝对地址:如果建立的DB块是非优化的访问,也就是绝对地址寻址,那么DAT端口上只能通过输入指针的形式来指向数据区,同事参数LEN一定到准确,否则会造成通信错误,另外S7-1200PLC开放式以太网通讯不支持布尔寻址,指针指向形式为:“P#DB3.DBX0.0 BYTE 100”。
具体下位机程序如下:
MAIN中主要通讯程序:
PLC输入点反馈程序:
PLC输出点控制程序:
发送数据区DB块:直接使用IW0或者IB0数据。
接收数据区DB块:
上位机labview程序前面板:
上位机labview程序框图:
测试结果:通讯速度10ms 最快5ms稳定,适合绘制实时曲线,满足工业要求。
常见问题:
为什么通信数据区在输入指针形式的绝对地址时不允许输入?
答:通信数据区 “DATA” 在输入指针形式的地址时,虽然输入地址格式完全正确,但仍会出现红色 “P#DB3.DBX0.0 BYTE 100”,表示地址错误而不允许输入。这是因为在创建通信数据区 DB 块时选择了“Symbolic access only(仅符号寻址)”,只能用符号寻址方式访问这个DB块。只要在创建DB块时,不勾选“Symbolic access only(仅符号寻址)”,就可以正常输入指针形式的绝对地址了。
Tblock 通信指令是同步传输还是异步传输?
答:Tblock 通信指令是异步于程序传输的,每个扫描周期分配给通信任务的时间百分比可以在CPU属性中的 “Communication load(通信负载)" 中设定,默认值是 “20%”。这就要求在每个通信任务完成之前要保证数据区数据的一致性。
为何发送通信任务不执行或只执行了一次?
答:在执行发送指令时,“REQ” 输入端的每次上升沿会激活通信任务一次。如果这个位一直为“1”,则通信任务只会执行一次。
为何在使用TCP协议通信时,通信接收区的数据会错位?.
答:如果通信数据区与接收数据区的长度不一致,则会导致接收区的数据错位。
55
|
|
|
|
本帖最后由 autoctrl 于 2016-6-30 08:21 编辑
这个太麻烦,直接用S7协议的控件,无须PLC内编程配合的,好像叫WinTcpS7,官方认可了的,使用方便,稳定,可以网上搜一下;
|
|
|
|
|
请教楼主,我按照你的方式编程,下位机已经OK了,可是labview通讯错误,代码-63
是打开TCP连接时出错。请帮忙分析一下,谢谢!
|
|
|
|
|
吴周新 发表于 2016-4-14 23:07
您好,我需要咨询下就是labview与S7-1200 通讯时 labview需要监控的变量地址如何实现与PLC中变量地址对应上呢?因为labview中是不存在变量地址,而PLC中有I Q M 和DB地址数据,也即是labview中的控件读取和写入如何与PLC的内部地址对应上 ...
你好,这也是我想问的,请问楼主大大解决了 吗?方便告知一下吗
|
|
|
|
|
谢谢分享!就是看不到图片,能不能发一份到我的邮箱?361481617@qq.com,谢谢!
正在学labview,正好借鉴,再次感谢!
|
|
|
|
|