(已结贴)工控PLC擂台第73期-触摸屏宏指令在工程中的应用 点击:3845 | 回复:16



玻璃的心

    
  • 精华:30帖
  • 求助:2帖
  • 帖子:962帖 | 5801回
  • 年度积分:0
  • 历史总积分:61250
  • 注册:2010年6月11日
发表于:2012-01-11 17:02:17
楼主

     该题为征集题,题目是这样叙述的:一直对HMI的宏指令感兴趣,只是非常遗憾,无论触摸屏厂家,还是工程应用,实际使用中可能需要宏指令,但是很少使用宏指令,那台达B系列来说:

图中的各种宏,在工程中有哪些具体应用?其他的HMI品牌也可。由于我们这个擂台是以PLC为主的,因此,在回答擂台时,希望大家有所应用的触摸屏和相应的任何一种PLC的连接过程。也就是在回答这个问题之前一定要有你所用的触摸屏和某种PLC的通信连接。而且最好有截图和讲解。
PLC,触摸屏类型任意选择,回答的最好最完全的,原创最多,阐述最详细,程序越准确者获一等奖!





工控PLC擂台每周一期,本期待72期结束一周后结贴。奖项设置:一等奖2名:50MP,二等奖5名:10MP,三等奖10名:30积分。

MP介绍:gongkongMP即工控币,是中国工控网的用户积分与回馈系统的一个网络虚拟计价单位,类似于大家熟悉的QB,1个MP=1元人民币。

MP有什么用?兑换服务:以1个MP=1元来置换中国工控网的相关服务。 兑换现金:非积分获得的MP可兑换等值现金(满100MP后、用户可通过用户管理后台申请兑换)。



楼主最近还看过



hzhpl

  • 精华:0帖
  • 求助:4帖
  • 帖子:23帖 | 355回
  • 年度积分:0
  • 历史总积分:5311
  • 注册:2011年10月21日
发表于:2012-01-11 19:02:38
1楼

    沙发……我哈哈

水中鱼

  • 精华:43帖
  • 求助:4帖
  • 帖子:324帖 | 3802回
  • 年度积分:0
  • 历史总积分:15038
  • 注册:2011年11月10日
发表于:2012-01-12 14:42:28
2楼

    

下面以威伦MT 8000 触摸屏和三菱plc进行说明

    PLC 与触摸屏结合运用的技术已越来越为工程人员所了解与熟悉, 由于触摸屏具有操作简便、界面美观直接、交互性好、可靠性高、编程容易以及与PLC 连接简便等优点, 已经作为一种新兴的人机交互模块。其所使用的编程语言是宏指令, 宏指令应用灵活, 形式自由, 具备计算机高级语言的表达式、算术和逻辑运算的程序流程。本文所使用的宏指令是一种类似于VBScript 语言的格式, 主要通过编写宏指令程序来进行时间限制。下面通过具体的实例来阐述如何通过宏指令实现触摸屏与PLC 之间的通讯。

     在PLC 梯形图中进行设置
时间设置程序主要是在梯形图中进行编写, 当比较条件满足时触摸屏就会从PLC 中读取数据, 然后在触摸屏的 “ 数值输入”元件中进行密码输入, 最终达到设计要求。
    在PLC 梯形图中进行时间设置
