首页 上一页 1 2 3 下一页 尾页

工控PLC擂台第82期-PLC的一道设计题 点击:2038 | 回复:43



玻璃的心

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

在操作台上面有3个按钮(分别是上、下、确定分别接到plc的i0.0、i0.1、i0.2三个输入端子)在另一端是触摸屏。由于条件限制不能用手直接触摸到屏 所以只能通过这3个按键来控制 触摸屏上的键。

第一级设计要求:简单的3个按钮 控制只有1页画面的 1竖排5个动画按钮!!!

第二级设计要求:中等难度的,通过上下左右确定(5个按钮 plc 5个输入)控制触摸屏上横3竖3共9个按钮。

第三级设计要求:令人发狂的,用上下左右确定5个按钮控制触摸屏上 3个 或者更多页面的画面。。

plc为西门子自定、触摸屏为亦自定。无论设计出哪一级要求的即可!

 

PLC类型任意选择,回答的最好最完全的,原创最多,阐述最详细者获一等奖!

 

 

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

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

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



楼主最近还看过



yuanle

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 10267回
  • 年度积分:504
  • 历史总积分:50650
  • 注册:2005年4月22日
发表于:2012-06-18 11:23:20
1楼

第二级要求与第三级要求属于完全相同的要求:PLC中并不需要编写程序,当然,也可以编写程序,直接在触摸屏中写脚本,确定按钮的组合,第一级3个按钮可以有8种状态,在触摸屏中比较并对对应的按钮置位即可。第二级只是比较的多一点,第三级与前面的差异就是前面是置位比较,这里只要直接去修改画面号这个触摸屏中特殊寄存器就可以了。

EBN战略军团-王道火山

  • 精华:2帖
  • 求助:7帖
  • 帖子:101帖 | 1878回
  • 年度积分:0
  • 历史总积分:7858
  • 注册:2012年1月11日
发表于:2012-06-18 11:54:48
2楼

占楼编辑                            

余 辉

  • [版主]
  • 精华:54帖
  • 求助:45帖
  • 帖子:3402帖 | 28521回
  • 年度积分:201
  • 历史总积分:136567
  • 注册:2006年4月25日
发表于:2012-06-18 13:11:30
3楼
重在参与        

矩形科技

  • 精华:1帖
  • 求助:0帖
  • 帖子:26帖 | 276回
  • 年度积分:0
  • 历史总积分:1221
  • 注册:2008年1月18日
发表于:2012-06-20 12:01:32
4楼

首先本文是写于6.20日下午。楼上的都还没有写程序的,本人是第一个写的,也希望后续写的人能用其他方式实现,不要抄袭我的创意,哈哈,看看能不能给个第一。先来做第二题,第一题就太没有意思了。首先我们看如下的数据排列,这个是我们实现方案的核心。数据按*2的方式排布。左右移动差别为2倍,上下移动数据差别为8倍。如果更多行列也可以按照此规则排布。

124
81632
64128256

另外一个需要注意的是我们PLC的寄存器可以和位对应,寄存器(16位)的bit0~bit15对应16位开关量输出,例如0065~00080的16个位对应一个寄存器,0081~0096对应一个寄存器。另外PLC编程1xxx为开关量输入,0xxxx变量为开关量输出和中间辅助节点。4xxxx为中间寄存器。

有了上面的铺垫,下面的程序应该可以看明白了。

最后一个图片是调试的窗口,0065-0073表示3*3的输出,显示的是光标

0081-0089为实际的输出,按确定键后可以输出。10001-10005可以直接在数值中输入数据,输入1或者ON为开关点导通,输入0或者OFF为断开。

plc程序下载以及PLC软件仿真请访问http://www.plcstar.com/plcstar/downloads/dl02/234.html

原程序下载可访问:http://www.plcstar.com/plcstar/downloads/dl02/259.html

矩形科技

  • 精华:1帖
  • 求助:0帖
  • 帖子:26帖 | 276回
  • 年度积分:0
  • 历史总积分:1221
  • 注册:2008年1月18日
发表于:2012-06-20 17:29:15
5楼

上面是第二题,现在来写第三题。第三题其实就增加了一个上下翻页键。多一个页面寄存器控制而已。

直接贴程序,假设有3个页,用了3个子程序,等于每个子程序里,将楼上的程序单独执行即可。

初始化变量要多一点。

主程序:

第一页执行的子程序

还有2个子程序就不上传图片了,可以下载源程序看看。

