回复:有奖【微分享】“说说我用过的功能块”

古月游风

西门子1847工业学习平台

  • 帖子

    121
  • 精华

    3
  • 被关注

    5

论坛等级:侠客

注册时间:2010-04-22

普通 普通 如何晋级?

发布于 2014-04-12 11:27:29

143楼

说说第一个查表的问题吧
一、前言:
1、 系统能否正常工作,有个前提,即PLC的时间是要准确的,可通过手动调整时间或做时间同步。
2、 精度到分钟即可。自动程序的运行周期不须太快,在OB3x执行,10秒左右都可。
3、 开、关灯时间应为可设定的。
二、查表:
整个查表的过程分为以下几个环节:
1) 建立时间规则表,表内包括ID、开灯时间(TimeOpen)、关灯时间(TimeClose)、开始日期(DateStart)、结束日期(DateEnd),可在一个DB(UDT)或多个DB实现。本案例暂且为24行,实际可根据情况拓展。如下表所示:
ID TimeOpen TimeClose DateStart DateEnd
1 18:00 09:00 07-01 07-15
2 18:10 09:10 07-16 07-31
3
...

2) 获取系统时间,使用SFC1 READ_CLK,可获得DATA_AND_TIME,从中提取出日期和时间(INT)
3) 确定当前应使用哪个规则。可用当前日期和规则表中的开始日期、结束日期进行比较,进而获取规则ID(获取行)
4) 获取当前应开、应关时间。获取行ID后,将此行的开灯时间、关灯时间提取转存
三、动作:
1) 每个控制对象(单个灯或单组灯)建立功能块,暂且称为LCM。
2) LCM模式:
时间控制:自动查表时间,或手动设定的时间;
手动控制:单体操作
其它各种模式
3) 由LCM根据条件,控制输出
五、附录:引用的功能块
System Function Blocks
SFC1:READ_CLK 获取系统时间
SFC0:SET_CLK 设置系统时间
IEC Function Blocks
FC6:DT to DATE 转换Date_And_Time类型至Date类型
FC9:EQ_DT;FC12:GE_DT;FC14:GT_DT;FC18:LE_DT;FC23:LT_DT……比较2个Date

四、回顾
这个方案优点在于比较灵活,比较好扩展。当然缺点也很多。
1、 调整时间,只需要调整时间规则表,可从HMI设定。
2、 新增规则,只需增加规则表行数, 其它代码基本不用修改。

条条大道通罗马,解决的方案很多,没有最好的,只有最适合的。
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54616条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。