WinCC中定时器使用方法介绍
图文详解西门子博途中的定时器指令
图文详解西门子博途中的定时器指令S7-1200的定时器为IEC定时器,用户程序中可以使用的定时器数量仅受CPU的存储器容量限制。
使用定时器需要使用定时器相关的背景数据块或者数据类型为IEC_TIMER(或TP_TIME、TON_TIME、TOF_TIME、TONR_TIME)的DB块变量,不同的上述变量代表着不同的定时器。
注:S7-1200的IEC定时器没有定时器号(即没有T0、T37这种带定时器号的定时器)。
S7-1200包含四种定时器:·生成脉冲定时器(TP)·接通延时定时器(TON)·关断延时定时器(TOF)·时间累加器(TONR)四个指令如下图所示:一、脉冲定时器指令IN从“0”变为“1”,定时器启动,Q立即输出“1”;当ET<PT时,IN的改变不影响Q的输出和ET的计时;当ET=PT时,ET立即停止计时,如果IN为“0”,则Q输出“0”,ET回到0;如果IN为“1”,则Q输出“1”,ET保持。
二、接通延时指令N从“0”变为“1”,定时器启动;当ET=PT时,Q立即输出“1”,ET立即停止计时并保持;在任意时刻,只要IN变为“0”,ET立即停止计时并回到0,Q输出“0”。
三、关断延时指令只要IN为“1”时,Q即输出为“1”。
IN从“1”变为“0”,定时器启动;当ET=PT时,Q立即输出“0”,ET立即停止计时并保持。
在任意时刻,只要IN变为“1”,ET立即停止计时并回到0。
四、保持性通电延时指令只要IN为“0”时,Q即输出为“0”。
IN从“0”变为“1”,定时器启动;当ET<PT时,IN为“1”时,则ET保持计时,IN为“0”时,ET立即停止计时并保持。
当ET=PT时,Q立即输出“1”,ET立即停止计时并保持,直到IN变为“0”,ET回到0。
在任意时刻,只要R为“1”时,Q输出“0”,ET立即停止计时并回到0。
R从“1”变为“0”时,如果此时IN为“1”,定时器启动。
WinCC 中定时器使用方法介绍
1、定时器功能介绍2、脚本中定时器介绍3、使用脚本实现更多定时器功能3.1 整点归档3.2 WinCC 项目激活时避免脚本初次执行及延迟执行脚本1 定时器功能介绍WinCC 中定时器的使用可以使 WinCC按照指定的周期或者时间点去执行任务,比如周期执行变量归档、在指定的时间点执行全局脚本或条件满足时打印报表。
WinCC 已经提供了一些简单的定时器,可以满足大部分定时功能。
但是在有些情况下,WinCC 提供的定时器不能满足我们需求,这时我们就可以通过 WinCC 提供的脚本接口通过编程的方式实现定时的功能,因为脚本本身既可以直接调用 WinCC其他功能,比如报表打印,也可以通过中间变量来控制其他功能的执行,比如通过置位/复位归档控制变量来触发变量记录的执行。
WinCC 提供了 C 脚本和 VBS 脚本,本文主要以全局 C 脚本编程为例介绍定时功能的实现。
2 脚本中定时器介绍既然在全局脚本中可以编程控制其他功能的执行,那么首先看看全局脚本的触发:图1 脚本触发器分类如图1所示:脚本触发器分为使用定时器和使用变量,定时器又分为周期执行和非周期执行一次,比如每分钟执行一次脚本属于周期执行,指定2012年10月1日执行一次属于非周期执行。
使用变量触发脚本,即在变量发生变化时,脚本就执行一次,而变量的采集可以根据指定周期循环采集,或者根据变化采集,根据变化实际是1秒钟采集变量一次。
3使用脚本实现更多定时器功能利用脚本自身的定时器,可以通过在脚本中编程的方式实现更多其它定时功能。
3.1整点归档WinCC提供了变量归档,变量归档分为周期归档和非周期归档,不管是周期归档或非周期的归档,都又可以通过一些变量或脚本返回值来控制归档,比如:整点归档。
下面的设置结合WinCC脚本,实现了在整点开始归档,归档五分种后停止归档,即每个小时仅归档前五分钟的数据。
软件环境:Windows 7 Professional Service Pack1 , WinCC V7.0 SP3归档名称:ProcessValueArchive归档变量:NewTag归档周期:1 分钟归档控制变量 startarchiveC脚本触发周期:10秒脚本代码:#include"apdefap.h"int gscAction( void ){#pragma option(mbcs)#pragma code ("kernel32.dll");void GetLocalTime (SYSTEMTIME* lpst);#pragma code();SYSTEMTIME time;int t1;GetLocalTime(&time);t1=time.wMinute;if(t1==00){SetTagBit("startarchive",1); }if(t1==05){SetTagBit("startarchive",0); }return0;}归档设置如图2:图2 归档设置同理,在以上脚本的基础上做修改,可以实现在某个指定的时间点打印报表,只要在满足触发条件时调用下列函数:RPTJobPrint("Myprintjob");Myprintjob为事先创建好的打印作业。
定时器使用方法
定时器使用方法定时器是一种非常常见的功能,我们可以通过定时器来实现一些定时执行的任务,比如定时发送邮件、定时清理数据等。
在编程中,定时器也是一个非常重要的组件,它可以帮助我们实现一些定时执行的逻辑。
接下来,我将介绍一些定时器的使用方法,希望对大家有所帮助。
首先,我们需要了解定时器的基本原理。
定时器其实就是一个计时器,它可以在设定的时间间隔内执行特定的任务。
在编程中,我们可以通过调用系统提供的定时器接口来创建和启动定时器。
一般来说,定时器的使用可以分为以下几个步骤:1. 创建定时器,首先,我们需要创建一个定时器对象。
在大多数编程语言中,都提供了相应的定时器类或接口,我们可以通过实例化这些类或调用接口来创建定时器对象。
2. 设置定时器的时间间隔,接下来,我们需要设置定时器的时间间隔,即定时器多久执行一次任务。
一般来说,时间间隔可以以毫秒为单位进行设置,比如1000毫秒表示1秒钟。
3. 编写定时器任务,然后,我们需要编写定时器要执行的任务。
这个任务可以是一个函数或一个代码块,定时器会在设定的时间间隔内执行这个任务。
4. 启动定时器,最后,我们需要启动定时器,让它开始按照设定的时间间隔执行任务。
一旦定时器启动,它就会按照设定的时间间隔一直执行任务,直到我们手动停止它。
在实际的编程中,定时器的使用方法可能会有所不同,但基本原理是相似的。
下面,我将以Python语言为例,介绍一下如何使用定时器:```python。
import threading。
def task():print("定时器任务执行")。
# 创建定时器,设置时间间隔为3秒,指定定时器任务为task函数。
timer = threading.Timer(3, task)。
# 启动定时器。
timer.start()。
```。
在这个例子中,我们首先导入了Python的threading模块,然后定义了一个名为task的函数作为定时器的任务。
WinCC(变量记录和组态报警)
WCC变量记录和组态与报警
一、变量记录:
打开组态软件WCC进入变量记录:
点击定时器(读取变量的周期值),除默认外可另添加:
名称可任意设定,基准在默认值里选择,系数表示我所需要的间隔是基准的几倍。
其它如图设后点确定:
点归档:
点选择:
选中一个后点确定:
点完成即可,若想改变采集周期,可点变量属性:
可分别设置采集、归档/显示时间。
此为参数。
此为显示,若点击直接组态,则会有上下限值设定,当超限时画面只显示上下最大限值。
归档组态为默认,不用去改动设置。
完成后再保存。
另需在计算机属性的起动里要给变量记录系统打勾才能正常调用。
2、曲线组态:
点击画面编辑器里的控件:
双击出现的画面:
+为添加曲线-为减少曲线。
名称可填写中文的实际名。
选择归档/变量:
双击选中的变量可查看变量类型最后点确定:
一般选择线性连接,再选定线性粗细。
电击常规:
窗口标题为画面的总名称,显示标尺为鼠标点到曲线任一点时都自动读出该点数据;公共X轴一般为时间轴共用,Y轴若数据围一样也可共用。
时间围需选择。
标签可标中文实名;围选
择以实际值上下限填入,如0——150;标尺小数位为Y轴分度小数位;小数位为显示数据小数位。
点击确定后完成:
3、查找历史曲线:
在时间轴里点击
再在选择时间里点击选择时间里的要调看的时间段。
运行WCC当中若要改变画面可观度可点击分配参数重新设定:。
winCC_教程(使用、简明)
WinCC组态
更改计算机属性
在WinCC资源管理器中,右击 项目计算机名并在下拉菜单中 选择“属性”,在弹出的“计算 机列表属性”对话框中,单击 “属性”按钮
第十三页,编辑于星期六:七点 四十九分。
更 改 计 算 机 属 性
第十四页,编辑于星期六:七点 四十九分。
变 量 组 态
第五十四页,编辑于星期六:七点 四十九分。
WinCC组态
变量组态
在刚刚建立的驱动程序连接下建 立变量组(或变量) 右击刚刚建立的驱动程序连接,在 下拉菜单中选择“新建组”(也可 选择“新建变量”),在“变量组 属性”对话框的名称栏中填写该变 量组的名称
第五十五页,编辑于星期六:七点 四十九分。
变 量 组 态
第四十七页,编辑于星期六:七点 四十九分。
WinCC组态
变量组态
外部变量
指与PLC进行通讯的变量。建立过程如 下
添加驱动程序
右击“变量管理器”在下拉菜单中选 择“添加新的驱动程序” ,在“添 加新的驱动程序”对话框中选择 “SIMATIC S7 Protocol Suite”并单击 “打开”
第四十八页,编辑于星期六:七点 四十九分。
变 量 组 态
第四十九页,编辑于星期六:七点 四十九分。
变 量 组 态
第五十页,编辑于星期六:七点 四十九分。
WinCC组态
变量组态
在项目所选择的网卡下建立驱动程序连接
右击项目所选择的网卡,在下拉菜单中选择 “新建驱动程序连接” 。在 “连接属性”
对话框的“名称”栏中填写该连接的名称, 单击“属性”按钮,弹出“连接参数”对话 框,本例中使用的是TCP/IP,所以须添加IP
wincc读写定时器问题
[PLC、仪表资料][转载一西门子工程师]wincc读写定时器问题[ 2008/6/4 14:08:50 | By: 天涯 ]前日碰到了在wincc里面如何读取定时器当前时间以及设定定时器的时间问题,想起来以前曾经在西门子论坛里面看到过有人问这个问题,就去官方论坛里面search一把,果然很多帖子啊,整理了一下:-------------------------------------终于搞对了,WINCC里建立无符号32位数,改变格式DwordToSimaticBCDTimer,线形标定过程值0--1000,变量值0-1,地址选择对应的定时器就OK了,要注意的是I/O域的数据格式选择为字符串。
―――――――――――――――――――――――――――――――――――――――――――――――――――――――――将当前时间值的BCD码传给数据块―――――――――――――――――――――――――――――――――――――――――――――――――――――――――其实平常最多使用的是直接把定时器的bi端接到一个MW,然后从WINCC中读。
用MW20做为定时器的时间设定值 , 前面用一条I_BCD码转换指令传MW20定时时间, 结果输入0_999 的数时间对应0_9.99S没有问题, 但用0.1S做时间单元,设定4096以上的数时有时定时器不能正常启动. 总的说来还是对这块的帮组没有看明白,那位给指点下,我想连续的可以设定时间值在10S-50S 该怎么设定s5#time数据格式是低12位为BCD码时间数;高2位是时基:00-10ms01- 100ms10- 1s11- 10s所以大于4096就不正常了--------------------------------------找了台300plc,测试了下,第一个方法就可以(即:WINCC里建立无符号32位数,改变格式DwordToSimaticBCDTimer),我用的是sodts定时器指令,其bcd输出可以显示当前计时时间,设定端也可以从wincc直接改写,很简单啊。
WinCC(变量记录和组态报警)
WCC变量记录和组态与报警
一、变量记录:
打开组态软件WCC进入变量记录:
点击定时器(读取变量的周期值),除默认外可另添加:
名称可任意设定,基准在默认值里选择,系数表示我所需要的间隔是基准的几倍。
其它如图设后点确定:
点归档:
点选择:
选中一个后点确定:
点完成即可,若想改变采集周期,可点变量属性:
可分别设置采集、归档/显示时间。
此为参数。
此为显示,若点击直接组态,则会有上下限值设定,当超限时画面只显示上下最大限值。
归档组态为默认,不用去改动设置。
完成后再保存。
另需在计算机属性的起动里要给变量记录系统打勾才能正常调用。
2、曲线组态:
点击画面编辑器里的控件:
双击出现的画面:
+为添加曲线-为减少曲线。
名称可填写中文的实际名。
选择归档/变量:
双击选中的变量可查看变量类型最后点确定:
一般选择线性连接,再选定线性粗细。
电击常规:
窗口标题为画面的总名称,显示标尺为鼠标点到曲线任一点时都自动读出该点数据;公共X轴一般为时间轴共用,Y轴若数据范围一样也可共用。
时间范围需选择。
标签可标中文实名;范围
选择以实际值上下限填入,如0——150;标尺小数位为Y轴分度小数位;小数位为显示数据小数位。
点击确定后完成:
3、查找历史曲线:
在时间轴里点击
再在选择时间里点击选择时间里的要调看的时间段。
运行WCC当中若要改变画面可观度可点击分配参数重新设定:
(注:可编辑下载,若有不当之处,请指正,谢谢!)。
WinCC定时器C脚本-推荐下载
2、脚本中定时器介绍
3、使用脚本实现更多定时器功能 3.1 整点归档 3.2 WinCC 项目激活时避免脚本初次执行及延迟执行脚本
1 定时器功能介绍
WinCC 中定时器的使用可以使 WinCC 按照指定的周期或者时间点去执行任务,比如周 期执行变量归档、在指定的时间点执行全局脚本或条件满足时打印报表。WinCC 已经提供 了一些简单的定时器,可以满足大部分定时功能。但是在有些情况下,WinCC 提供的定时 器不能满足我们需求,这时我们就可以通过 WinCC 提供的脚本接口通过编程的方式实现定 时的功能,因为脚本本身既可以直接 调用 WinCC 其他功能,比如报表打印,也可以通过 中间变量来控制其他功能的执行,比如通过置位/复位归档控制变量来触发变量记录的执行。 WinCC 提供了 C 脚本和 VBS 脚 本,本文主要以全局 C 脚本编程为例介绍定时功能的实 现。
软件环境:Windows 7 Professional Service Pack1 , WinCC V7.0 SP3
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电通,力1根保过据护管生高线产中0不工资仅艺料可高试以中卷解资配决料置吊试技顶卷术层要是配求指置,机不对组规电在范气进高设行中备继资进电料行保试空护卷载高问与中题带资2负料2,荷试而下卷且高总可中体保资配障料置各试时类卷,管调需路控要习试在题验最到;大位对限。设度在备内管进来路行确敷调保设整机过使组程其高1在中正资,常料要工试加况卷强下安看与全22过,22度并22工且22作尽22下可护都能1关可地于以缩管正小路常故高工障中作高资;中料对资试于料卷继试连电卷接保破管护坏口进范处行围理整,高核或中对者资定对料值某试,些卷审异弯核常扁与高度校中固对资定图料盒纸试位,卷置编工.写况保复进护杂行层设自防备动腐与处跨装理接置,地高尤线中其弯资要曲料避半试免径卷错标调误高试高等方中,案资要,料求编试技5写、卷术重电保交要气护底设设装。备备置管4高调、动线中试电作敷资高气,设料中课并技3试资件且、术卷料中拒管试试调绝路包验卷试动敷含方技作设线案术,技槽以来术、及避管系免架统不等启必多动要项方高方案中式;资,对料为整试解套卷决启突高动然中过停语程机文中。电高因气中此课资,件料电中试力管卷高壁电中薄气资、设料接备试口进卷不行保严调护等试装问工置题作调,并试合且技理进术利行,用过要管关求线运电敷行力设高保技中护术资装。料置线试做缆卷到敷技准设术确原指灵则导活:。。在对对分于于线调差盒试动处过保,程护当中装不高置同中高电资中压料资回试料路卷试交技卷叉术调时问试,题技应,术采作是用为指金调发属试电隔人机板员一进,变行需压隔要器开在组处事在理前发;掌生同握内一图部线纸故槽资障内料时,、,强设需电备要回制进路造行须厂外同家部时出电切具源断高高习中中题资资电料料源试试,卷卷线试切缆验除敷报从设告而完与采毕相用,关高要技中进术资行资料检料试查,卷和并主检且要测了保处解护理现装。场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
WINCC 怎么定时启动一个或N个项目函数
WINCC怎么定时启动一个或N个项目函数问:1、在C脚本里,为什么只有全局动作的属性里可以设置触发器来定时启动全局动作的程序,而项目函数的属性却没有触发器设置呢?2、如果我要系统运行时就自动启动运行一次项目函数A,该怎么做?3、如果我要求系统运行时就自动周期运行项目函数B,周期可以设置,该怎么做?4、如果在全局动作里新建一个动作***.pas,在里面统一调用系统需要周期运行的项目函数,然后在这个全局动作属性里设置触发器定时器。
这样是否可以实现我的第三个问题?如下:int gscAction( void ){项目函数A;项目函数B;// WINCC:TAGNAME_SECTION_START// syntax: #define TagNameInAction "DMTagName"// next TagID : 1// WINCC:TAGNAME_SECTION_END// WINCC:PICNAME_SECTION_START// syntax: #define PicNameInAction "PictureName"// next PicID : 1// WINCC:PICNAME_SECTION_END}答:1、全局动作带触发器,所以只要动作被触发了,就执行。
对于时间类的触发器(定点定时的除外),系统刚开始激活运行时都会触发一次。
而项目函数是用户函数,本身不会被执行,只能通过其它动作来调用它,才会运行。
也就是说,如果没有其它程序调用它,这个项目函数就永远不会运行。
2、第1条里已经说明了,全局动作一般在系统启动时会执行一次。
如果只允许执行一次(如初始化等工作),可以先建个内部变量blnBegin(布尔型的),这个变量可以在主画面的Open Picture事件中赋值为1。
然后永远保持为1。
然后,建一个全局动作,触发器为变量触发(blnBegin),代码如下:if (GetTagBit("blnBegin")==1)项目函数A;}return 1;3、全局动作的触发器周期必须组态时设置,不能运行时动态设定。
WINCC读写S5TIME时间
WINCC写入与读取S5TIME类型的数据周辉(北京倍杰特国际环境技术有限公司2011-01-20)参考资料:STEP7中的帮助文件,数据类型S5TIME的格式。
STEP7中的时间,日期和定时器。
S5TIME的格式:S5TIME是用BCD码保存的,在数据存储区中占用两个连续的字节。
当使用S5TIME时,输入时间值的范围为0 - 999,并说明时间基准(参见下表)。
时间基准指的是定时器以多少间隔为一个单位来递减时间值,一直到达0的时间间隔。
S5TIME的时间基准(以下简称时基)时基 BCD码 时间范围10ms 00 10ms-9s990ms100ms 01 100ms-1m39s990ms1s 10 1s-16m39s10s 11 10s-2h46m30s注:ms=毫秒;s=秒;m=分;h=小时;可以使用下列语法格式之一预装载时间值1>W#16#wxyzw = 时基xyz=BCD格式的时间值2>S5T#aH_bbM_ccS_dddMSa = 小时,bb = 分钟,cc = 秒,dd = 毫秒时基自动选择,该值四舍五入至具有此时基的下一个较小的数字。
这里可以输入的最大值为9990s,或2h46m30s.具体例程:用WINCC写入S5TIME格式的数据1、在STEP7中创建一个DB块,在DB块中创建一个S5TIME格式的数据变量。
2、在WINCC中创建变量S5TIME,数据类型是无符号32位数,在调整格式里选择DWORDTOSIMA TICBCDTIMER;设置线性标定,变换单位为S。
3、在WINCC中建一IO输入输出域,链接变量,此例中为写入S5TIME时间。
4、运行系统,WINCC中写入123S,观察效果如下:用WINCC读取定时器S5TIME运行中剩余时间。
1、在WINCC中建立一定时器变量T1772、在WINCC中建立一IO输入输出域,链接变量,此例为读取S5TIME时间。
3、运行系统,观察效果如下:注:本例1图中需要设置线性标定后才能观察到3图中的效果,否则观察到的结果单位是ms 。
WINCC的使用
四,添加全局脚本
sSql="insert into 数据记录 VALUES ('"&data1&"','"&data2&"','"&data3&"','"&data4&"');" Set oRs=CreateObject("ADODB.Recordset") Set oCom=CreateObject("mand") Set oCom.ActiveConnection=conn mandType=1 mandText=sSql Set oRs=oCom.Execute Set oRs=Nothing conn.Close Set conn=Nothing End If End Sub
Set MSHFGrid=ScreenItems("MSHFGrid") Set MSHFGrid.DataSource=oRs MSHFGrid.BackColor=255 MSHFGrid.AllowUserResizing=1 MSHFGrid.Refresh
Set oRs=Nothing conn.Close Set conn=Nothing
立用户名与口令, SQL授权需要建立用户名与口令
完成后点击连接,进入数据库管理页面
一, 建立SQL数据库
server type(服务器类型),选择数据库引擎 server name(服务器名),无特殊要求,选择默认(本机) Autentication(授权),根据需要选择,WINDOWS授权无需建
WinCC中定时器使用方法介绍
WinCC中定时器使用方法介绍1定时器功能介绍WinCC中定时器的使用可以使WinCC按照指定的周期或者时间点去执行任务,比如周期执行变量归档、在指定的时间点执行全局脚本或条件满足时打印报表。
WinCC已经提供了一些简单的定时器,可以满足大部分定时功能。
但是在有些情况下,WinCC 提供的定时器不能满足我们需求,这时我们就可以通过 WinCC 提供的脚本接口通过编程的方式实现定时的功能,因为脚本本身既可以直接调用WinCC其他功能,比如报表打印,也可以通过中间变量来控制其他功能的执行,比如通过置位/复位归档控制变量来触发变量记录的执行。
WinCC 提供了C 脚本和VBS脚本,本文主要以全局 C 脚本编程为例介绍定时功能的实现。
2脚本中定时器介绍既然在全局脚本中可以编程控制其他功能的执行,那么首先看看全局脚本的触发:图1 脚本触发器分类如图1所示:脚本触发器分为使用定时器和使用变量,定时器又分为周期执行和非周期执行一次,比如每分钟执行一次脚本属于周期执行,指定2012年10月1日执行一次属于非周期执行。
使用变量触发脚本,即在变量发生变化时,脚本就执行一次,而变量的采集可以根据指定周期循环采集,或者根据变化采集,根据变化实际是1秒钟采集变量一次。
3使用脚本实现更多定时器功能利用脚本自身的定时器,可以通过在脚本中编程的方式实现更多其它定时功能。
整点归档WinCC提供了变量归档,变量归档分为周期归档和非周期归档,不管是周期归档或非周期的归档,都又可以通过一些变量或脚本返回值来控制归档,比如:整点归档。
下面的设置结合WinCC脚本,实现了在整点开始归档,归档五分种后停止归档,即每个小时仅归档前五分钟的数据。
软件环境:Windows 7 Professional Service Pack1 , WinCC SP3归档名称:ProcessValueArchive归档变量:NewTag归档周期:1 分钟归档控制变量 startarchiveC脚本触发周期:10秒脚本代码:#include ""int gscAction( void ){#pragma option(mbcs)#pragma code ("");void GetLocalTime (SYSTEMTIME* lpst);#pragma code();SYSTEMTIME time;int t1;GetLocalTime(&time);t1=;if(t1==00){SetTagBit("startarchive",1);}if(t1==05){SetTagBit("startarchive",0);}return 0;}归档设置如图2:图2 归档设置同理,在以上脚本的基础上做修改,可以实现在某个指定的时间点打印报表,只要在满足触发条件时调用下列函数:RPTJobPrint("Myprintjob");Myprintjob为事先创建好的打印作业。
如何在WinCC项目中监控S7300-400PLC中的定时器及计数器
如何在WinCC项目中监控S7 300/400 PLC中的定时器及计数器WinCC中变量的数据类型可能会不同于自动化系统中所使用的数据类型。
因此,当组态外部变量时,除了要定义该变量的数据类型,还必须对所有数字型数据类型执行类型转换。
类型转换定义如何从WinCC格式转换到AS格式,该定义适用于双向传送。
下表显示哪些WinCC数据类型支持类型转换: 数据类型类型转换二进制变量否无符号8位数是有符号8位数是无符号16位数是有符号16位数是无符号32位数是有符号32位数是浮点数32位IEEE 754是浮点数64位IEEE 754是文本变量8位字符集否文本变量16位字符集否原始数据类型否有关类型转换的详细信息,您可在WinCC 信息系统中的“通讯”>“过程通讯”>“WinCC过程通讯”>“外部变量”中找到。
下面我们分别说明如何利用WinCC的类型转换功能来实现在WinCC项目中监控300/400plc中的TIME,S5TIME数据类型变量及定时器和计数器的值。
1.在WinCC项目中监控S7 300/400 PLC中的TIME类型变量1.1关于TIME数据类型TIME为带符号的32位IEC时间数据类型,时间增量为1ms,取值范围为T#-24D_20H_31M_23S_648MS至T#24D_20H_31M_23S_647MS。
1.2具体步骤(1) 在Step中创建PLC站的DB1,并在DB中创建TIME类型的变量T,如下图所示:图 1.2.1 (2) 在WinCC项目中创建变量Time1,数据类型为“有符号32位数”,调整格式为“LongToSignedDword”。
选择对应PLC 变量的地址DB1,DD0。
此时的变量单位为毫秒,为了使该变量对应单位为分钟,设置相应线性转换参数,如下图所示:图 1.2.2 (3) 在WinCC画面中创建用于访问该变量的I/O域,设置如下图所示:图 1.2.3 (4) 运行效果如下图所示:图 1.2.4 (5) 如果需要在WinCC项目中以浮点数格式来监控PLC中的TIME类型变量,则在创建WinCC变量时应选择“浮点数32位IEEE754”,调整格式为“FloatToSignedDword”, 选择对应PLC 变量的地址DB1.DD0。
WINCC读写S5TIME时间
WINCC写入与读取S5TIME类型的数据周辉(北京倍杰特国际环境技术有限公司2011-01-20)参考资料:STEP7中的帮助文件,数据类型S5TIME的格式。
STEP7中的时间,日期和定时器。
S5TIME的格式:S5TIME是用BCD码保存的,在数据存储区中占用两个连续的字节。
当使用S5TIME时,输入时间值的范围为0 - 999,并说明时间基准(参见下表)。
时间基准指的是定时器以多少间隔为一个单位来递减时间值,一直到达0的时间间隔。
S5TIME的时间基准(以下简称时基)时基 BCD码 时间范围10ms 00 10ms-9s990ms100ms 01 100ms-1m39s990ms1s 10 1s-16m39s10s 11 10s-2h46m30s注:ms=毫秒;s=秒;m=分;h=小时;可以使用下列语法格式之一预装载时间值1>W#16#wxyzw = 时基xyz=BCD格式的时间值2>S5T#aH_bbM_ccS_dddMSa = 小时,bb = 分钟,cc = 秒,dd = 毫秒时基自动选择,该值四舍五入至具有此时基的下一个较小的数字。
这里可以输入的最大值为9990s,或2h46m30s.具体例程:用WINCC写入S5TIME格式的数据1、在STEP7中创建一个DB块,在DB块中创建一个S5TIME格式的数据变量。
2、在WINCC中创建变量S5TIME,数据类型是无符号32位数,在调整格式里选择DWORDTOSIMA TICBCDTIMER;设置线性标定,变换单位为S。
3、在WINCC中建一IO输入输出域,链接变量,此例中为写入S5TIME时间。
4、运行系统,WINCC中写入123S,观察效果如下:用WINCC读取定时器S5TIME运行中剩余时间。
1、在WINCC中建立一定时器变量T1772、在WINCC中建立一IO输入输出域,链接变量,此例为读取S5TIME时间。
3、运行系统,观察效果如下:注:本例1图中需要设置线性标定后才能观察到3图中的效果,否则观察到的结果单位是ms 。
如何在WinCC项目中监控S7 300400 PLC中的定时器及计数器
如何在WinCC项目中监控S7 300/400 PLC中的定时器及计数器 How to Monitor and Control the TIMER and COUNTER of S7 300/400 PLC in WinCCProject摘要 本文详细描述了如何利用WinCC的类型转换功能来实现在WinCC项目中监控S7300/400 PLC中的TIME,S5TIME数据类型变量及定时器和计数器的值。
关键词WinCC, 类型转换 , TIME, S5TIME, 定时器,计数器Key Words WinCC, Type Conversion, TIME, S5TIME, TIMER, COUNTERIA&DT Service & Support Page 2-17目录1.在WinCC项目中监控S7 300/400 PLC中的TIME类型变量 (4)1.1关于TIME数据类型 (4)1.2具体步骤 (5)2. 在WinCC项目中监控300/400PLC中的S5TIME类型变量 (8)2.1 关于S5TIME数据类型 (8)2.2 具体步骤 (9)2.3定时器的监控 (12)3.在WinCC项目中监控S7 300/400 PLC中的计数器值 (13)3.1 关于计数器 (13)3.2 具体步骤 (13)IA&DT Service & Support Page 3-17WinCC中变量的数据类型可能会不同于自动化系统中所使用的数据类型。
因此,当组态外部变量时,除了要定义该变量的数据类型,还必须对所有数字型数据类型执行类型转换。
类型转换定义如何从WinCC格式转换到AS格式,该定义适用于双向传送。
下表显示哪些WinCC数据类型支持类型转换:数据类型 类型转换二进制变量 否无符号8位数 是有符号8位数 是无符号16位数 是有符号16位数 是无符号32位数 是有符号32位数 是浮点数32位IEEE 754 是浮点数64位IEEE 754 是文本变量8位字符集 否文本变量16位字符集 否原始数据类型 否有关类型转换的详细信息,您可在WinCC信息系统中的“通讯”>“过程通讯”>“WinCC过程通讯”>“外部变量”中找到。
在WinCC项目中监控S7PLC中定时器及计数器
如何在WinCC项目中监控S7 300/400 PLC中的定时器及计数器 How to Monitor and Control the TIMER and COUNTER of S7 300/400 PLC in WinCCProject摘要 本文详细描述了如何利用WinCC的类型转换功能来实现在WinCC项目中监控S7300/400 PLC中的TIME,S5TIME数据类型变量及定时器和计数器的值。
关键词WinCC, 类型转换 , TIME, S5TIME, 定时器,计数器Key Words WinCC, Type Conversion, TIME, S5TIME, TIMER, COUNTERIA&DT Service & Support Page 2-17目录1.在WinCC项目中监控S7 300/400 PLC中的TIME类型变量 (4)1.1关于TIME数据类型 (4)1.2具体步骤 (5)2. 在WinCC项目中监控300/400PLC中的S5TIME类型变量 (8)2.1 关于S5TIME数据类型 (8)2.2 具体步骤 (9)2.3定时器的监控 (12)3.在WinCC项目中监控S7 300/400 PLC中的计数器值 (13)3.1 关于计数器 (13)3.2 具体步骤 (13)IA&DT Service & Support Page 3-17WinCC中变量的数据类型可能会不同于自动化系统中所使用的数据类型。
因此,当组态外部变量时,除了要定义该变量的数据类型,还必须对所有数字型数据类型执行类型转换。
类型转换定义如何从WinCC格式转换到AS格式,该定义适用于双向传送。
下表显示哪些WinCC数据类型支持类型转换:数据类型 类型转换二进制变量 否无符号8位数 是有符号8位数 是无符号16位数 是有符号16位数 是无符号32位数 是有符号32位数 是浮点数32位IEEE 754 是浮点数64位IEEE 754 是文本变量8位字符集 否文本变量16位字符集 否原始数据类型 否有关类型转换的详细信息,您可在WinCC信息系统中的“通讯”>“过程通讯”>“WinCC过程通讯”>“外部变量”中找到。
WinCC定时器C脚本
1、定时器功能介绍2、脚本中定时器介绍3、使用脚本实现更多定时器功能3.1 整点归档3.2 WinCC 项目激活时避免脚本初次执行及延迟执行脚本1 定时器功能介绍WinCC 中定时器的使用可以使WinCC按照指定的周期或者时间点去执行任务,比如周期执行变量归档、在指定的时间点执行全局脚本或条件满足时打印报表。
WinCC 已经提供了一些简单的定时器,可以满足大部分定时功能。
但是在有些情况下,WinCC 提供的定时器不能满足我们需求,这时我们就可以通过WinCC 提供的脚本接口通过编程的方式实现定时的功能,因为脚本本身既可以直接调用WinCC其他功能,比如报表打印,也可以通过中间变量来控制其他功能的执行,比如通过置位/复位归档控制变量来触发变量记录的执行。
WinCC 提供了 C 脚本和VBS 脚本,本文主要以全局 C 脚本编程为例介绍定时功能的实现。
2 脚本中定时器介绍既然在全局脚本中可以编程控制其他功能的执行,那么首先看看全局脚本的触发:图1 脚本触发器分类如图1所示:脚本触发器分为使用定时器和使用变量,定时器又分为周期执行和非周期执行一次,比如每分钟执行一次脚本属于周期执行,指定2012年10月1日执行一次属于非周期执行。
使用变量触发脚本,即在变量发生变化时,脚本就执行一次,而变量的采集可以根据指定周期循环采集,或者根据变化采集,根据变化实际是1秒钟采集变量一次。
3使用脚本实现更多定时器功能利用脚本自身的定时器,可以通过在脚本中编程的方式实现更多其它定时功能。
3.1整点归档WinCC提供了变量归档,变量归档分为周期归档和非周期归档,不管是周期归档或非周期的归档,都又可以通过一些变量或脚本返回值来控制归档,比如:整点归档。
下面的设置结合WinCC脚本,实现了在整点开始归档,归档五分种后停止归档,即每个小时仅归档前五分钟的数据。
软件环境:Windows 7 Professional Service Pack1 , WinCC V7.0 SP3归档名称:ProcessValueArchive归档变量:NewTag归档周期:1 分钟归档控制变量 startarchiveC脚本触发周期:10秒脚本代码:#include"apdefap.h"int gscAction( void ){#pragma option(mbcs)#pragma code ("kernel32.dll");void GetLocalTime (SYSTEMTIME* lpst);#pragma code();SYSTEMTIME time;int t1;GetLocalTime(&time);t1=time.wMinute;if(t1==00){SetTagBit("startarchive",1); }if(t1==05){SetTagBit("startarchive",0); }return0;}归档设置如图2:图2 归档设置同理,在以上脚本的基础上做修改,可以实现在某个指定的时间点打印报表,只要在满足触发条件时调用下列函数:RPTJobPrint("Myprintjob");Myprintjob为事先创建好的打印作业。
WINCC 怎么定时启动一个或N个项目函数
WINCC怎么定时启动一个或N个项目函数问:1、在C脚本里,为什么只有全局动作的属性里可以设置触发器来定时启动全局动作的程序,而项目函数的属性却没有触发器设置呢?2、如果我要系统运行时就自动启动运行一次项目函数A,该怎么做?3、如果我要求系统运行时就自动周期运行项目函数B,周期可以设置,该怎么做?4、如果在全局动作里新建一个动作***.pas,在里面统一调用系统需要周期运行的项目函数,然后在这个全局动作属性里设置触发器定时器。
这样是否可以实现我的第三个问题?如下:int gscAction( void ){项目函数A;项目函数B;// WINCC:TAGNAME_SECTION_START// syntax: #define TagNameInAction "DMTagName"// next TagID : 1// WINCC:TAGNAME_SECTION_END// WINCC:PICNAME_SECTION_START// syntax: #define PicNameInAction "PictureName"// next PicID : 1// WINCC:PICNAME_SECTION_END}答:1、全局动作带触发器,所以只要动作被触发了,就执行。
对于时间类的触发器(定点定时的除外),系统刚开始激活运行时都会触发一次。
而项目函数是用户函数,本身不会被执行,只能通过其它动作来调用它,才会运行。
也就是说,如果没有其它程序调用它,这个项目函数就永远不会运行。
2、第1条里已经说明了,全局动作一般在系统启动时会执行一次。
如果只允许执行一次(如初始化等工作),可以先建个内部变量blnBegin(布尔型的),这个变量可以在主画面的Open Picture事件中赋值为1。
然后永远保持为1。
然后,建一个全局动作,触发器为变量触发(blnBegin),代码如下:if (GetTagBit("blnBegin")==1)项目函数A;}return 1;3、全局动作的触发器周期必须组态时设置,不能运行时动态设定。
1、如何在wincc中输入时间传送s71500
有时候我们需要在wincc画面中输入时间值,传送给PLC。
以下就是wincc7.2中输入开始时间和结束时间做定时用,传送给PLC s7-1500,经过变换,PLC输出一个定时状态。
1、在wincc中变量管理-结构变量中新建结构类型(类型名为:时间输入)。
结构类型包含两个元素:时和分。
都为无符号的32位值,外部变量。
2、在新建的结构类型“时间输入”下建两个变量,分别为“JS_T_输入”和“KS_T_输入”作为定时结束时间和定时开始时间,数据类型默认为“时间输入”选择连接到的位置,我的是之前建好的连接1500,选择地址,我的如下表。
地址一定要按照字节长度排好。
3、在WINCC画面中做输入输出域,我的例子共4个,开始时间的“时”,开始时间的“分”,结束时间的“时”,结束时间的“分”。
做好4个输入输出域的数据连接,输入输出域的属性。
“时”-上限值位23,下限值为0,数据格式10进制,输出格式99。
“分”-上限值59,下限值为0,数据格式10进制,输出格式为99。
以上的操作是wincc部分的操作,接下来需要做PLC的操作了。
4、首先在s7-1500编程软件中新建变量。
地址要与我们在wincc中建立的变量吻合。
5、接下来新建一功能,编写程序。
以下是我的程序。
思路如下:在S7-1500中数据格式TIME_OF_DAY(时间),占用4个字节,例如10小时11分58秒312毫秒的表示格式为:TOD#10:11:58.312,按照时分:秒.毫秒排序。
在规定的取值范围内,Time_OF_DAY类型数据可以与DINT类型的数据相互转换(TOD#00:00:00.000对应0),DINT数据每增加1,时间增加1ms。
我们在程序中输入的时,换算成ms,则应该乘以3600000;输入的分,换算成ms,则应该乘以60000。
输入时与分相加,则为总的输入时间。
程序中,我们使用RD_LOC_T读取系统时间DATE_AND_TIME,然后用T_CONV将时间转换为TIME_OF_DAY格式。
西门子S7-200PLC编程中定时器的应用
西门子S7-200PLC编程中定时器的应用作者:宫兴广来源:《科学与财富》2020年第05期摘要:西门子S7-200PLC具有接通延时、记忆延时、断开延时和1ms、10ms、100ms定时器等功能。
在程序设计中,合理使用不同功能和不同分辨率的定时器,可以使我们的程序功能更完善实现更顺利,同时定时器除了定时功能外,还可以灵活运用,实现其它功能。
关键词:S7-200;PLC;编程;定时器西门子S7-200 PLC内部,按功能分有三类定时器,分别是接通延时定时器(TON)、有记忆接通延时定时器(TONR)、断开延时定时器(TOF);按定时分辨率分同样有三类定时器,分别是1ms、10ms、100ms定时器。
每个定时器有2个输入端,分别是使能输入端和预设值输入端。
当使能输入端接通时,接通延时定时器(TON)和有记忆接通延时定时器(TONR)开始计时,当定时器的当前值大于等于预设值时,该定时器位被置位。
当使能输入端断开时,接通延时定时器的当前值清0,而有记忆接通延时定时器的当前值则保持不变,在下次使能输入端接通时继续计时,利用这一点,我们可以用有记忆接通延时定时器来统计使能输入端的接通时间,在再次使用有记忆接通延时定时器之前,需要用复位指令清除当前值。
对于断开延时定时器(TOF),当使能输入端接通时,定时器位立即接通,并把当前值设为0;当使能输入端断开时,定时器开始计时,当达到预设时间时,定时器位断开,并停止计时。
由于断开延时定时器必须用输入端从接通到断开的跳变启动计时,如果输入端接通持续时间短于预设值,定时器位将保持接通,下次输入端接通后断开时才开始计时,在设计程序时需注意这一点。
西门子PLC程序执行一个循环称为一个扫描周期。
CPU在一个扫描周期内执行以下任务:读输入、执行程序、处理通讯请求、执行CPU自诊断测试、写输出。
这些任务是按一定顺序执行,而不是并行处理,在每个扫描周期开始时将数字输入值写入输入映像寄存器中,执行程序阶段则逐条执行指令,处理通讯请求阶段处理通讯端口的信息,自诊断阶段则检查硬件和程序存储器,在扫描周期的末尾将输出映像寄存器中的数据写入数字输出点,如图一所示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
WinCC中定时器使用方法介绍
1定时器功能介绍
WinCC中定时器的使用可以使WinCC按照指定的周期或者时间点去执行任务,比如周期执行变量归档、在指定的时间点执行全局脚本或条件满足时打印报表。
WinCC已经提供了一些简单的定时器,可以满足大部分定时功能。
但是在有些情况下,WinCC 提供的定时器不能满足我们需求,这时我们就可以通过WinCC 提供的脚本接口通过编程的方式实现定时的功能,因为脚本本身既可以直接调用WinCC其他功能,比如报表打印,也可以通过中间变量来控制其他功能的执行,比如通过置位/复位归档控制变量来触发变量记录的执行。
WinCC 提供了C 脚本和VBS脚本,本文主要以全局 C 脚本编程为例介绍定时功能的实现。
2脚本中定时器介绍
既然在全局脚本中可以编程控制其他功能的执行,那么首先看看全局脚本的触发:
图1 脚本触发器分类
如图1所示:脚本触发器分为使用定时器和使用变量,定时器又分为周期执行和非周期执行一次,比如每分钟执行一次脚本属于周期执行,指定2012年10月1日执行一次属于非周期执行。
使用变量触发脚本,即在变量发生变化时,
脚本就执行一次,而变量的采集可以根据指定周期循环采集,或者根据变化采集,根据变化实际是1秒钟采集变量一次。
3使用脚本实现更多定时器功能
利用脚本自身的定时器,可以通过在脚本中编程的方式实现更多其它定时功能。
3.1整点归档
WinCC提供了变量归档,变量归档分为周期归档和非周期归档,不管是周期归档或非周期的归档,都又可以通过一些变量或脚本返回值来控制归档,比如:整点归档。
下面的设置结合WinCC脚本,实现了在整点开始归档,归档五分种后停止归档,即每个小时仅归档前五分钟的数据。
软件环境:Windows 7 Professional Service Pack1 , WinCC V7.0 SP3
归档名称:ProcessValueArchive
归档变量:NewTag
归档周期:1 分钟
归档控制变量startarchive
C脚本触发周期:10秒
脚本代码:
#include "apdefap.h"
int gscAction( void )
{
#pragma option(mbcs)
#pragma code ("kernel32.dll");
void GetLocalTime (SYSTEMTIME* lpst);
#pragma code();
SYSTEMTIME time;
int t1;
GetLocalTime(&time);
t1=time.wMinute;
if(t1==00)
{
SetTagBit("startarchive",1);
}
if(t1==05)
{
SetTagBit("startarchive",0);
}
return 0;
}
归档设置如图2:
图2 归档设置
同理,在以上脚本的基础上做修改,可以实现在某个指定的时间点打印报表,只要在满足触发条件时调用下列函数:
RPTJobPrint("Myprintjob");
Myprintjob为事先创建好的打印作业。
脚本主要部分在于获取系统当前时间,下面的脚本实现了获取当前时间并分别获取年、
月、日、时、分、秒、毫秒,星期几的功能。
Varname1到Varname8为WinCC内部变量。
若在WinCC画面上显示时,由于默认I/O 域
的格式为999.99,要把Varname1的显示格式改为9999。
#include "apdefap.h"
int gscAction( void )
{
#pragma option(mbcs)
#pragma code ("kernel32.dll");
void GetLocalTime (SYSTEMTIME* lpst);
#pragma code();
SYSTEMTIME time;
GetLocalTime(&time);
SetTagWord("Varname1",time.wYear);
SetTagWord("Varname2",time.wMonth);
SetTagWord("Varname3",time.wDayOfWeek);
SetTagWord("Varname4",time.wDay);
SetTagWord("Varname5",time.wHour);
SetTagWord("Varname6",time.wMinute);
SetTagWord("Varname7",time.wSecond);
SetTagWord("Varname8",time.wMilliseconds);
return 0;
}
设置或读取系统时间的函数如下:
SetSystemTime
SetLocalTime
GetSystemTime
GetLocalTime
系统中本地计算机时间和格林威治时间是有区别的。
函数“SetSystemTime /
GetSystemTime”用于设置或读取格林威治时间。
函数“SetLocalTime / GetLocalTime”用于设置或读取本地计算机时间。
两种时间会因地理的时区不同而改变。
两个函数使用方法相同。
3.2 WinCC项目激活时避免脚本初次执行及延迟执行脚本
全局脚本在项目激活时,是要执行一次的,在有些情况下,需要避免脚本执行,就采用在脚本中去判断。
比如可以创建WinCC内部布尔型变量flag,脚本如下:
#include "apdefap.h"
int gscAction( void )
{
#pragma option(mbcs)
if ( GetTagBit("flag")==1)
SetTagWord("NewTag",1);//根据自己的需求编写对应代码.
else
SetTagBit("flag",1); //Return-Type: BOOL
return 0;
}
除了避免项目运行激活时触发脚本执行,我们还可以通过Sleep() 延迟脚本功能执行,比如开机后五分钟开始执行脚本具体功能,代码如下:
#include "apdefap.h"
int gscAction( void )
{
#pragma option(mbcs)
#pragma option(mbcs)
#pragma code("Kernel32.dll");
void Sleep(int milliseconds);
#pragma code()
Sleep(300000); //延迟300秒即五分钟
int temp;
//根据自己的需求编写对应代码.
temp=GetTagWord("NewTag"); //Return-Type: WORD
temp++;
SetTagWord("NewTag",temp);
return 0;
}
关键词
定时器,C 脚本,触发器。