源程序请见楼上的链接。不过强烈建议先验证2题,再来看三题比较合适

knkk232

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 5回
  • 年度积分:0
  • 历史总积分:122
  • 注册:2011年12月28日
发表于:2012-06-21 14:05:43
6楼

下载了,试过了,实现了,矩形科技不错,很巧妙达到了要求。受益匪浅,谢谢!

戴国政

  • 精华:0帖
  • 求助:1帖
  • 帖子:1帖 | 14回
  • 年度积分:0
  • 历史总积分:98
  • 注册:2010年4月29日
发表于:2012-06-26 22:25:32
7楼

 思路:                                           

 1  2  3                                    上  

 4  5  6                            左    确定     右

 7  8  9                                    下

 上+左+确定=键1

 上+确定=键2

 上+右+确定=键3

     .

     .

 下+右+确定=键9

 

1、采用自锁带灯按钮,便于输入观察;采用以上按键对应关系,便于理解和操作工输入;

2、以确定键上升沿作为输入状态确认和按键选择标志位置位,以确认键下降沿作为按键选择标志位复位;确认件指示灯判断是否有效,当输入有效,灯长亮;无效输入,灯闪烁;

 

接口和主要存储标志位

I0.0  确认    I0.1   上          I0.2  下           I0.3  左        I0.4  右

 m0.1 --m0.7    键1-7选择标志位     m1.0  键8      m1.1   键9        m0.0   常0

m100.2  确认请求        m100.3    输入错误

 

 

电工九段

  • 精华:2帖
  • 求助:9帖
  • 帖子:60帖 | 1381回
  • 年度积分:0
  • 历史总积分:5582
  • 注册:2006年4月29日
发表于:2012-06-27 22:21:27
8楼

I0.0为向下按钮,I0.1为向上按钮,I0.2为确定按钮。

M1.0至M1.4为5个虚拟按钮的PLC地址。

M0.0至M0.4为5个虚拟小鼠标箭头的PLC地址,用来显示目前定位于哪个虚拟按钮。

 

yexiaomeng

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 181回
  • 年度积分:0
  • 历史总积分:731
  • 注册:2005年12月19日
发表于:2012-06-27 23:53:33
9楼

楼主和楼上的都考虑太复杂了,实际上只要3个按钮就能实现所有的功能。一个上,一个下,一个确定足矣。定义一个中间变量MB0,可以实现0~255个按钮;如果定义MW0可以实现0~65535个按钮。不才就简短的写个流程(以256个按钮为例):

初始化: MB0=0;

按“上”(上跳沿)时 MB0加1,如果等于255则等于0;按“下”(上跳沿)时,MB0减1,如果等于0则等于255;

按“确定”(上跳沿)时,根据MB0的内容执行不同的操作,也可以定义MB0的某些值为翻页操作。

这样操作即节省IO点,程序也简单。

余 辉

  • [版主]
  • 精华:54帖
  • 求助:45帖
  • 帖子:3402帖 | 28521回
  • 年度积分:201
  • 历史总积分:136567
  • 注册:2006年4月25日
发表于:2012-06-28 06:31:03
10楼
向牛人们学习             

戴国政

  • 精华:0帖
  • 求助:1帖
  • 帖子:1帖 | 14回
  • 年度积分:0
  • 历史总积分:98
  • 注册:2010年4月29日
发表于:2012-06-28 11:59:47
11楼

回复内容:
对:yexiaomeng关于楼主和楼上的都考虑太复杂了,实际上只要3个按钮就能实现所有的功能。一个上,一个下,一个确定足矣。定义一个中间变量MB0,可以实现0~255个按钮;如果定义MW0可以实现0~65535个按钮。不才就简短的写个流程(以256个按钮为例):初始化: MB0=0;按“上”(上跳沿)时 MB0加1,如果等于255则等于0;按“下”(上跳沿)时,MB0减1,如果等于0则等于255;按“确定”(上跳沿)时,根据MB0的内容执行不同的操作,也可以定义MB0的某些值为翻页操作。这样操作即节省IO点,程序也简单。内容的回复:


       楼上的方案在程序实现上并没有错,但我认为在应用上尤其是工业应用上不靠谱。存在以下几个方面的缺陷:

1、输入不方便,操作人员需要计算按了几次按钮,然后再按确认键,例如9键,需要按9次,很容易出错;

2、没有状态显示,操作人员有可能甚至无法确定当前的选择状态,输入出错没提示;

