Schneider施耐德LEC使用技巧文集——施耐德电气BTG系列触摸.doc_第1页
Schneider施耐德LEC使用技巧文集——施耐德电气BTG系列触摸.doc_第2页
Schneider施耐德LEC使用技巧文集——施耐德电气BTG系列触摸.doc_第3页
Schneider施耐德LEC使用技巧文集——施耐德电气BTG系列触摸.doc_第4页
Schneider施耐德LEC使用技巧文集——施耐德电气BTG系列触摸.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Schneider-施耐德LEC使用技巧文集第12讲施耐德电气XBTG系列触摸屏应用中大量采集位信号的技巧1.前言在工业控制的实际应用中,触摸屏可能需要监控大量的I/O点等开关量数据,如果使用低速通讯方式(RS232/RS485)时,在触摸屏的某一页面上有几十点以上的类似数据,因通讯速度的限制,此页面的数据刷新耗时较长,可能在几秒到十几秒之间,施耐德电气的XBTG系列触摸屏与Twido、Micro及Premium等系列PLC组成的控制系统应用本文介绍的方法可以比较完美地解决这一问题。使用到的功能施耐德电气XBTG系列触摸屏的变量数组功能及脚本语言,施耐德电气PLC(Twido/Micro/Premium)的字对象的抽取位。具体描述以施耐德电气的Twido系列PLC为例进行说明,在TwidoSoft软件中对硬件进行配置如图1。在触摸屏的某一页面需要监控PLC上的所有输入/输出点,在PLC的程序中加入相应的语句,如图2所示。在此段程序中完成将输入点I0.0I0.15共16个输入点的状态赋值给MW200,使用的是Twido的结构化对象功能,同样操作,将要在触摸屏上监控的所有变量放在MW200MW206共7个字变量中。在XBTG触摸屏一侧,因使用Modbus协议与PLC通讯,PLC中的I/O无法被直接访问到,使用这种方法可以解决这一问题。 图1 图2如果在程序中有中间位变量需要用这种方式送到触摸屏中,可以分为两种情况来考虑。首先,在做PLC的程序时,将相应的位信号放入到MW中,即使用MW字变量的位抽取功能,这样可以省去图2中的赋值语句部分,用法参考图3所示。其次,如果位变量用的是M,而M是连续的且符合以下规定:%Mx:y(x必须为8的整数倍),则可以用图4中的程序段完成。 图3在上面的程序段中都使用了施耐德电气的PLC所特有的功能:字变量的位抽取功能(即所有的MW字变量均可按位寻址)及变量的结构化功能。关于这些功能的进一步信息,请参考相应的手册。 图4在PLC的程序中完成相应的处理后,下面进入XBTG触摸屏程序中。在触摸屏的变量表中建立与PLC关联的外部数据,如图5。 图5 在这一步操作中需要建立7个来自PLC的变量4020140208,命名为MW200MW208。再在变量表中建立内部数组变量,数组变量中的数据会直接出现在屏幕上,如图6。共需要建立7个以上对应PLC的I/O点的数组I0I3及Q0Q3,其中I1的数组大小定义为8(原因见脚本部分注释),其余定义为16。建立好的数组如图7。所需变量建立完毕后,在Vejio-Designer编程环境中建立一个如图8程序脚本,相应属性设置为:周期性脚本,刷新周期1秒。脚本中写入内容:/-/Script Created: 月 16, 2004/从PLC通讯的字(MW)分解出位信号/主要用于减轻XBTG屏与PLC通讯的压力/程序编制及测试:张福,LEC,AUT,IA,Schneider/-int PlcInPut0,PlcInPut1,PlcInPut2,PlcInPut3;int PlcOutPut0,PlcOutPut1,PlcOutPut2;int i,BitValue;int tmp0,tmp1,tmp2,tmp3,tmp4,tmp5,tmp6;PlcInPut0=PlcData.MW200.getIntValue(); /得到PLC输入I0.0I0.15状态字PlcInPut1=PlcData.MW201.getIntValue(); /得到PLC输入I0.16I0.23状态字PlcInPut2=PlcData.MW202.getIntValue(); /得到PLC输入I1.0I1.15状态字PlcInPut3=PlcData.MW203.getIntValue(); /得到PLC输入I1.16I1.31状态字PlcOutPut0=PlcData.MW204.getIntValue(); /得到PLC输入Q0.0Q0.15状态字PlcOutPut1=PlcData.MW205.getIntValue(); /得到PLC输入Q2.0Q2.15状态字PlcOutPut2=PlcData.MW206.getIntValue(); /得到PLC输入Q2.16Q2.31状态字BitValue=1;for (i=0;i16;i+) /一个做16次循环分解为位变量 if (i=0) BitValue=1; else BitValue=2*BitValue; /第i位 tmp0=PlcInPut0 & BitValue; /PLC输入字I0状态字第i位的值 tmp1=PlcInPut1 & BitValue; /PLC输入字I1状态字第i位的值 tmp2=PlcInPut2 & BitValue; /PLC输入字I2状态字第i位的值 tmp3=PlcInPut3 & BitValue; /PLC输入字I3状态字第i位的值 tmp4=PlcOutPut0 & BitValue; /PLC输出字Q0状态字第i位的值 tmp5=PlcOutPut1 & BitValue; /PLC输出字Q1状态字第i位的值 tmp6=PlcOutPut2 & BitValue; /PLC输出字Q2状态字第i位的值 I0i.write(tmp0); /将得到的I0的位状态写入数组I0i I2i.write(tmp2); /将得到的I2的位状态写入数组I2i I3i.write(tmp3); /将得到的I3的位状态写入数组I3i Q0i.write(tmp4); /将得到的Q0的位状态写入数组Q0i Q1i.write(tmp5); /将得到的Q1的位状态写入数组Q1i Q2i.write(tmp6); /将得到的Q2的位状态写入数组Q2i if(i9) /输入状态字I1只8位有效数据(I0.16I0.23) I1i.write(tmp1); /将得到的I1的位状态写入数组I1i 在上面的脚本程序中主要完成将来自PLC的包含了IO状态的变量字拆分,拆分后得到每一个IO点的状态,将得到的IO状态值写入到建立好的数组中。假定在触摸屏的某一页面上需要监控来自PLC的所有IO数据,画面如图8。画面中的IO状态指示均按图设置为相应的数组变量。 图7经过以上步骤,在触摸屏中采集PLC上的104个IO点的程序就全部做完,采集这104个IO数据占用的通讯内容只有7个字:4020140208,比常规方式节约通讯内容:104/7

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论