本梯形图采用 GX Developer 编程软件, GXDeveloper 是三菱公司开发的用于三菱A 系列、QnA系列、Q 系列、FX 系列可编程控制器的编程软件, 同时可以对写入可编程控制器CPU 的程序进行调试、监视以及诊断等, 是一个功能强大的通用性编程软件。打开GX Developer 软件建立新工程, 梯形图如图1 所示。在图1 所示的程序中, 先将密码“ 925918”保存到32 位寄存器中, 并且将存放于D8018~D8013 中的年、月、日、时、分、秒时钟数据分别读入D0~D5数据寄存器中, 当到达设定时间且按下X4(设备运行时必备按钮) 时,就会使M8037(强制ST OP,特殊继电器自带功能)变为1, PLC 就会被强制停止, 输出也就停止了。这时则触发了设置在触摸屏中的 “ 直接窗口”元件, 它的读取地址设为PLC 中的M0, 在属性里设置目标出窗口编号, 然后复制这个 “ 直接窗口” 元件覆盖所有窗口。 当触摸屏处于任何窗口时, 若比较时间已到, 就会弹出那个目标窗口, 当目标窗口的“ 数值输入” 元件中的输入数字和D515、 D516 中的数字相同时, M8036(强制RU N, 特殊继电器自带功能)就会重新使PLC 运行, 此时M0 的位地址为0, 弹出的窗口就会关闭。

 

     在触摸屏中通过宏指令来进行时间设置