3、说法有误,工业控制上按键选择不是简单的算术,超过255(按键范围),只能判定为无效,不存在赋0再重新计数的说法;

yexiaomeng

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 181回
  • 年度积分:0
  • 历史总积分:731
  • 注册:2005年12月19日
发表于:2012-06-28 13:09:42
12楼

回复内容:
对:戴国政关于回复内容:对:yexiaomeng关于楼主和楼上的都考虑太复杂了,实际上只要3个按钮就能实现所有的功能。一个上,一个下,一个确定足矣。定义一个中间变量MB0,可以实现0~255个按钮;如果定义MW0可以实现0~65535个按钮。不才就简短的写个流程(以256个按钮为例):初始化: MB0=0;按“上”(上跳沿)时 MB0加1,如果等于255则等于0;按“下”(上跳沿)时,MB0减1,如果等于0则等于255;按“确定”(上跳沿)时,根据MB0的内容执行不同的操作,也可以定义MB0的某些值为翻页操作。这样操作即节省IO点,程序也简单。内容的回复:       楼上的方案在程序实现上并没有错,但我认为在应用上尤其是工业应用上不靠谱。存在以下几个方面的缺陷:1、输入不方便,操作人员需要计算按了几次按钮,然后再按确认键,例如9键,需要按9次,很容易出错;2、没有状态显示,操作人员有可能甚至无法确定当前的选择状态,输入出错没提示;3、说法有误,工业控制上按键选择不是简单的算术,超过255(按键范围),只能判定为无效,不存在赋0再重新计数的说法;内容的回复:


下位机只要处理按键的加减,其他的直观设计都可以在人机界面上进行,通过按纽选择按键之后,可以在人机界面上直观的表示当前的选择,比如在人机的按键上画一个红框框,具体在那个按键上划框框有MB0的值决定。
而且楼上的说法同时也说出了自己的不足,难道您的做法就可以只按一下键;而且您也没有说清楚自己的设计怎么解决直观的问题。MB0从255到0只是一种规定,也就是说到了最后一个按键再加就回到第一个按键,这个有什么问题?

而且您的程序更不方便,我要同时按四个键才能实现一个动作,这个可能吗?

如果要再加两个按钮,也仅仅只是减少按键的次数,这个也很简单,如果是个5×5的矩阵,假设矩阵以列优先,上下按钮的时候MB0加减1,左右的按钮MB0加减5.不才的做法方便之处就是可以实现n×n的键盘矩阵,只要n<255.假设矩阵

1   6   11  16  21

2   7   12  17  22

3   8   13  18  23

4   9   14  19  24

5  10  15  20  25

人机界面显示

戴国政

  • 精华:0帖
  • 求助:1帖
  • 帖子:1帖 | 14回
  • 年度积分:0
  • 历史总积分:98
  • 注册:2010年4月29日
发表于:2012-06-28 14:24:09
13楼

答楼上:

 1、要实现直观的显示当前选择状态,当然要有指示灯显示,所以一开始设计时会选择自锁带灯按钮。例外上面的设计中按键的排列也很讲究。例如:确定灯亮,说明做了有效的选择,确定灯闪烁,说明作了错误的选择,则需要取消重新选择;上+左灯亮,说明选择了键1,下+右灯亮,说明选择了键9,这是符合人对键盘的理解的。也就是说最多按两个键就可以完成选择;而如果通过点动加减计算,则最多需要9次按键;

 

2、触摸屏显示,首先我们要考虑操作台到触摸屏的距离。遇上近视眼,超过2米则人兽不分,在这种基础上,假设最大按键计数为9,某个娃手一抖按了10次,触摸屏离得远,又看不到选择状态,于是最终选择了按键1却以为自己选择了按键9,杯具了;

 

3、如果是5*5的键盘,我就会选择5*5个按键,外加一个确定键,不玩任何花招,因为太容易出错,操作工不是数学家,紧急情况下也不允许去做算术,所以宁愿在硬件上多花费点也要确保操作简单和安全;

 

4、至于触摸屏的编程,大部分情况下,和玩泥巴差不多;

yexiaomeng

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 181回
  • 年度积分:0
  • 历史总积分:731
  • 注册:2005年12月19日
发表于:2012-06-28 14:41:44
14楼

