《iFix定时器控件使用心得》
高手之路——iFix学习秘籍
.《高手之路——iFix学习秘籍》这里不教你使用ifix,只教你如何学习ifix,是一篇学习指南性的文章。
很多学习ifix 的朋友,尤其是初学者,总是摸不着门路,不知该如何学习才好,我根据自身的学习体会和辅导他人的经验,对宏观的学习路径进行了简单总结,希望对朋友们有所帮助。
想要成为ifix 的高手,要学的东西实在是不少,对其不了解的朋友,看一看,对于你想达到的水平都需要学习什么内容,心里有个底。
我要讲内容的分为七部分(或说七个层次),多了点儿,其实核心也就是三部分内容。
后面就都是辅助修炼,用以达到高高手的层次。
第一步要做的:基础知识是一切的基础,如果你不具备任何自动化知识也从未使用过任何组态软件,那么你需要了解组态软件的基本概念,什么叫组态软件,它能做什么、它是怎样工作的——也就是工作机制(具体请参考相关资料,如154教程),然后再开始进一步学习。
如果你对组态平台有一定的经验,那么你起步会很容易,因为各组态系统的基本功能和用法是非常近似的,仔细阅读ifix电子书或154教程,就可以很快掌握这些基本组态功能的实现方法。
在学习过程中,如果遇到某些和编程相关的地方,可以简单了解然后跳过。
第二步要做的:ifix除了基本的图形组态功能以外,还提供了强大的、基于VBA平台的脚本功能。
所以,如果你想让你的组态画面,具备除基本组态以外的更高级的功能,那么你就必须熟练掌握VBA编程,建议通过学习VB6.0来获得这种能力,因为VBA可以理解为VB6的子集(需要注意,更高的VB版本如和VB2005并不适合)。
买一本《VB6+从入门到精通》一类的书就基本够用了。
通过学习,应达到这样的结果——理解VB编程语言的基本概念,具备编程的基本能力和技巧。
其中有一个重要的概念,必须尽可能的透彻理解和熟练掌握,那就是“面向对象编程”,如果这一点没有做到,最好不要进行下一步学习。
第三步要做的:学会了VB并不等于学会ifix编程,首先,VB和VBA是有差异的,VBA的功能稍弱,应该在应用过程中注意到并体会这些差异(例如VBA窗体中不支持控件数组、常用控件的特性也有不少差异,VBA使用的是MSForms2.0的控件)。
iFix定时器控件使用心得
iFix定时器控件使用心得iFix的定时器控件,经常会把初学者搞得头晕脑涨,我说说自己的心得,供大家参考。
该控件是基于调度功能的,所以有一些用法和其它编程平台(如VB)里的定时器不太一样。
一、定时器的启动/停止如果在编辑时TimerEnabled设为True,则运行时定时器会自动启动。
如果在编辑时TimerEnabled设为False,则运行时需要先将TimerEnabled设为True,然后调用StartTimer方法。
如果只将TimerEnabled设为True,但是不调用StartTimer 方法,定时器是不会开始工作的。
如果要停止定时器,可以调用StopTimer方法,也可以直接将TimerEnabled设为False。
也就是说有两种控制定时器启/停的方式:方式一:用如下代码启动:Timer1. TimerEnabled=TrueTimer1. StartTimer用如下代码停止:Timer1. TimerEnabled=False方式2:在画面或调度的Initializes事件中加入:Timer1. TimerEnabled=True用如下代码启动:Timer1. StartTimer用如下代码停止:Timer1. StopTimer二、以“连续”方式使用以“连续”方式使用时,你会发现这样的现象,例如你希望一个画面被打开10秒钟后自动关闭,你会将定时器的Interval 属性设为10000,事实上却是,画面不到10秒就会被关闭,而且每次的延时时间还不是固定的,似乎是随机的,有时几乎是10秒,有时还不到1秒。
这个举例中,定时器仅运行了1次(因为画面已经被关闭了),如果定时器一直运行下去,你还会发现,除了第一次的延时是“随机”的,从第二次开始,延时都是准确的。
这究竟是怎么回事呢?其实这是StartTime属性在起作用,StartTime属性的默认值是0:00:00,表示从午夜0点0分0秒开始,在这种情况下,如果设置为10秒钟的间隔,定时器被触发的时间将是每一分钟的0秒、10秒、20秒……50秒,如果从某一分钟的18秒启动了定时器,那么定时器第一次被触发的时间将会是20秒,也就是说,从启动到第一次触发之间仅有2秒钟的延时,如果你从15秒启动,会得到5秒钟的延时,这就是为什么你会觉得第一次的延时是“随机”的。
定时器实验的心得体会
定时器实验的心得体会一、实验背景介绍在现代科技发展的浪潮中,电子技术已经渗透到我们生活的各个方面。
定时器作为一种重要的计时设备,在电子领域有着广泛的应用。
基于此,我们进行了一次定时器实验,旨在通过实际操作,深入理解定时器的工作原理、应用场景,并从体验中获得心得体会。
二、实验设备和步骤本次实验所用设备包括Arduino开发板、数字显示器、电阻、电容等元器件。
实验步骤主要分为以下几个方面:1. 搭建实验电路:根据实验要求,将Arduino开发板与其他元器件连接,并确保线路接触良好。
2. 程序编写:利用Arduino开发环境,编写代码实现定时器功能。
根据实验要求,设置定时器的时间、频率等参数。
3. 运行实验程序:将编写好的程序上传到Arduino开发板上,并观察实验现象。
4. 实验结果分析:根据实验现象,分析定时器的工作原理,并探索其在现实生活中的应用。
三、实验心得体会通过本次实验,我对定时器有了更深入的认识和理解,并从中获得了一些心得体会。
1. 实践是学习的最好方式通过亲自动手搭建电路、编写程序、进行实验操作,我切身体会到了理论知识和实际操作之间的联系。
实践使我更加清晰地认识到,只有将知识应用于实际中,才能真正理解并掌握它。
2. 定时器的重要性与应用广泛性在日常生活中,我们经常会遇到各种需要计时的场景。
比如,在厨房中需要设置定时器来控制烹饪时间;在实验室中,需要定时器来控制实验的进行;在工业生产中,定时器可以精确地控制各个生产环节的时间;在交通领域,信号灯的控制也借助了定时器等等。
定时器在各个领域都发挥着重要的作用,因此深入掌握定时器的工作原理和应用方法,对我们的日常生活和工作具有重要意义。
3. 错误和失败是成功的必经之路在实验的过程中,我遇到了许多错误和失败,比如电路连接错误、程序编写出错等等。
然而,正是通过不断的尝试、分析和调试,我最终找到了问题所在,并得以解决。
这让我深刻体会到,在学习和实践的道路上,错误和失败是不可避免的,但只要我们不放弃并从中吸取教训,我们就能走向成功。
定时器实验的心得体会
定时器实验的心得体会定时器是一种常见的电子元器件,广泛应用于各种电子设备和控制系统中。
通过对定时器进行实验,我深刻认识到了它的重要性和灵活性。
在此分享一下我在定时器实验中的心得体会。
一、实验目的及原理定时器实验的目的是通过搭建电路以及设置参数,使定时器按照预设的时间间隔产生输出信号。
我们常用的定时器有555定时器和计时器,其工作原理可简要概括为:根据输入脉冲和外部电路的组合,定时器内部的电子元件通过一系列的逻辑运算和计数操作,最终产生输出信号。
二、实验准备在进行定时器实验之前,首先需要准备一些实验设备和材料。
包括定时器芯片、电源、电路板、电子元件等。
同时还需了解和掌握定时器的工作原理及参数设置。
三、实验过程1. 连接电路将定时器芯片与电源、电路板以及所需的其他元件连接起来。
在连接电路时需注意各元件的正负极连接,可根据实验手册或相关资料进行正确的线路连接。
2. 设置参数根据实验要求,合理设置定时器的参数。
参数包括时间间隔、输入脉冲频率、计数方式等。
可以通过旋钮、按键或其他方式进行参数的设置和调整。
3. 运行实验正常连接电路并设置好参数后,启动定时器进行实验。
观察实验过程中定时器的输出状态,如LED灯的亮灭或者其他外部装置的运行情况。
记录实验结果并进行数据分析。
四、实验心得在进行定时器实验的过程中,我得出了一些心得体会。
1. 参数设置的灵活性定时器的参数设置非常灵活,可根据不同的需求进行调整。
通过合理设置参数,可以实现各种时间间隔的控制,满足不同场景和应用的需求。
2. 实验结果的稳定性经过多次实验观察发现,定时器的输出结果非常稳定可靠。
在合适的电路和环境条件下,定时器可以精确地按照设定的时间间隔产生输出信号,为后续的电子系统控制提供准确数据。
3. 实验设计的重要性在实验过程中,设计合适的电路原理图和接线方式非常重要。
良好的实验设计有助于保证实验的顺利进行以及实验结果的准确性。
4. 实验过程的细致观察定时器实验过程中需要进行细致观察和记录,包括参数调整、输入脉冲频率的变化以及输出信号的变化等。
IFIX使用总结
目录一、软件安装 (3)1、安装步骤 (3)2、第三方软件安装 (3)二、IFIX基本知识 (4)1)SCADA配置 (5)2)路径配置 (5)3)、I/O驱动配置 (6)4)、报警配置 (7)5)、任务配置 (11)6)、安全配置 (11)7)、数据库配置 (15)8)、人机界面 (18)9)、历史库定义 (18)10)、任务控制 (20)11)、如何更改画面高度 (22)12)、标签组使用 (22)三、如何实现IFIX的MBE仿真 (23)1)、首先在ifix上位机软件上安装好MBE驱动 (24)2)、添加配置好通道和数据块IP填电脑IP (25)3)、设置I/O地址范围,不可超出范围,下图模拟量地址有26个 (26)4)、打开modscan32 (27)5)、“connection”→“connect”出现下图 (28)6)、“connect using”选择“TCP/IP”,“IP Address”填入电脑IP,“Service Port” 与modsim32里设置一样。
然后OK (29)7)、打开modsim32 (29)8)、建立连接: (30)9)、“connection”→“connect”→“modbus/TCP Svr” (30)10)、然后2个软件的:Device Id、Address、MODBUS point Type、Length、必须一样,这样通讯建立! (31)四、常见问题 (32)1)、怎么实现登陆 (32)2)、关于安全,在配置安全以后,重装IFIX时会出现严重错误 (32)3)、VB中语句Private conData As ADODB.Connection运行提示用户定义类型未定义,是怎么回事? (33)4)、如何打开以前的工程 (33)五:常用脚本 (33)1)、按钮二次确认 (33)2)、脉冲输出示例 (34)说明:里面IFIX用MBE驱动为例,现在只是根据自己在使用IFIX中遇到问题总结!共同进步!IFXI使用总结一、软件安装1、安装步骤【说明】在安装过程中,弹出的设置窗口选择默认设置,以下列出需注意的地方。
ifix技巧
IFIX技巧(之一)1、从后台调度中访问或修改全局变量的代码描述:在iFIX中使用调度要后台运行的时候需要启动FixBackgroundServer程序,而该程序实际上是启动了独立于Workspace的进程,所以在后台调度中不能直接访问全局变量。
下面的例子代码描述了怎样访问的方法:" First get a pointer to the Application object in the WorkspaceDim WrkSpcApp As ObjectSet WrkSpcApp = GetObject("", "Workspace.Application")" Get a pointer to the Variable object called Variable1 in the User globalsDim TargetVar As ObjectSet TargetVar = WrkSpcApp.Documents("User").Page.FindObject("Variable1")" Set the current value in the variable object to a 1TargetVar.CurrentValue = 12、脉冲输出示例Dim PauseTime, StartCloseDigitalPoint "Fix32.FIX.DDD.F_CV"PauseTime = 0.8 " 设置暂停时间。
Start = Timer " 设置开始暂停的时刻。
Do While Timer < Start + PauseTimeDoEvents " 将控制让给其他程序。
LoopOpenDigitalPoint "Fix32.FIX.DDD.F_CV"3、显示通讯状态Is there a way to view communication status of the driver without using Mission Control? ResolutionUsing a digital input block reading a hardware register, the A_cualm field will be utilized. Chain the DI block to an event action block to a digital output tag using the SIM driver. In the event action block use the following script:IF the A_cualm =comThen set DO =1Else set the DO=0A data link can be made to the Sim block. The value of this block will determine the status of the communcation.4、用VBA脚本打开和关闭调度为了打开和关闭调度,必须用下列方法:打开一个名字为“ddd”的调度:Application.Documents.Open "C:\Dynamics\pdb\ddd.evs"关闭一个名字为“ddd”的调度:Application.Documents("ddd").Close注意:关闭调度时不用扩展名 .evs 。
定时器实验的心得体会
定时器实验的心得体会在学习电子技术的过程中,进行定时器实验是一项非常重要且有趣的实践活动。
通过这次实验,我不仅对定时器的工作原理有了更深入的理解,还提高了自己的动手能力和解决问题的能力。
实验开始前,我对定时器的概念仅仅停留在理论层面,知道它是一种能够按照设定的时间间隔产生定时信号的器件,但对于如何实际应用和调试却一无所知。
怀着既期待又紧张的心情,我走进了实验室。
实验所使用的器材包括电路板、定时器芯片、电阻、电容、示波器等。
看着这些陌生而又熟悉的器件,我心里暗暗给自己打气,一定要顺利完成实验。
首先,根据实验指导书,我开始连接电路。
这可不是一件简单的事情,每一根导线都要连接到正确的位置,否则整个电路就无法正常工作。
在连接的过程中,我小心翼翼,生怕出现差错。
然而,尽管我已经十分谨慎,还是出现了几次连接错误,导致电路短路或者无法工作。
每当遇到这种情况,我都会静下心来,仔细检查每一个连接点,找出问题所在并进行修正。
电路连接完成后,接下来就是对定时器进行参数设置。
通过调节电阻和电容的值,可以改变定时器的定时时间。
这需要我们对相关的计算公式有清晰的理解,并且能够根据实验要求准确计算出所需的电阻和电容值。
在这个过程中,我深刻体会到了理论知识与实际操作相结合的重要性。
如果只是死记硬背公式,而不懂得如何运用,那么在实验中就会遇到很多困难。
设置好参数后,我迫不及待地打开电源,想要看看定时器是否能够正常工作。
然而,结果却并不如我所愿,示波器上显示的波形并不是预期的定时信号。
这让我感到有些沮丧,但我并没有放弃。
我开始仔细检查电路连接和参数设置,一遍又一遍地核对,最终发现是一个电阻的阻值选错了。
更换了正确的电阻后,再次打开电源,示波器上终于显示出了完美的定时信号,那一刻,我心中充满了成就感。
在整个实验过程中,我遇到的最大困难就是对定时时间的精确控制。
由于电阻和电容的精度问题,实际的定时时间与理论计算值总是存在一定的偏差。
为了减小这种偏差,我尝试了多种不同的电阻和电容组合,并且不断地调整参数,经过多次尝试和改进,终于能够将定时时间控制在误差允许的范围内。
定时器实验的心得体会
定时器实验的心得体会在学习和实践电子电路定时器的知识时,我得到了很多收获,不仅在知识方面扩展了自己的眼界,也在实践中体会了许多问题。
在这篇文章中,我将阐述我的心得体会和经验总结。
一、定时器的原理和作用定时器是一种电子电路,能够以一定的间隔时间来控制电子设备的开关,同时还能实现频率分割和计数。
它广泛应用于数码显示、测量时间间隔、脉冲激励、电子钟等领域。
定时器具有一定的稳定性和准确性,通过对电容充放电或者是计数器来实现周期性的输出。
在实际应用过程中,定时器有多种类型,如555定时器、定时器芯片CHMOS、CMOS(常见的7400系列)等。
二、实验前准备工作在实验定时器前,需要了解基本的电子电路知识,特别是对定时器的单稳态触发器、双稳态触发器、多谐振荡器等概念和基本原理要有一定的了解。
此外,还需要掌握使用万用表、示波器等测试仪器的基本方法。
三、实验过程中需要注意的问题1. 连接线路稳定性。
由于定时器要求稳定的输入信号,所以在连接信号源、触发器以及计时电路时,需要特别注意连接线路、接触点的可靠性,以保证实验的准确性。
2. 安全维护。
当进行有源电路实验时,应先确定电源开关状态,检查实验是否接地,防止产生电击、灼伤等事故发生。
3. 防静电。
实验过程中应注意防止静电干扰,如将电路板放置在静电桌面,使用防静电手套或静电脚垫,避免在干燥环境中进行实验。
4. 参数选择。
在实验过程中,需要根据具体实验要求选择合适的电容、电阻等参数,以达到制定实验目的的要求。
5. 故障排除。
对于实验中出现的电路故障,需要进行系统性的排除和分析,包括检查是否有裸线、电源是否正常、触发器状态是否正确等等,以及使用示波器、抗干扰等方法解决可能存在的问题。
6. 实验结果的记录和分析。
在实验完成后,需保留实验过程、实验结果及实验结论等信息,根据实验数据和结果,深入分析电路特点,了解电路运算规律和特性。
四、实验的经验总结及感悟在实验定时器的过程中,我学到很多知识,并且深刻体会到实验的实际操作难度和复杂性。
《iFix定时器控件使用心得》
《iFix定时器控件使用心得》《iFix定时器控件使用心得》(关键字:定时器,时钟,计时器,假死,Timer,Interval)iFix的定时器控件,经常会把初学者搞得头晕脑涨,我说说自己的心得,供大家参考。
该控件是基于调度功能的,所以有一些用法和其它编程平台(如VB)里的定时器不太一样。
一、定时器的启动/停止如果在编辑时TimerEnabled设为True,则运行时定时器会自动启动。
如果在编辑时TimerEnabled设为False,则运行时需要先将TimerEnabled设为True,然后调用StartTimer方法。
如果只将TimerEnabled设为True,但是不调用StartTimer方法,定时器是不会开始工作的。
如果要停止定时器,可以调用StopTimer方法,也可以直接将TimerEnabled设为False。
也就是说有两种控制定时器启/停的方式:方式一:用如下代码启动:Timer1. TimerEnabled=TrueTimer1. StartTimer用如下代码停止:Timer1. TimerEnabled=False方式2:在画面或调度的Initializes事件中加入:Timer1. TimerEnabled=True用如下代码启动:Timer1. StartTimer用如下代码停止:Timer1. StopTimer二、以“连续”方式使用以“连续”方式使用时,你会发现这样的现象,例如你希望一个画面被打开10秒钟后自动关闭,你会将定时器的Interval属性设为10000,事实上却是,画面不到10秒就会被关闭,而且每次的延时时间还不是固定的,似乎是随机的,有时几乎是10秒,有时还不到1秒。
这个举例中,定时器仅运行了1次(因为画面已经被关闭了),如果定时器一直运行下去,你还会发现,除了第一次的延时是“随机”的,从第二次开始,延时都是准确的。
这究竟是怎么回事呢?其实这是StartTime属性在起作用,StartTime属性的默认值是0:00:00,表示从午夜0点0分0秒开始,在这种情况下,如果设置为10秒钟的间隔,定时器被触发的时间将是每一分钟的0秒、10秒、20秒……50秒,如果从某一分钟的18秒启动了定时器,那么定时器第一次被触发的时间将会是20秒,也就是说,从启动到第一次触发之间仅有2秒钟的延时,如果你从15秒启动,会得到5秒钟的延时,这就是为什么你会觉得第一次的延时是“随机”的。
iFix培训报告(DOC)
iFIX培训报告2009.06.22~2009.06.28培训内容包括iFIX和Batch两方面,前两天是进行iFIX培训,后面是Batch方面,下面就按这个顺序进行总结。
iFIX是一款基于Windows的HMI/SCADA组件,专为在工厂级和商业系统之间提供易于集成和协同工作设计环境。
它的功能结构特点可以减少开发自动化项目的时间,缩短系统升级和维护的时间,与第三方应用程序无缝集成,增强生产力。
iFIX的SCADA部分提供了监视管理、报警和控制功能,它能够实现数据的绝对集成和实现真正的分布式网络结构;而HMI部分是监视控制生产过程的窗口,它提供了开发操作员熟悉的画面所需要的所有工具。
第一:iFIX通过IO Driver从现场PLC中采集数据。
首先是对iFIX软件进行系统配置SCU(System Configuration Utility),它生成了一个项目的配置结构、节点和信息等。
这是打开界面后的示意图,然后对项目a)存储路径进行配置,Local文件夹是创建任务,PIC文件夹是一些图形文件,这些可以从安装目录中Copy过来,其中的Gif和Fds文件也可以从其他第三方中添加过来,而工具栏中的Local Configuration可以设置默认的启动路径;b)系统报警使能及报警格式、参数进行介绍,提示报警输出打印机最好采用针式的,它的报警时一条一条输出的,采用激光则会一条一页纸输出;对于客户端而言,需要从服务器Server端读取数据,因此还需要设置c)网络结构和远程节点名称,并进行冗余设置,如下图在稳定性上除了可以实现服务器冗余外,网卡也是可以实现冗余的,iFIX最多支持4块网卡冗余,且网卡冗余有更高的权限,即会先查询连接到优先服务器的所有网卡后再去查询另外一个服务器。
接下来就是要对本机的节点进行配置,如图,其中Local Node Name是本机内部的识别名称,是内部使用的,而Local Logical Name是对外的,供外部程序访问使用。
定时器实验的心得体会
定时器实验的心得体会实验目的:通过进行定时器实验,掌握定时器的基本原理,了解其在电子电路中的应用,培养实验操作能力和问题分析能力。
实验装置和材料:1. ATmega16单片机开发板2. 线路连接模块3. 高精度时钟模块4. 电源适配器实验过程:1. 准备工作:在进行定时器实验之前,首先准备好所需的实验装置和材料。
将ATmega16单片机开发板与线路连接模块连接好,将高精度时钟模块与开发板接口相连,并将电源适配器接入开发板。
确保连接正常,电源供应稳定。
2. 程序编写:根据实验要求所给定的时间要求,通过编写程序来控制定时器的工作。
在编写程序时,需要考虑到定时器的各种参数设置,如定时时间、计数方式等。
同时,还需编写相应的中断服务程序,以实现定时器溢出时的中断响应。
3. 烧录程序:将编写好的程序通过编程器烧录到单片机中,确保程序正确无误。
在烧录过程中,需要注意选择正确的单片机型号和程序存储地址。
4. 实验操作:将单片机开发板接通电源,观察定时器的运行情况。
通过调节定时器的参数,如预分频系数、计数值等,观察定时器的工作状态和输出结果。
可以通过连接LED灯或数码管等外部设备,来实时显示定时器的计时结果。
5. 实验数据记录:在实验过程中,记录下不同参数设置下的定时器计时结果。
可以绘制表格或图表,以便后续分析和对比。
实验结果分析:通过定时器实验,我掌握了定时器的基本原理和使用方法。
在实验中,我发现定时器的工作状态与程序中设置的参数密切相关。
当预分频系数增大时,定时时间延长;当计数值增大时,定时精度提高。
此外,定时器的中断响应也是关键因素,需要根据实际需求合理设置中断服务程序,以确保定时器的准确运行。
实验心得体会:通过本次定时器实验,我深刻体会到了实验操作的重要性。
在实验过程中,我遇到了一些问题,如程序编写出错、参数设置错误等。
但通过不断排除和修改,最终解决了这些问题,并取得了预期的实验结果。
在以后的实验中,我会更加注重实验前的准备和对实验原理的深入理解,以避免类似问题的发生。
ifix学习体会
关于IFIX历史报警数据存储与查询实例一.ODBC服务的连接开始-设置-控制面板-管理工具-数据源ODBC选用户DNS-添加-选Microsoft Access Driver(*.mdb)数据源名:Myalarm选(或创建)数据库名:Alarm.mdb, 文件类型:Access,驱动器D:连接池-禁止二.系统SCU的配置SCU-IFIX-配置-报警-报警ODBC服务,启动-修改-区域(A):从报警区域数据库中选择- CLQS-ALM-增加-确定配置:数据库类型:Access数据库标识符:Myalarm列配置:选9项现在创建表:FIXALARMS(默认表名)其它默认-确定三.控件的引用1.日期时间控件典型装VB6.0后, 双击选Microsoft date and time picker控件日期控件-属性-格式:1-dtpShortDate,有效前不打勾。
其它默认,时间控件-属性-格式:2-dtpTime, 有效前不打勾。
其它默认2.vxData控件(数据管道)IFIX4.0工具箱底部vxData图标右键-属性vxData对象-提供者:Microsoft OLE DB Provider for ODBC Drivers数据库:DNS名:Myalarm,用户名密码选项均空---测试连接-测试连接成功-确定记录源:命令类型:SQL命令应用-确定3.vxGrid控件(显示)工具箱底部vxGrid图标选控件 vxGrid1-右键-动画-高级-高级动画配置-行为-ADORecords-动画打勾数据源:报警记录一览表.vxData1.ADORecords数据转换:对象四.VBA脚本的编写1.初始化脚本代码'初始化设置Private Sub CFixPicture_Initialize()'设定默认开始时间Me.DTPFromDate = DateAdd("d", -1, Now)Me.DTPFromTime = ("00:00:00")'设默认结束时间Me.DTPEndDate = NowMe.DTPEndTime = Now'设置时间'vxData1.QP1 = Format(Me.DTPFromDate.Value, "yyyy-MM-DD") & " " & Format(Me.DTPFromTime.Value, "HH:MM:SS")'vxData1.QP2 = Format(Me.DTPEndDate.Value, "yyyy-MM-DD") & " " & Format(Me.DTPEndTime.Value, "HH:MM:SS")End Sub2. 查询按扭CmbSearch代码如下:'开始查询Private Sub CmbSearch_Click()'连接自动刷新Me.vxData1.AutoRefresh = True'Format函数用于设定时间格式vxData1.QP1 = Format(Me.DTPFromDate.Value, "yyyy-MM-DD") & " " & Format(Me.DTPFromTime.Value, "HH:MM:SS")vxData1.QP2 = Format(Me.DTPEndDate.Value, "yyyy-MM-DD") & " " & Format(Me.DTPEndTime.Value, "HH:MM:SS")'设定查询内容'从数据库中查询符合时间段的数据Me.vxData1.SQLCommand = "SELECT *FROM FIXALARMS WHERE" & _"(FIXALARMS.ALM_NATIVETIMEIN >= {ts'QP1'})AND(FIXALARMS.ALM_NATIVETIMELAST <= {ts 'QP2'})"'刷新数据Me.vxData1.RefreshMe.vxGrid1.RefreshEnd Sub3. 完整的VBA按扭代码如下:'初始化设置Private Sub CFixPicture_Initialize()'设定默认开始时间Me.DTPFromDate = DateAdd("d", -1, Now)Me.DTPFromTime = ("00:00:00")'设默认结束时间Me.DTPEndDate = NowMe.DTPEndTime = Now'设置时间'vxData1.QP1 = Format(Me.DTPFromDate.Value, "yyyy-MM-DD") & " " & Format(Me.DTPFromTime.Value, "HH:MM:SS")'vxData1.QP2 = Format(Me.DTPEndDate.Value, "yyyy-MM-DD") & " " & Format(Me.DTPEndTime.Value, "HH:MM:SS")End SubPrivate Sub CFixPicture_KeyDown(ByVal KeyCode As Long, ByVal Shift As Long, ContinueProcessing As Boolean)End Sub'开始查询Private Sub CmbSearch_Click()'连接自动刷新Me.vxData1.AutoRefresh = True'Format函数用于设定时间格式vxData1.QP1 = Format(Me.DTPFromDate.Value, "yyyy-MM-DD") & " " & Format(Me.DTPFromTime.Value, "HH:MM:SS")vxData1.QP2 = Format(Me.DTPEndDate.Value, "yyyy-MM-DD") & " " & Format(Me.DTPEndTime.Value, "HH:MM:SS")'设定查询内容'从数据库中查询符合时间段的数据Me.vxData1.SQLCommand = "SELECT *FROM FIXALARMS WHERE" & _"(FIXALARMS.ALM_NATIVETIMEIN >= {ts'QP1'})AND(FIXALARMS.ALM_NATIVETIMELAST <= {ts 'QP2'})"'刷新数据Me.vxData1.RefreshMe.vxGrid1.RefreshEnd Sub以上工作结束后保存,退出。
iFIX使用经验之谈
2017年我开始做一套新设备研发,前期大约用了一个多月的时间主要用来了解设备,设备有些复杂,电气部分的图纸大约在八九百张之间,PLC程序也是多个人写的,程序庞大复杂,程序语言有梯形图,结构化文本,还有块状图,程序没有完成最终版,还在调试中,我边看边学大体上把设备理清了,上位机系统是另外一个部门在用C#做。
一个月后,领导让我们负责两台实验设备的电气控制系统的研发设计工作,这里的我们只有两个人,一个是我,另外一个女同事。
领导的意思是控制系统的硬件部分就和目前产品的一致,主要是上位机软件看看能不能用组态软件来开发,如果能行后续就用在实际的产品上。
我们开始做方案,两台设备的控制系统的硬件预算大概在七八百万左右。
重中之重是组态软件用谁家的比较合适,如果一开始就需选错了,后续基本上也没戏了。
保险起见,我先去知网上搜索相关的论文,基本上只有几家科研单位在做,主要是西安电子科技大学,中国电子科技集团,南昌大学等,还有一些零散的公司发表的论文,基本上都是西门子的Wincc居多,实验室做的东西要商品化还有很长一段路要走,我们得根据自己的需求来选了,然后我们把国内外的主要组态软件都找了出来,逐个比较性能。
我比较倾向于易控组态,LabVIEW,倍福上位机系统,iFIX这四款软件,这里需要说明一下,我们的控制系统是用得倍福TwinCAT3,基于PC的控制系统。
易控组态是国产软件主要编程语言是C#,基于.net平台开发的,但是感觉产品较新,没有典型项目的应用,最终放弃了,不过以后要是选择国产组态软件的话,我还是优先推荐这款,毕竟控件超多,对电气工程师不友好的是C#语言稍显复杂。
LabVIEW是通用的图形化编程语言,主要用在测控领域,通讯这一块不是问题,有DCS模块,支持很多协议,对我来说难点在于设计模式这一块,有时候感觉几个语句就能写完的程序放到LabVIEW很难转换成图形,这个编程需要思路的转换,时间不允许。
倍福的上位机系统应该是最合适的,毕竟下位机也是倍福的,自己最懂自己,但是在国内倍福的上位机属于刚刚推出的,前端使用HTML5,CSS,JavaScript等,后台使用C#。
定时器实验的心得体会
定时器实验的心得体会在进行定时器实验的过程中,我获得了许多宝贵的心得体会。
这次实验的目标是探索定时器的工作原理和应用,通过自己动手实验的方式来加深对定时器的理解。
在实验中,我遇到了一些挑战,但最终还是取得了不错的成果。
首先,我了解到定时器是一种能根据设定的时间间隔或周期来产生时序信号的电子元件。
在实验中,我使用了555定时器作为实验对象,它是一种常用的定时器集成电路。
通过控制电源、电阻和电容的连接方式,我成功地搭建了一个简单的555定时器电路。
实验过程中遇到的第一个挑战是正确连接电路。
在实验开始前,我仔细研读了555定时器的数据手册,了解了其引脚功能和连接方式。
然后,我按照手册上的指导,将电源、电阻和电容正确地连接到555定时器的引脚上。
这一步骤需要仔细操作,确保连接无误。
由于我提前进行了准备工作,成功地避免了常见的连接错误。
接下来,我进行了定时器的工作模式实验。
555定时器有多种工作模式,包括单稳态和多稳态模式。
在实验中,我选择了单稳态模式进行研究。
我根据实验要求,调整了电阻和电容的数值,通过观察输出信号的波形来验证定时器的工作状态。
在调试的过程中,我发现电容的数值对输出信号的时间间隔有很大的影响,需要仔细选择合适的数值。
在实验过程中,我还学习了使用示波器来观察和记录信号波形。
示波器是一种常用的仪器,能够显示电信号的波形和参数。
通过连接示波器到555定时器的输出端,我可以清晰地观察到输出信号的高低电平和时间间隔。
这使得我能够更准确地验证定时器的工作状态,并按需调整电路参数。
通过这次实验,我不仅巩固了对定时器工作原理的理解,还提高了动手实验和调试的能力。
我学会了认真阅读数据手册,正确连接电路,使用示波器观测信号波形。
这些实践经验对我今后的学习和研究都将起到积极的作用。
总之,定时器实验的过程给予我许多宝贵的经验和启示。
我通过自己动手实验,深入理解了定时器的工作原理和应用。
在实验中遇到的挑战也促使我不断学习和提高自己的实验技能。
IFIX使用总结
目录一、软件安装 (3)1、安装步骤 (3)2、第三方软件安装 (3)二、IFIX基本知识 (4)1)SCADA配置 (5)2)路径配置 (5)3)、I/O驱动配置 (6)4)、报警配置 (7)5)、任务配置 (11)6)、安全配置 (11)7)、数据库配置 (15)8)、人机界面 (18)9)、历史库定义 (18)10)、任务控制 (20)11)、如何更改画面高度 (22)12)、标签组使用 (22)三、如何实现IFIX的MBE仿真 (23)1)、首先在ifix上位机软件上安装好MBE驱动 (24)2)、添加配置好通道和数据块IP填电脑IP (25)3)、设置I/O地址范围,不可超出范围,下图模拟量地址有26个 (26)4)、打开modscan32 (27)5)、“connection”→“connect”出现下图 (28)6)、“connect using”选择“TCP/IP”,“IP Address”填入电脑IP,“Service Port” 与modsim32里设置一样。
然后OK (29)7)、打开modsim32 (29)8)、建立连接: (30)9)、“connection”→“connect”→“modbus/TCP Svr” (30)10)、然后2个软件的:Device Id、Address、MODBUS point Type、Length、必须一样,这样通讯建立! (31)四、常见问题 (32)1)、怎么实现登陆 (32)2)、关于安全,在配置安全以后,重装IFIX时会出现严重错误 (32)3)、VB中语句Private conData As ADODB.Connection运行提示用户定义类型未定义,是怎么回事? (33)4)、如何打开以前的工程 (33)五:常用脚本 (33)1)、按钮二次确认 (33)2)、脉冲输出示例 (34)说明:里面IFIX用MBE驱动为例,现在只是根据自己在使用IFIX中遇到问题总结!共同进步!IFXI使用总结一、软件安装1、安装步骤【说明】在安装过程中,弹出的设置窗口选择默认设置,以下列出需注意的地方。
定时器课程设计心得体会
定时器课程设计心得体会第一篇:定时器课程设计心得体会定时器课程设计的心得体会课程设计共两周,第一周的任务是设计出原理图,并把PCB版图画出来;第二周的任务是根据原理图制作电路板,我们组共五个人,我们分工合作,共同学习,共同进步。
第一周的时候,我们五个人中有人主要负责画图,有人负责查阅资料,有人负责学protell99(因为我们目前还没有学protell99,画PCB版图需要用),有人负责审阅方案,然后我们再共同商议,尽量让我们的方案更完善,这其中大家都发挥了不可缺少的作用。
第二周的时候,就进入实验室进行实训了,其实好期待自己动手制作电路板,满怀信心和期待的进入了实验室开始了又一个新的体验。
我们的老师很认真很耐心的教导我们怎么操作,尤其是一些注意事项,对我们这些初次做课程设计的来说我们真的懂得很少,通过老师的细心指导后,我们便开始实战了。
我们按照顺序先把图纸转印到电路板上,然后再对电路板进行腐蚀,腐蚀的过程其实挺有意思的,看着电路板上的电路图的线条在溶液里慢慢的越来越清晰的显现出来,其他部位的铜越来越少…目不转睛的盯着电路板看,生怕错过了每一个细节,终于腐蚀好了,虽然只完成了小小的一步,但我们也很兴奋。
接下来该打孔了,我们小心的操作着,我们组的每个成员都亲自试着打孔,体验那种感觉。
等打好孔后,刷了松香一切就绪后,开始插件,好多器件自己以前从来都没有见过,只在课本上学习它的结构,性质和功能,可是见都没见过,比如三极管,我以前就没有见过,直到这次见了后才知道原来一个三极管竟这么小!接下来焊接,对女生来说,焊接更是没有接触过,我先看着他们焊,看了好长时间终于鼓起勇气决定自己也试试,拿上电烙铁就感觉到它柄的温度,慢慢的小心的焊下去…终于都做好了,最后是调试的过程,看着我们自己制作的电路板要工作了,我们很激动同时也很紧张,我们刚开始插上电源时预置一个数后,显示器上并不显示数字增加计时,我们都面面相觑,可是我们并没有灰心,我们开始检查是我们哪里出了错,最后经过我们认真检查和思考终于把错误找了出来并改正了过来,再次调试,我们预置60秒,看着显示器的数字从零开始增加,我们绷着心弦,终于显示59,60报警器发出声音报警,调试成功,我们好高兴,感觉有点成就感。
iFix若干个经验总结
要的数据,如果有则结束循环,但有些时候通讯状态不是很好,数据返回比较慢,甚至 是严重超时,结果循环帱无限期的进行下去,CPU被占满,绻统假死,他改用别的方滕 后,问题解决。 如果时间间隔设置的比较短,即使代码中溡有循环结构,有些操作也会导致运行时间超 过定时器的间隔时间,如果这个超时是可接受的正常情况,那么帱要滨意另一个问题, 那帱是定时器的QueueEvents幞性。它决定了当定时器某一次触发的脚本还溡有执行完 毕,下一次触发时间帱到时了,这种性况下,新的事件是排队等候,还是被丢弃掉。默 认值是False,如果希望它们“一个都不能帑”,那么帱要把这个幞性改为True。但你 必须保证这种超时只是偶然发生,否则,这个队帱会也排越长,直到崩溃。
这个是API函数: Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function SendMessage& Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Any) 把这个填入到脚本里边帱可以了。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Private Sub Timer1_OnTimeOut(ByVal lTimerId As Long)
If Timer1.Property1 < 20 Then
Timer1.Property1 = Timer1.Property1 + 1
Exit Sub
方式一:
用如下代码启动:Timer1. TimerEnabled=True
Timer1. StartTimer
用如下代码停止:Timer1. TimerEnabled=False
方式2:
在画面或调度的Initializes事件中加入:Timer1. TimerEnabled=True
如果在编辑时TimerEnabled设为True,则运行时定时器会自动启动。如果在编辑时TimerEnabled设为False,则运行时需要先将TimerEnabled设为True,然后调用StartTimer方法。如果只将TimerEnabled设为True,但是不调用StartTimer方法,定时器是不会开始工作的。如果要停止定时器,可以调用StopTimer方法,也可以直接将TimerEnabled设为False。也就是说有两种控制定时器启/停的方式:
如果时间间隔设置的比较短,即使代码中没有循环结构,有些操作也会导致运行时间超过定时器的间隔时间,如果这个超时是可接受的正常情况,那么就要注意另一个问题,那就是定时器的QueueEvents属性。它决定了当定时器某一次触发的脚本还没有执行完毕,下一次触发时间就到时了,这种性况下,新的事件是排队等候,还是被丢弃掉。默认值是False,如果希望它们“一个都不能少”,那么就要把这个属性改为True。但你必须保证这种超时只是偶然发生,否则,这个队就会也排越长,直到崩溃。
End If
Timer1.StopTimer
Timer1.Property1 = 0
cmd1.Visible = Truபைடு நூலகம்
End Sub
三、堵塞问题
就是在连续运行方式下, OnTimeOut事件中的代码中,一定要小心使用循环结构,需要循环的话,尽量使用For循环。如果必须要使用Do…Loop,首先要绝对避免任何死循环的可能,即使不会发生死循环,也一定要保证循环次数是可以预见的并且总循环时间一定要小于定时器的间隔时间,比如有个朋友发生过这样的问题,他在一个画面中使用了一个COMM控件,用于和设备进行串口通讯,他在一个定时器中编写脚本,运行时,有时会频繁的出现假死状态,我在电话中帮他解决问题,经过反复询问,最后发现罪魁祸首就是循环。他在发出一个读取指令后,用一个Do…Loop不停的检测是否返回了所需要的数据,如果有则结束循环,但有些时候通讯状态不是很好,数据返回比较慢,甚至是严重超时,结果循环就无限期的进行下去,CPU被占满,系统假死,他改用别的方法后,问题解决。
如何比较精确地实现这2秒的时间间隔呢?具体做法是:将定时器的Interval属性设为100毫秒,定义一个模块级变量intTimes,定时器每触发1次,这个变量的值就增加1,定时器被触发20次后,变量的值为20,总时间正好是2秒。代码如下:
Private Sub Timer1_OnTimeOut(ByVal lTimerId As Long)
例如,我们希望做到这样一个效果——有一个按钮对象(名为cmd1),当用鼠标点击这个按钮时,按钮消失不见,2秒钟之后又出现。也就是说在点击的时候把按钮的Visible属性设为False,并且启动一个定时器控件,2秒之后在定时器的OnTimeOut事件代码中,再把cmd1的Visible属性设为True。
用如下代码启动:Timer1. StartTimer
用如下代码停止:Timer1. StopTimer
二、以“连续”方式使用
以“连续”方式使用时,你会发现这样的现象,例如你希望一个画面被打开10秒钟后自动关闭,你会将定时器的Interval属性设为10000,事实上却是,画面不到10秒就会被关闭,而且每次的延时时间还不是固定的,似乎是随机的,有时几乎是10秒,有时还不到1秒。这个举例中,定时器仅运行了1次(因为画面已经被关闭了),如果定时器一直运行下去,你还会发现,除了第一次的延时是“随机”的,从第二次开始,延时都是准确的。
四、挂起问题
还有一个要注意的问题,如果你在前台(工作台)画面中使用了连续方式的定时器,那么你一定要知道,当你显示了一个有模式的窗体或者使用MsgBox函数时,工作台中的任何脚本都会被挂起(也就是停止运行),同样,定时器也不会再继续触发,直到窗体或消息框被关闭。比如你像前面提到的那个老兄,在画面利用定时器进行通讯,那么,当显示有模式窗体或消息框时,通讯工作就会被停止,直到窗体或消息框被关闭。所以如果需要通讯的话,最好编写一个独立的EXE程序比较好。再比如,你要每小时整点的时候进行一次抄表工作,定时器的时间间隔为1小时。那么如果8点整的时候,你已经有一个消息框显示后未被关闭,这次抄表就会缺失。此类工作应该在后台调度中进行。
《iFix定时器控件使用心得》
(关键字:定时器,时钟,计时器,假死,Timer,Interval)
iFix的定时器控件,经常会把初学者搞得头晕脑涨,我说说自己的心得,供大家参考。
该控件是基于调度功能的,所以有一些用法和其它编程平台(如VB)里的定时器不太一样。
一、定时器的启动/停止
最后再提一个小事,默认情况下间隔时间的单位是毫秒,3秒钟就写作3000,但如果3小时怎么写呢?10800000?太夸张了。其实可以用“时:分:秒”的格式,3小时写作3:00:00,超过1秒的时间间隔都可以用这种格式。但是只能在属性窗口中这样写,新建定时器的对话框中不行。
以上是我在工作中使用定时器的一些心得,仓促写下,如果有错漏之处请告诉我,我尽快修正,以免误人。定时器的其他用法,由于我使用的较少,就不乱说了。
这样,就很好的解决了时间精度的问题(误差在100毫秒以内)。但是这样做还有一点小的瑕疵,尽管变量intTimes只有一个地方使用,依然必须在通用区进行定义,代码的内敛性太差,移植不方便。但这个问题也可以解决。定时器控件有一些特殊的属性:Property1~ Property10,这些属性你可以用来存放任何值。我们就要利用这些属性,一个就够,我们就选Property1。首先,在编辑时将Property1 设为0,然后在OnTimeOut事件中加入如下代码:
好的,既然知道了原因,自然也就有了解决的方法,那就是在每一次调用StartTimer方法之前,将StartTime属性设为当前时间,即Timer1. StartTime = Now就搞定了。例如在8:15:23秒启动,间隔10秒,第一次触发将会是在8:15:33秒的时候。
那是不是所有以“连续”方式使用时,这样作就都OK了呢?不是。这个方法是否有效(也就是得到精确的延时),要看你所希望的延时时间有多长,如果延时是10秒或更长,那没问题,这样是唯一正确且简便的方法。但如果你设置的延时间隔比较小,如3秒以内,甚至是毫秒级的,那么这个方法就会产生比较严重的误差。因为StartTime属性的时间精度只达到秒级,也就是说,实际的运行效果还是会有一定的误差,当然,这个误差最大不会超过1秒,所以一般来说对于5秒以上的延时设置,这个误差可以忽略。但如果延时设置是2秒,然后产生了接近1秒的误差,这就成问题了,误差率将近50%啊!如何解决此类问题呢?有办法,只是稍复杂一点。
If intTimes < 20 Then
intTimes = intTimes + 1
Exit Sub
End If
Timer1.StopTimer
intTimes = 0
cmd1.Visible = True
End Sub