打开EB8000 Project Manag er , 单击“ 工具—宏指令” , 在打开的对话框中点击 “ 新增” , 在弹出的对话框中进行宏指令的编写。将第一个宏指令名称设为“ 实际的时间对比” , 现在对宏指令作进一步的解释:
macro- command main( )
int year, month, day/ /定义变量
int PLC - year, PLC - month, PLC - dayint w indow
GetDat a( PLC- year, "MIT SU BISHI FX0n/ FX2", D- BC D,

/ /从 PLC 中数据寄存器D520 中读取数据给变量year
GetDat a( PLC - month, " MITSUBISHIFX0n /FX2", D- BCD, 521,
1)GetDat a( PLC - day, "MITSUBISHIFX0n /FX2", D- BCD, 522, 1)
GetDat a( year , "Local HMI", LW- BCD, 9015, 1) / /从触摸屏中
的系统寄存器地址 LW9015 中读取年的地址
GetDat a( m on th , "Local HM I", LW- BCD, 9014, 1)
GetDat a ( day, " Local HMI", LW- BCD, 9013, 1 ) if year = =

 窗口转换宏指令
同样, 打开 “ 工具—宏指令”点击 “ 新增” , 然后在弹出的对话框中编写宏指令如下:
macro- command main( )
short com1, com2, com3/ /定义短整型变量
com1= 0925/ /将变量 com 1赋初始值
GetDat a( com 2, " Local HMI", LW, 20, 1) / /从“ 数值输入” 元件中读取 com2 地址
if com 2= = com1 th en / /判断两值是否相等
com3= 10/ /如果条件为真, 则把 10 赋值给com3
el se if com2 < > com1 and com2 < > 0 th en/ /如果条件为假, 并且com2 不等于 0 时com3= 12/ /将 com 3 赋值为 12
end if
SetData( com 3, "L ocal HMI", LW, 21, 1) / /将 com3 的值赋给LW21, 即窗口切换的读取地址
end macro- comm and
此宏指令 “ 模拟的窗口转换程序”运行条件的设定与宏指令“ 模拟的时间对比程序” 设置基本一样, 只需将宏指令名称选择 “ 模拟窗口转换”即可。在设置“ 元件—PLC 控制”时, 在控制属性中选择“ 切换基本窗口”对话框, 只需将触发地址设置为LW21 即可.

 进行离线模拟
在 “ 保存—编译”中进行 “ 离线模拟” 。首先在3个 “ 数值输入”元件中输入年月日, 则 “ 模拟时间对比”的宏指令开始执行。
由于满足里面的i f 条件, 这时出现如图4( a)所示的画面,然后再输入口令数字,如果正确, 则返回原来窗口;如果不正确,则弹出如图4( b)所示的画面。

 

时空

  • 精华:2帖
  • 求助:250帖
  • 帖子:541帖 | 4473回
  • 年度积分:0
  • 历史总积分:31341
  • 注册:2008年6月06日
发表于:2012-01-14 19:56:09
3楼
楼上的大哥,谢谢,看到过威纶的宏指令控制PLC程序的,哈哈,期待众兄弟捧场!

zhxl198808

  • 精华:7帖
  • 求助:14帖
  • 帖子:79帖 | 3915回
  • 年度积分:0
  • 历史总积分:22219
  • 注册:2008年9月06日
发表于:2012-01-17 11:19:11
4楼

三菱PLC FX2N通过自由串口和PanelVisa触摸屏通讯,实现屏和PLC的时间手动同步。
接线图如下:

PLC的通讯程序如下:

屏的连接属性如下:

连接属性的参数设定需要与PLC的通讯参数一样.
通讯设置完之后,我们需要建立一个同步的按钮。

此同步按钮的功能选择保持1,写入地址可以地址定义,我们这里就使用内部地址$U1.0, 它的壹宏为:

TX=1,发送请求信号,让PLC通过串口发送时间数据到屏;$U200=MOV(RX_W,7), 接受来自PLC的时间数据并存入寄存器$U200-$U206;然后再转换数据,最后设置屏的内部时钟。

按钮的零宏为:

TX=0,复位信号

以上例子是通过串口通讯的方式,实现触摸屏和PLC之间的时间同步。触摸屏通过宏指令的TX发送请求信号给PLC,然后再通过RX接受来自PLC的时钟信号,并加以转换,最后设定为内部时钟,从而通过屏的宏指令实现了和PLC的串口通讯。

bhdxzgp

  • 精华:8帖
  • 求助:10帖
  • 帖子:197帖 | 5451回
  • 年度积分:0
  • 历史总积分:21613
  • 注册:2006年4月16日
发表于:2012-02-01 22:38:47
5楼

南大傲拓的NAVIEW的触摸屏;

运行动画的宏程序如下:

Dim a
a=1
Dim x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16,x17
‘流动显示
If a=0 Then
x13=0
ElseIf a=1 Or a=2 Then
x13=1
Else
x13=2
End If
‘屏蔽内冷;
If a=1 Or a=3 Then
x14=1
Else
x14=0
End If
‘屏蔽外冷;
If a=2 Then
x15=1
Else
x15=0
End If
‘屏蔽四通1
If a=1 Or a=2 Then
x16=1
Else
x16=0
End If
‘屏蔽四通2
If a=3 Then
x17=1
Else
x17=0
End If
‘工作流动模式不同1的;
If a=0 Then
x1=0
x2=0
x3=0
ElseIf a=1  Then
If x1>=2 Then
x1=0
Else
x1=x1+1
End If
If x1=0 Then
x3=1
Else
x3=0
End If
If x1=2 Then
x2=1
Else
x2=0
End If
Else
If x1>=2 Then
x1=0
Else
x1=x1+1
End If
If x1=0 Then
x2=1
Else
x2=0
End If
If x1=2 Then
x3=1
Else
x3=0
End If
End If

‘工作流动模式一样;
If a=0 Then
x4=0
x5=0
x6=0
Else
If x4>=2 Then
x4=0
Else
x4=x4+1
End If
If x4=0 Then
x6=1
Else
x6=0
End If
If x4=2 Then
x5=1
Else
x5=0
End If
End If

‘工作流动模式不同2的;
If a=0 Then
x7=0
x8=0
x9=0
ElseIf a=3  Then
If x7>=2 Then
x7=0
Else
x7=x7+1
End If
If x7=0 Then
x9=1
Else
x9=0
End If
If x7=2 Then
x8=1
Else
x8=0
End If
Else
If x7>=2 Then
x7=0
Else
x7=x7+1
End If
If x7=0 Then
x8=1
Else
x8=0
End If
If x7=2 Then
x9=1
Else
x9=0
End If
End If


‘工作流动模式不同3的;
If a=0 Then
x10=0
x11=0
x12=0
ElseIf a=2  Then
If x10>=2 Then
x10=0
Else
x10=x10+1
End If
If x10=0 Then
x12=1
Else
x12=0
End If
If x10=2 Then
x11=1
Else
x11=0
End If
Else
If x10>=2 Then
x10=0
Else
x10=x10+1
End If
If x10=0 Then
x11=1
Else
x11=0
End If
If x10=2 Then
x12=1
Else
x12=0
End If
End If
‘实时输出显示
document.SetPointValue "LD1",x1
document.SetPointValue "LD2",x2
document.SetPointValue "LD3",x3
document.SetPointValue "LD4",x4
document.SetPointValue "LD5",x5
document.SetPointValue "LD6",x6
document.SetPointValue "LD7",x7
document.SetPointValue "LD8",x8
document.SetPointValue "LD9",x9
document.SetPointValue "LD10",x10
document.SetPointValue "LD11",x11
document.SetPointValue "LD12",x12
document.SetPointValue "LD13",x13
document.SetPointValue "LD14",x14
document.SetPointValue "LD15",x15
document.SetPointValue "LD16",x16

abysmal

  • 精华:2帖
  • 求助:0帖
  • 帖子:22帖 | 2181回
  • 年度积分:0
  • 历史总积分:11212
  • 注册:2001年10月26日
发表于:2012-02-03 06:18:56
6楼

不知道诸位有没有接触过不需要专门编程软件的HMI触摸屏?我现在的项目中就在用。

品牌是美国Reach (www.reachtech.com),这是我第一次使用这个品牌的产品。与其说它是控制用HMI,不如说是个嵌入式计算机。与以往使用的工控HMI不同,Reach HMI有以下特点:

1. 不支持任何应用层工业协议,当然TCP/IP是支持的。

2. 不需要任何专门编程软件。

 

这是个车载紧急开门系统,用在悉尼铁路公司的第四代列车上,需要在屏上显示每一个车门的状态。有异常发生时,需要有文字提示。要在屏上显示司机和保安所在车厢。另外根据保安所在位置自动调节屏的亮度。

 

虽然没有编程软件,但是这个屏还是提供了对宏指令的支持。比方说右下角两个亮度调节按钮,左边那个按一下屏幕变亮,右边那个按一下屏幕变暗;还有右上角客户公司的标志,需要显示不停滚动;在不同亮度的条件下,还要显示两种不同色调。这些都是宏指令实现的。

 

 

这是一种纯脚本的HMI,也就是说,要让它显示什么画面,数据,或者动画,你都需要通过串口向HMI发送指令串。比如说“l 0 0 480 320"就是让HMI画一条从左上到右下的直线。当然还有其他各种指令,来设定颜色、线条粗细等等。

可以做动画,但事先得把组成动画的各个帧以bmp的格式上传入HMI的闪存,然后再通过指令依次调用。所有与PLC的通讯也是通过ASCII的指令方式来实现。

这种屏其实最适合用作单板机的HMI,ASCII指令通讯非常灵活,可以快速开发出想要的界面。但是用于PLC通讯就有些麻烦,因为哪怕是读一个最简单的寄存器,你都得手工编写ASCII串。要是界面复杂,你可能还得管理屏幕刷新,因为一次刷新全部图形元素所需要的字符串长度有可能已经超出了PLC的串口缓存容量。

不过也由于它的字符串属性,如果你的应用中有大量的字符串数据需要显示,我认为这还是一个性价比不错的解决方案。

无聊的和尚

  • 精华:0帖
  • 求助:3帖
  • 帖子:3帖 | 574回
  • 年度积分:0
  • 历史总积分:1753
  • 注册:2009年11月11日
发表于:2012-02-03 11:49:23
7楼
不会吧,我这台电脑装不了的哇,唉下次吧

chenminglei0509

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 721回
  • 年度积分:0
  • 历史总积分:5079
  • 注册:2011年3月13日
发表于:2012-02-05 19:47:05
8楼

首先申明一下,我感觉触摸屏的宏功能是触摸屏自己的功能,主要的判断和运算也是在触摸屏内部进行的,和用什么样的PLC没有关系,只要这个触摸屏能够与PLC通信就可以。

有很多简单的运算,判断之类的逻辑,结果仅仅是供触摸屏使用,没有必要让PLC参与进来,那么这种时候就能够用宏来替代PLC的部分功能了。

首先我们使用欧姆龙的NS系列触摸屏,使用欧姆龙CPM*系列的PLC与之通信。设置如下:

见图1

然后创建一个触摸屏的登录画面:

见图2

在登录按钮中编辑宏,界面入下:

见图3

宏内部语言为:

IF($W3==120 and $W1==120);

SHOWPAGE(1);

ELSE

MSGBOX("密码错误!!!","密码警告",H31);

ENDIF

判断输入的密码是否正确

运行后的效果如下

见图4

 

玻璃的心

  • 精华:47帖
  • 求助:2帖
  • 帖子:1303帖 | 5801回
  • 年度积分:0
  • 历史总积分:61251
  • 注册:2010年6月11日
发表于:2012-05-10 21:47:09
9楼
欢迎大家参与!!!!!!!!

断崖独坐

  • 精华:1帖
  • 求助:9帖
  • 帖子:28帖 | 228回
  • 年度积分:0
  • 历史总积分:1439
  • 注册:2010年9月17日
发表于:2012-05-11 09:18:26
10楼
下面的接着来,我正好可以学习,呵呵!

中国555

  • 精华:0帖
  • 求助:2帖
  • 帖子:6帖 | 861回
  • 年度积分:0
  • 历史总积分:7826
  • 注册:2009年3月08日
发表于:2012-05-12 12:29:33
11楼

 

以上为实例,希望对大家有用.

ahui885

  • 精华:0帖
  • 求助:1帖
  • 帖子:9帖 | 62回
  • 年度积分:0
  • 历史总积分:1032
  • 注册:2005年5月13日
发表于:2012-05-14 22:34:06
12楼
不错,好东东。学习了

EBN战略军团-黑丫头

  • 精华:0帖
  • 求助:8帖
  • 帖子:51帖 | 1885回
  • 年度积分:0
  • 历史总积分:8955
  • 注册:2011年10月27日
发表于:2012-05-15 16:21:23
13楼

不是用变量就可以搞定的,没用过宏指令

玻璃的心

  • 精华:47帖
  • 求助:2帖
  • 帖子:1303帖 | 5801回
  • 年度积分:0
  • 历史总积分:61251
  • 注册:2010年6月11日
发表于:2012-05-17 16:44:07
14楼

一等奖1名,20MP获得者:

bhdxzgp                              bhdxzgp


二等奖3名,10MP获得者:
zhxl198808——工控人生        zhxl198808

abysmal                               abysmal

chenminglei0509                  chenminglei0509


三等奖2名,100积分获得者:

水中鱼 --王者之师             su_plc

中国555                              中国555

玻璃的心

  • 精华:47帖
  • 求助:2帖
  • 帖子:1303帖 | 5801回
  • 年度积分:0
  • 历史总积分:61251
  • 注册:2010年6月11日
发表于:2012-05-17 16:46:11
15楼

一等奖1名,20MP获得者:

bhdxzgp                              bhdxzgp


二等奖3名,10MP获得者:
zhxl198808——
工控人生        zhxl198808

abysmal                               abysmal

chenminglei0509                  chenminglei0509


三等奖2名,100积分获得者:

水中鱼 --王者之师             su_plc

中国555                              中国555

玻璃的心

  • 精华:47帖
  • 求助:2帖
  • 帖子:1303帖 | 5801回
  • 年度积分:0
  • 历史总积分:61251
  • 注册:2010年6月11日
发表于:2012-05-17 16:47:38
16楼
本期擂台到此为止,欢迎大家继续参与以后的各期擂台!

热门招聘
相关主题

官方公众号

智造工程师