回复内容:
对:戴国政关于答楼上: 1、要实现直观的显示当前选择状态,当然要有指示灯显示,所以一开始设计时会选择自锁带灯按钮。例外上面的设计中按键的排列也很讲究。例如:确定灯亮,说明做了有效的选择,确定灯闪烁,说明作了错误的选择,则需要取消重新选择;上+左灯亮,说明选择了键1,下+右灯亮,说明选择了键9,这是符合人对键盘的理解的。也就是说最多按两个键就可以完成选择;而如果通过点动加减计算,则最多需要9次按键; 2、触摸屏显示,首先我们要考虑操作台到触摸屏的距离。遇上近视眼,超过2米则人兽不分,在这种基础上,假设最大按键计数为9,某个娃手一抖按了10次,触摸屏离得远,又看不到选择状态,于是最终选择了按键1却以为自己选择了按键9,杯具了; 3、如果是5*5的键盘,我就会选择5*5个按键,外加一个确定键,不玩任何花招,因为太容易出错,操作工不是数学家,紧急情况下也不允许去做算术,所以宁愿在硬件上多花费点也要确保操作简单和安全; 4、至于触摸屏的编程,大部分情况下,和玩泥巴差不多;内容的回复:


我在这里只是纯粹讨论问题,如果有言语上有冲突的,我说声对不起。

1.操作工不仅不是数学家,也没有能够把所有的组合键都记住的,就像电脑键盘上的组合键有谁能够全部记住?不才的意思并没有让操作工算术,而是根据人机交互,具体的怎么计算不用担心。

2.如果我是老板我也不会选择近视到不行的操作工,不说看人机,搞不好开机都可以把人弄死。

3.人机界面并没有多少难度,但是人界面的意义在于怎样更好的实现人机交互。所以可以很好的发挥人机界面的特点。一般不才设计人机界面的时候都要加动画设计的一个模拟开机的界面,不用开机在人机界面上就可以完成设备的常规操作。

 


 

icegrave

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 91回
  • 年度积分:0
  • 历史总积分:653
  • 注册:2010年8月03日
发表于:2012-06-29 17:12:06
15楼

PLC:S7-200

我只说思路

1.设一个变量动作--地址:MB0

2.3个输入点

   I0.0,接一按钮,使用上升沿命令,按一次按钮变量动作+1。

   I0.1 ,接一按钮,使用上升沿命令,按一次按钮变量动作-1

   I0.2   接一按钮,使用上升沿命令,按下,就置位M0.0;松开,使用下降沿命令,复位M0.0

3.在触摸屏上做一个变量显示窗口,显示变量动作的值

4.在触摸屏编写不同的变量值对应不同的动作,并且检测到M0.0==1时执行一次动作。

 例如:当变量动作==1时,对应的动作是点击触摸屏上三个并排着的按键中左边第一个,当M0.0==1执行一次。

其他的切换窗口,或者什么的就看需要了。

 

 

wl34

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 27回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2012-07-05 17:21:18
16楼
第1级,随后上第2级~~

wl34

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 27回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2012-07-05 18:55:08
17楼

第二级 三菱PLC

M0 M1 M2

M3 M4 M5

M6 M7 M8

wl34

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 27回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2012-07-05 19:16:37
18楼

第三级里似乎没有说明具体所以只说下具体的思想,假设有数组,就是要加一个翻页的功能。全部是思路就是先进行翻页再执行当前页的按键操作。

liubing3620

  • 精华:0帖
  • 求助:5帖
  • 帖子:13帖 | 107回
  • 年度积分:0
  • 历史总积分:220
  • 注册:2011年4月13日
发表于:2012-07-10 16:21:48
19楼
都很厉害啊~~~~~~~~~~~~~~~~~~~

矩形科技

  • 精华:1帖
  • 求助:0帖
  • 帖子:26帖 | 276回
  • 年度积分:0
  • 历史总积分:1221
  • 注册:2008年1月18日
发表于:2012-07-17 15:28:27
20楼

再来用一个左右移动的指令来实现以下:

首先介绍指令:RBROT 寄存器的位旋转/移动

节点说明

 

上节点:来源寄存器

中节点:目的寄存器

下节点:移动位数n

输入控制说明

 

I1:动作控制     输入动作时执行寄存器位的旋转/移动执行一次移动n个位

I2:动作方向控制。 = 0,向左; = 1,向右

I3:动作型态控制。 = 0,移动; = 1,旋转

 

因为这条指令的下节点来控制移动的位数。我们是3*3的按键,所以,上下移动每次移动3位,如果左右移动则,下节点的参数为1。并控制I2,来控制左右移动的方向。

 


热门招聘
相关主题

官方公众号

智造工程师
    首页 上一页 1 2 3 下一页 尾页