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

求助:s7-200时间比较怎么进行? 点击:3138 | 回复:30



指点江山

    
  • 精华:1帖
  • 求助:0帖
  • 帖子:13帖 | 124回
  • 年度积分:0
  • 历史总积分:308
  • 注册:2005年7月23日
发表于:2007-04-24 14:53:00
楼主
大家好,现在有个工程用到时间比较指令。[color=#0000FF]我刚接触Siemens的东西。我知道三菱的有时间比较指令TCMP然后输入:小时、分、秒,+控制M点,可是西门子的没有,我想用224CN的做几个时间段的控制,例如:当前时钟7:15,要求在8:30~17:30中间运行,其余停止。具体的时间比较怎么进行?原理怎么样?   是先比较秒呢?还是先比较分?还是先比较小时?  还是将时间转化成小数,集体比较?[/color]



xiao a

  • 精华:1帖
  • 求助:0帖
  • 帖子:102帖 | 555回
  • 年度积分:0
  • 历史总积分:958
  • 注册:2005年12月10日
发表于:2007-04-24 15:12:00
1楼
http://bbs.gongkong.com/detail_old.asp?id=372178
到这个贴子上看一下READ_RTC/SET_RTC上下班工作电铃定时控制,相信你就明白了。

指点江山

  • 精华:1帖
  • 求助:0帖
  • 帖子:13帖 | 124回
  • 年度积分:0
  • 历史总积分:308
  • 注册:2005年7月23日
发表于:2007-04-24 15:16:00
2楼
谢谢【yi yi】还有个问题:需要控制一个SM位当运行开关用。即硬件有个RUN/TERM/STOP开关,我想找个点I0.1控制PLC的起停,可否实现

xiao a

  • 精华:1帖
  • 求助:0帖
  • 帖子:102帖 | 555回
  • 年度积分:0
  • 历史总积分:958
  • 注册:2005年12月10日
发表于:2007-04-24 15:29:00
3楼
呵呵,没太明白你为什么要控制plc的启停,上电plc就RUN,但是你只要用I0.1控制一个M*.*来控制程序工不工作就可以了,为什么要控制plc的启停呢?

指点江山

  • 精华:1帖
  • 求助:0帖
  • 帖子:13帖 | 124回
  • 年度积分:0
  • 历史总积分:308
  • 注册:2005年7月23日
发表于:2007-04-24 15:56:00
4楼
我是用那个做个【急停按钮】,我以前用三菱的都做个急停,一般是[color=#800080]LD X0 OUT M8034 [/color]   [color=#0000FF]三菱中的M8034的作用是:暂停输入、输出映象区的动作,但是内部逻辑关系不停止。一旦打开X0,马上恢复动作。我是看看有没有这样作用的SM[/color]

指点江山

  • 精华:1帖
  • 求助:0帖
  • 帖子:13帖 | 124回
  • 年度积分:0
  • 历史总积分:308
  • 注册:2005年7月23日
发表于:2007-04-24 16:24:00
5楼
【yi yi】我看了你说的那个案例,他做的挺好的。不过有些特殊。我需要的是时间段,不是时间点。当当前时间越过那个点以后,怎么比较?现在有2个问题: 
一、[color=#008000]比如vd20 >=vd10   (即当前的日期过了)VD20中包含的是vb20(高) vb21(中高) vb22(中低) vb23(低)    它们的高低位是怎么排列的?还是vb20(低) vb21(中低) vb22(中高) vb23(高)?[/color]
二、[color=#0000FF]万年历中包含了你读出来的一个多余的值vb13,然而我需要的日期比较是不需要那个值的,假如当前日期2007-4-24 ,要求2008-4-24停止,VD10中vb13所在位置是那个位?它的存在对于目标设定值中vb23(空)会不会不准确?[/color]

xiao a

  • 精华:1帖
  • 求助:0帖
  • 帖子:102帖 | 555回
  • 年度积分:0
  • 历史总积分:958
  • 注册:2005年12月10日
发表于:2007-04-25 08:44:00
6楼
时间段也没问题的呀,你只要将条件设置为当VD13大于等于8:30且小于等于17:30时才作用就可以了。那就是当满足VB13(小时)>=8,VB14(分钟)>=30,VB15(秒)=0,且VB13(小时)<=8,VB14(分钟)<=30,VB15(秒)=0时这段范围内工作就可以了。
一.举个例子,如果将16#12写入到VW20中,则是VB21中寄存16#12;要是写入到VD20中,则是VB23中寄存16#12,
如果将16#1234写入到VW20中,则是VB21中寄存16#34,VB20中寄存16#12;写入到VD20中时VB23寄存16#34,VB22寄存16#12。
二.如果READ_RTC以VB10开始,那VB13不是存放小时的吗?例子元件说明上不是有吗。你不是也要用到小时吗?如果不用小时,你可以不去考勤虑比较它。在程序中执行完READ_RTC时把VB13数据考贝到VB23中,当然你设置值是从VB20开始的年,月,日,小时,分钟,秒。

指点江山

  • 精华:1帖
  • 求助:0帖
  • 帖子:13帖 | 124回
  • 年度积分:0
  • 历史总积分:308
  • 注册:2005年7月23日
发表于:2007-04-25 09:14:00
7楼
【yi yi】再次感谢你的热心答复。
晚上我查了些资料。自己做个总结:字位[color=#0000FF]4byte[/color]字节[color=0000FF][/color]字[color=#0000FF]16byte[/color]双字[color=0000FF]32byte[/color]
vb10   8byte  vw10 包含vb10 vb11,高八位vb10低八位vb11
做【急停按钮】的那个sm没找到,我用STOP指令代替的

xiao a

  • 精华:1帖
  • 求助:0帖
  • 帖子:102帖 | 555回
  • 年度积分:0
  • 历史总积分:958
  • 注册:2005年12月10日
发表于:2007-04-25 09:43:00
8楼
呵呵,看来还是自己动手丰衣足食,还是你自己能找到你想要的东东。

指点江山

  • 精华:1帖
  • 求助:0帖
  • 帖子:13帖 | 124回
  • 年度积分:0
  • 历史总积分:308
  • 注册:2005年7月23日
发表于:2007-04-25 09:58:00
9楼
【yi yi】再请教你一个问题:
    [color=#0000FF]10台200PLC组网,每台读取1个值到主站,我要比较10个数的值,就是,这10个值进行比较时,选取最大跟最小的值。找到最大值的同时,也要驱动对应的PLC的Q1点,最小的值要驱动对应的PLC的Q0点。[/color]     
我现在没有什么头绪,不知道有什么方便的方法实现这个程序

xiao a

  • 精华:1帖
  • 求助:0帖
  • 帖子:102帖 | 555回
  • 年度积分:0
  • 历史总积分:958
  • 注册:2005年12月10日
发表于:2007-04-25 10:07:00
10楼
我想你可把每台读取的值放到主站一系列连续固定的寄存器中,然后用使用循环指令,比较出最大和最小的值同时执行驱动输出。

指点江山

  • 精华:1帖
  • 求助:0帖
  • 帖子:13帖 | 124回
  • 年度积分:0
  • 历史总积分:308
  • 注册:2005年7月23日
发表于:2007-04-25 10:38:00
11楼
【yi yi】能详细解释一下你的那个循环指令求最大最小值原理么?最好做个例子。
我的想法:
一、[color=#0000FF]曾在C语言上见过类似的比较。它的方法是这样的:将所求的最大最小设置成变量VW100(最大值)VW200(最小值),然后读取所采集的值到主站VW10~VW90,挨个比较这个范围的值,比较完一对,就将比较大的赋值给VW100(最大值)比较小的赋值给VW200(最小值),通过几十次比较,然后才能得到VW100(最大值)、VW200(最小值)。[/color]这里也有个问题:找到了最大最小值,可是它们是个变量,不具体那台PLC的值是最大的,也就是说用标志M?.?无法对应[color=#FF0000]。(注:M?.?是中间辅助,驱动组网的9台PLC)[/color]
二、[color=#008000]查了一下200的系统手册,发现有个指令:查表指令FND,可以在建立的表格中,查找一定条件的数据。可是这个条件PTN一般是具体的条件,用VW100(最大值)、VW200(最小值)没法写入。简单是简单,可是怎么表达这个条件。[/color]

指点江山

  • 精华:1帖
  • 求助:0帖
  • 帖子:13帖 | 124回
  • 年度积分:0
  • 历史总积分:308
  • 注册:2005年7月23日
发表于:2007-04-25 11:06:00
12楼
我愁的头疼,麻烦高手指点一下思路。

xiao a

  • 精华:1帖
  • 求助:0帖
  • 帖子:102帖 | 555回
  • 年度积分:0
  • 历史总积分:958
  • 注册:2005年12月10日
发表于:2007-04-25 11:13:00
13楼
我给你工控网上提供的你的邮箱里发了一邮件你看一下吧。

指点江山

  • 精华:1帖
  • 求助:0帖
  • 帖子:13帖 | 124回
  • 年度积分:0
  • 历史总积分:308
  • 注册:2005年7月23日
发表于:2007-04-25 11:29:00
14楼
那个邮箱不常用,密麻忘了,没收到,你能不能再发一次。[color=#0000FF]bhqt94716009@163.com[/color]

xiao a

  • 精华:1帖
  • 求助:0帖
  • 帖子:102帖 | 555回
  • 年度积分:0
  • 历史总积分:958
  • 注册:2005年12月10日
发表于:2007-04-25 13:17:00
15楼
邮件已发送,查看一下吧

hongsi

  • 精华:0帖
  • 求助:0帖
  • 帖子:7帖 | 210回
  • 年度积分:0
  • 历史总积分:214
  • 注册:2006年2月21日
发表于:2007-04-25 13:46:00
16楼
你们才是高手,值得向你们学习,我也刚接触西门子PLC,现在就遇到一个问题想请教:我写了一小段要中断的程序,可是下载到PLC后确不执行,请看
LD  SM0.1             首次扫描调用子程序
CALL  SBR_0

SBR_0
LD   SM0.0
MOVB  5,  QB0    设置QB0初始状态
MOVB  0,  VB0    清零中断计数
MOVB  100,SMB34   指定定时中断时间
STCH   INT_0, 10   中断连接
ENI

INT_0
LD    SM0.0
INCB   VB0     中断计数
LDB    VB0,5    中断计数比较,这里是等于5
RLB    QB0,1    QB0左移一位
MOVB   0,VB0    清零中断计数


请你们给以指点一下啊,谢谢了

指点江山

  • 精华:1帖
  • 求助:0帖
  • 帖子:13帖 | 124回
  • 年度积分:0
  • 历史总积分:308
  • 注册:2005年7月23日
发表于:2007-04-25 14:17:00
17楼
【yi yi】邮件已收到。再次感谢
LD SM0.0 [color=#FF0000]EU[/color] MOVB 5, QB0    设置QB0初始状态这里最好用脉冲触发,别一直传。 [color=#FF0000]A[/color]TCH   INT_0, 10   中断连接

LDB[color=#FF0000]=[/color]    VB0,5    中断计数比较,这里是等于5

xiao a

  • 精华:1帖
  • 求助:0帖
  • 帖子:102帖 | 555回
  • 年度积分:0
  • 历史总积分:958
  • 注册:2005年12月10日
发表于:2007-04-25 16:23:00
18楼
不客气。

应该加入分离中断DTCH 10吧。

hongsi

  • 精华:0帖
  • 求助:0帖
  • 帖子:7帖 | 210回
  • 年度积分:0
  • 历史总积分:214
  • 注册:2006年2月21日
发表于:2007-04-25 22:14:00
19楼
谢谢两位了

别墅

  • 精华:0帖
  • 求助:0帖
  • 帖子:133帖 | 1355回
  • 年度积分:0
  • 历史总积分:3722
  • 注册:2006年4月09日
发表于:2007-04-25 23:07:00
20楼
还没学到这一步,和高手比较真的感觉自己水平太低了。还要继续努力学习,还望各位高手指教

热门招聘
相关主题

官方公众号

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