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技术总结1.iFIX运行1.安装iFIX,以及所有补丁;2.点击桌面上的快捷方式iFIX4.0- Proficy iFIX便可进入iFIX系统。
2.系统配置点击【开始】菜单-【所有程序】-【Proficy HMI SCADA – iFIX4.0】-【系统配置】,进入“系统配置”界面;或者进入iFIX系统后,点击工具栏的图标,也可进入“系统配置”界面。
然后通过菜单中的【文件】-【新建】,新建一个SCU,依次进行以下配置。
2.1. 本地启动1.点击【配置】-【本地启动】,进入配置页面;2.配置服务器,主用SCADA的本地节点名修改为SCADA1,备用SCADA的节点名为SCADA2,逻辑节点名均为SCADA;3.配置客户端,本地节点名与逻辑节点名相同,都为FIX+IP地址。
例如,该客户端的IP地址为172.16.2.236,节点名就是FIX236;4.其他项均为默认配置。
2.2. 路径配置1.点击【配置】-【路径】,进入配置页面;2.修改“工程项目”的地址为D:\IFIXPRJ,点击【修改工程项目】按钮,系统弹出对话框,如下图所示;3.点击【是】,退出对话框后,再点击【确定】按钮,弹出对话框,如下图所示;4.点击【创建全部】,系统提示如下图所示:5.点击【继续】,配置完成。
2.3. SCADA1.点击【配置】-【SCADA】,进入配置页面;2.点击“I/O驱动器名称”框右面的选择按钮,弹出所有可用的驱动器名称,依次增加OPC、SIM、SM2,配置完成。
如下图所示:2.4. 网络配置只有SCADA(服务器)需要进行网络配置,Client(客户端)不需要进行网络配置。
点击【配置】-【网络配置】进入配置页面。
2.4.1.SCADA冗余配置1.以SCADA1为例,进入网络配置页面,“网络”选项选择“TCP/IP”,如下图所示:2.在“远程节点名”项中输入“SCADA”,点击【添加】按钮,将“SCADA”添加到“配置远程节点:”项下面的框中,然后点击【配置】按钮,进入远程节点配置页面;3.选择“启用逻辑节点名”,在“主节点”项中输入“SCADA1”,在“备节点”中输入“SCADA2”,如下图所示:4.点击【确定】按钮,返回“网络配置”页面,可看到SCADA节点已经配置成冗余节点,点击【确定】按钮,添加成功;5.此外,还需要在hosts(C:\WINDOWS\system32\drivers\etc)文件中做相应的配置。
《iFix定时器控件使用心得》

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。也就是说有两种控制定时器启/停的方式:
定时器实验的心得体会

定时器实验的心得体会在定时器实验中,我通过实际操作和观察,深刻认识到了定时器的重要性和应用价值。
在这个过程中,我不仅学到了关于定时器的基本原理和工作方式,还掌握了使用定时器进行时间控制和计时的技巧。
以下是我在定时器实验中的心得体会。
定时器实验是计算机科学与技术专业中一项非常基础且重要的实践内容。
通过这个实验,我了解到定时器可以用于各种领域,如电子设备、自动化控制系统等。
在实验过程中,我首先了解了定时器的基本原理,它是一种能够产生固定时间间隔的电子元件。
在实验中,我学会了如何设置定时器的参数,包括预定计时时间和选择计时模式。
我使用了如计时器模式、定时器/计数器模式等来实现不同的功能。
通过调整这些参数,我可以灵活地控制定时器的工作方式,满足不同的需求。
在实际操作中,我发现正确的设置和使用定时器非常重要。
如果参数设定不当,定时器的计时结果可能不准确,甚至无法正常工作。
因此,在实验过程中,我非常注重仔细阅读实验指导书和相关资料,确保每一步操作都正确无误。
这样做可以避免不必要的麻烦和错误。
在实验过程中,我还注意到定时器的精确性和稳定性对实际应用非常重要。
因为定时器的主要功能是控制和计时,所以对时间的准确性要求比较高。
我发现一些额外因素,如温度、电压等,都可以对定时器的精确性产生影响。
因此,在实验中,我会尽量保持实验环境的稳定,以确保定时器的准确性。
通过这次实验,我不仅仅了解到定时器的基本原理和使用技巧,还深刻认识到定时器对各个领域的重要性。
定时器的精确计时和时间控制功能在电子设备、通信系统等方面都有广泛的应用。
对于我作为一名计算机科学与技术专业的学生来说,掌握定时器的原理和使用方法,对我的学习和未来的工作都具有极大的帮助。
总结起来,定时器实验是一次非常有价值的实践活动。
通过这个实验,我不仅增加了对定时器的理解和认识,还提升了实际操作和问题解决的能力。
我相信,在今后的学习和工作中,定时器这个重要的电子元件将继续发挥它的作用,并为各种应用领域带来更多的便利和创新。
定时器实验的心得体会

定时器实验的心得体会定时器是一种常见的电子元器件,广泛应用于各种电子设备和控制系统中。
通过对定时器进行实验,我深刻认识到了它的重要性和灵活性。
在此分享一下我在定时器实验中的心得体会。
一、实验目的及原理定时器实验的目的是通过搭建电路以及设置参数,使定时器按照预设的时间间隔产生输出信号。
我们常用的定时器有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 。
定时器实验的心得体会

定时器实验的心得体会在学习电子技术的过程中,进行定时器实验是一项非常重要且有趣的实践活动。
通过这次实验,我不仅对定时器的工作原理有了更深入的理解,还提高了自己的动手能力和解决问题的能力。
实验开始前,我对定时器的概念仅仅停留在理论层面,知道它是一种能够按照设定的时间间隔产生定时信号的器件,但对于如何实际应用和调试却一无所知。
怀着既期待又紧张的心情,我走进了实验室。
实验所使用的器材包括电路板、定时器芯片、电阻、电容、示波器等。
看着这些陌生而又熟悉的器件,我心里暗暗给自己打气,一定要顺利完成实验。
首先,根据实验指导书,我开始连接电路。
这可不是一件简单的事情,每一根导线都要连接到正确的位置,否则整个电路就无法正常工作。
在连接的过程中,我小心翼翼,生怕出现差错。
然而,尽管我已经十分谨慎,还是出现了几次连接错误,导致电路短路或者无法工作。
每当遇到这种情况,我都会静下心来,仔细检查每一个连接点,找出问题所在并进行修正。
电路连接完成后,接下来就是对定时器进行参数设置。
通过调节电阻和电容的值,可以改变定时器的定时时间。
这需要我们对相关的计算公式有清晰的理解,并且能够根据实验要求准确计算出所需的电阻和电容值。
在这个过程中,我深刻体会到了理论知识与实际操作相结合的重要性。
如果只是死记硬背公式,而不懂得如何运用,那么在实验中就会遇到很多困难。
设置好参数后,我迫不及待地打开电源,想要看看定时器是否能够正常工作。
然而,结果却并不如我所愿,示波器上显示的波形并不是预期的定时信号。
这让我感到有些沮丧,但我并没有放弃。
我开始仔细检查电路连接和参数设置,一遍又一遍地核对,最终发现是一个电阻的阻值选错了。
更换了正确的电阻后,再次打开电源,示波器上终于显示出了完美的定时信号,那一刻,我心中充满了成就感。
在整个实验过程中,我遇到的最大困难就是对定时时间的精确控制。
由于电阻和电容的精度问题,实际的定时时间与理论计算值总是存在一定的偏差。
为了减小这种偏差,我尝试了多种不同的电阻和电容组合,并且不断地调整参数,经过多次尝试和改进,终于能够将定时时间控制在误差允许的范围内。
定时器实验的心得体会

定时器实验的心得体会在进行定时器实验的过程中,我对定时器的原理和应用有了更加深入的理解,并且获取了一些实践经验。
在本文中,我将对我的实验心得体会进行总结和分享。
1、实验目的首先,我们需要明确实验的目的是什么。
在定时器实验中,目的通常是通过设置定时器的参数和控制信号,来实现特定的计时功能。
例如,我们可以通过定时器来测量一段时间的长度,或者使用定时器来产生特定频率的信号。
2、实验步骤在进行任何实验之前,我们首先需要了解实验的步骤和要求。
在定时器实验中,我们需要根据实验指导书的要求,按照一定的顺序进行操作。
这包括设置定时器的计时模式、时钟源、预分频系数等。
同时,我们还需要处理定时器中断和计时溢出的情况。
3、实验结果分析进行实验后,我们需要对实验结果进行分析。
这包括记录定时器的计时数值、计时周期以及实际测量的时间长度。
通过比较实验结果和预期结果,我们可以评估实验的准确性和可靠性。
同时,我们还可以对实验数据进行统计和图形化展示,以便更好地理解和表达实验的结果。
4、实验问题与解决在实验过程中,我们可能会遇到一些问题。
例如,定时器无法启动或无法停止,计时结果不准确,或者出现其他异常情况。
对于这些问题,我们需要根据实验出现的具体情况,进行问题分析和解决方案的制定。
这可能涉及到定时器设置的调整、引脚连接的检查、程序代码的修改等。
5、实验经验总结最后,我们需要对实验经验进行总结和归纳。
在进行定时器实验的过程中,我们可能会积累到一些宝贵的经验和技巧。
例如,通过设置合适的预分频系数和时钟源,可以实现更高精度的计时;通过合理规划中断处理程序,可以避免计时溢出导致的错误。
我们应该及时记录和总结这些经验,以便在今后的实验或项目中能够更好地应用和发挥。
总之,定时器实验是一个锻炼实践能力和理论应用的重要环节。
通过实践操作和实验分析,我们可以更深入地理解和掌握定时器的原理和应用。
同时,我们还能够通过总结和分享实验心得,为其他人提供参考和帮助。
定时器实验的心得体会

定时器实验的心得体会实验目的:通过进行定时器实验,掌握定时器的基本原理,了解其在电子电路中的应用,培养实验操作能力和问题分析能力。
实验装置和材料:1. ATmega16单片机开发板2. 线路连接模块3. 高精度时钟模块4. 电源适配器实验过程:1. 准备工作:在进行定时器实验之前,首先准备好所需的实验装置和材料。
将ATmega16单片机开发板与线路连接模块连接好,将高精度时钟模块与开发板接口相连,并将电源适配器接入开发板。
确保连接正常,电源供应稳定。
2. 程序编写:根据实验要求所给定的时间要求,通过编写程序来控制定时器的工作。
在编写程序时,需要考虑到定时器的各种参数设置,如定时时间、计数方式等。
同时,还需编写相应的中断服务程序,以实现定时器溢出时的中断响应。
3. 烧录程序:将编写好的程序通过编程器烧录到单片机中,确保程序正确无误。
在烧录过程中,需要注意选择正确的单片机型号和程序存储地址。
4. 实验操作:将单片机开发板接通电源,观察定时器的运行情况。
通过调节定时器的参数,如预分频系数、计数值等,观察定时器的工作状态和输出结果。
可以通过连接LED灯或数码管等外部设备,来实时显示定时器的计时结果。
5. 实验数据记录:在实验过程中,记录下不同参数设置下的定时器计时结果。
可以绘制表格或图表,以便后续分析和对比。
实验结果分析:通过定时器实验,我掌握了定时器的基本原理和使用方法。
在实验中,我发现定时器的工作状态与程序中设置的参数密切相关。
当预分频系数增大时,定时时间延长;当计数值增大时,定时精度提高。
此外,定时器的中断响应也是关键因素,需要根据实际需求合理设置中断服务程序,以确保定时器的准确运行。
实验心得体会:通过本次定时器实验,我深刻体会到了实验操作的重要性。
在实验过程中,我遇到了一些问题,如程序编写出错、参数设置错误等。
但通过不断排除和修改,最终解决了这些问题,并取得了预期的实验结果。
在以后的实验中,我会更加注重实验前的准备和对实验原理的深入理解,以避免类似问题的发生。
定时器实验的心得体会

定时器实验的心得体会在学习电子技术的过程中,定时器实验无疑是一次令人印象深刻且极具收获的经历。
通过这次实验,我对定时器的原理、应用以及实际操作有了更深入的理解和认识。
实验开始前,我对定时器的概念仅有一个模糊的理论认知。
我知道它可以在一定的时间间隔后产生特定的输出信号,但对于其内部的工作机制以及如何在实际电路中有效地运用,却知之甚少。
带着这样的懵懂和好奇,我踏入了实验室。
实验设备整齐地摆放在实验台上,有面包板、示波器、电源、各种电阻电容以及集成定时器芯片。
面对这些陌生又熟悉的器件,我心中既兴奋又有些许紧张。
兴奋的是即将亲自动手探索定时器的奥秘,紧张的则是担心自己在操作中出现错误,导致实验无法顺利完成。
按照实验指导书的要求,我首先进行了电路的搭建。
这看似简单的步骤,实则需要极大的耐心和细心。
每一个电阻、电容的数值都必须准确无误,引脚的连接也必须牢固可靠。
在这个过程中,我深切地体会到了“细节决定成败”这句话的真谛。
一个小小的连接错误,都可能导致整个电路无法正常工作。
经过一番努力,电路终于搭建完成。
接下来就是给电路接通电源,用示波器观察输出信号。
当我打开电源的那一刻,心中充满了期待。
然而,示波器上显示的信号却并非我所期望的那样。
起初,我感到有些沮丧和困惑,但我很快冷静下来,开始仔细检查电路的每一个部分。
经过反复的排查,我发现是一个电阻的阻值选错了,导致定时器的定时时间出现了偏差。
更换正确的电阻后,再次接通电源,示波器上终于出现了理想的方波信号。
那一刻,心中的喜悦难以言表,所有的疲惫和困扰都烟消云散。
在实验过程中,我不仅学会了如何正确地使用示波器来观察和测量信号,还通过调整电阻和电容的值,深入理解了定时器定时时间的计算方法。
我发现,定时器的定时时间与电阻和电容的乘积成正比。
通过改变这两个参数,就可以灵活地设定定时时间,以满足不同的应用需求。
此外,通过这次实验,我还深刻地认识到了理论知识与实际操作之间的差距。
定时器实验的心得体会

定时器实验的心得体会在进行定时器实验的过程中,我获得了许多重要的心得体会。
这是一个非常有趣的实验课程,通过实践操作定时器,我对定时器的原理和使用方法有了更深入的了解。
以下是我在实验中得到的几点心得体会。
首先,定时器实验需要仔细的准备和规划。
在实验前,我对实验仪器和材料进行了检查,并确保其完好可用。
我仔细研读了实验原理和步骤,并提前制定了实验计划。
这样的准备工作可以帮助我更好地完成实验,并避免一些不必要的错误和失误。
其次,正确地连接电路至关重要。
在实验中,我学会了正确地连接各个元件和导线,确保电路的正常运行。
定时器实验中常常用到的元件包括电阻、电容和集成电路等,我要仔细查看元件的标志和连接方式,以免接错导致实验的失败。
特别是在使用集成电路时,正确地连接引脚非常重要,否则可能导致电路无法工作或损坏元件。
第三,精确测量和记录实验数据是必不可少的。
在定时器实验中,我们通常需要测量不同的电压、电流和时间等参数。
我准备了合适的测量仪器,如电压表、电流表和计时器,并进行了准确的测量。
为了保持数据的准确性,我尽量避免读数误差,并进行多次测量取平均值。
同时,我还及时记录实验数据,并在实验报告中详细描述,以备后续分析和讨论。
另外,定时器实验需要不断的尝试和调试。
在初次实验时,可能会出现一些问题,比如电路不工作、计时不准确等。
这时,我会仔细检查电路连接是否正确,元件是否正常,以及电源是否稳定等。
如果问题仍然存在,我会进行逐步排查,例如更换元件、调节电路参数,直到问题解决为止。
这个过程需要耐心和细致,但也锻炼了我的实验技能和问题解决能力。
最后,定时器实验的最终结果要进行合理的分析和总结。
在实验完成后,我会对实验数据进行统计和图表绘制,以便更好地理解实验结果。
同时,我会与同学们进行讨论,分享实验经验和观察结果。
通过与他人的交流和学习,我能够对定时器实验有更深入的认识,并从中获得更多的启示和思考。
通过定时器实验,我不仅增加了对定时器的理解,也提升了实验技能和科学思维能力。
iFIX使用经验之谈

2017年我开始做一套新设备研发,前期大约用了一个多月的时间主要用来了解设备,设备有些复杂,电气部分的图纸大约在八九百张之间,PLC程序也是多个人写的,程序庞大复杂,程序语言有梯形图,结构化文本,还有块状图,程序没有完成最终版,还在调试中,我边看边学大体上把设备理清了,上位机系统是另外一个部门在用C#做。
一个月后,领导让我们负责两台实验设备的电气控制系统的研发设计工作,这里的我们只有两个人,一个是我,另外一个女同事。
领导的意思是控制系统的硬件部分就和目前产品的一致,主要是上位机软件看看能不能用组态软件来开发,如果能行后续就用在实际的产品上。
我们开始做方案,两台设备的控制系统的硬件预算大概在七八百万左右。
重中之重是组态软件用谁家的比较合适,如果一开始就需选错了,后续基本上也没戏了。
保险起见,我先去知网上搜索相关的论文,基本上只有几家科研单位在做,主要是西安电子科技大学,中国电子科技集团,南昌大学等,还有一些零散的公司发表的论文,基本上都是西门子的Wincc居多,实验室做的东西要商品化还有很长一段路要走,我们得根据自己的需求来选了,然后我们把国内外的主要组态软件都找了出来,逐个比较性能。
我比较倾向于易控组态,LabVIEW,倍福上位机系统,iFIX这四款软件,这里需要说明一下,我们的控制系统是用得倍福TwinCAT3,基于PC的控制系统。
易控组态是国产软件主要编程语言是C#,基于.net平台开发的,但是感觉产品较新,没有典型项目的应用,最终放弃了,不过以后要是选择国产组态软件的话,我还是优先推荐这款,毕竟控件超多,对电气工程师不友好的是C#语言稍显复杂。
LabVIEW是通用的图形化编程语言,主要用在测控领域,通讯这一块不是问题,有DCS模块,支持很多协议,对我来说难点在于设计模式这一块,有时候感觉几个语句就能写完的程序放到LabVIEW很难转换成图形,这个编程需要思路的转换,时间不允许。
倍福的上位机系统应该是最合适的,毕竟下位机也是倍福的,自己最懂自己,但是在国内倍福的上位机属于刚刚推出的,前端使用HTML5,CSS,JavaScript等,后台使用C#。
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. 在程序编写方面,我们需要熟悉定时器相关的寄存器设置和编程语言的语法规则。
根据实验需求,编写相应的定时器程序。
4. 编写完成后,将程序下载到开发板上,并连接好相应的外设,如LED、蜂鸣器等。
5. 最后,进行实验测试和调试,观察定时器的工作情况及相应的输出结果。
三、实验结果在实验过程中,我们经过不断地调试和测试,取得了以下实验结果:1. 定时器能够准确地计时,并产生相应的中断信号。
2. 定时器可以控制外设的开关、亮度或频率等,实现特定的功能需求。
3. 通过改变定时器的计时周期和中断触发条件,可以调整定时器的工作模式和精度。
四、心得体会通过这次定时器实验,我有以下几点心得体会:1. 理论与实践相结合:在实验中,我深刻感受到理论知识与实践操作的密切联系。
只有理解了定时器的工作原理,并将其与实际应用相结合,才能够编写出高效可靠的定时器程序。
2. 耐心和细心的重要性:在调试和测试过程中,由于定时器涉及到硬件和软件的复杂交互,一点小小的错误可能导致整个程序失效。
因此,我们需要保持耐心和细心,仔细排查可能存在的问题,并采取相应的解决措施。
3. 不断学习和创新:定时器实验只是我们学习的一小部分,而计算机科学和技术的发展十分迅速,我们需要不断学习新知识和技能,保持对前沿技术的关注,并能够灵活运用已有的知识进行创新和应用。
关于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以上工作结束后保存,退出。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
iFix定时器控件使用心得
iFix的定时器控件,经常会把初学者搞得头晕脑涨,我说说自己的心得,供大家参考。
该控件是基于调度功能的,所以有一些用法和其它编程平台(如VB)里的定时器不太一样。
一、定时器的启动/停止
如果在编辑时TimerEnabled设为True,则运行时定时器会自动启动。
如果在编辑时TimerEnabled设为False,则运行时需要先将TimerEnabled设为True,然后调用StartTimer方法。
如果只将TimerEnabled设为True,但是不调用StartTimer 方法,定时器是不会开始工作的。
如果要停止定时器,可以调用StopTimer方法,也可以直接将TimerEnabled设为False。
也就是说有两种控制定时器启/停的方式:
方式一:
用如下代码启动:Timer1. TimerEnabled=True
Timer1. 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秒钟的延时,这就是为什么你会觉得第一次的延时是“随机”的。
好的,既然知道了原因,自然也就有了解决的方法,那就是在每一次调用StartTimer方法之前,将StartTime属性设为当前时间,即Timer1. StartTime = Now就搞定了。
例如在8:15:23秒启动,间隔10秒,第一次触发将会是在8:15:33秒的时候。
那是不是所有以“连续”方式使用时,这样作就都OK了呢?不是。
这个方法是否有效(也就是得到精确的延时),要看你所希望的延时时间有多长,如果延时是10秒或更长,那没问题,这样是唯一正确且简便的方法。
但如果你设置的延时间隔比较小,如3秒以内,甚至是毫秒级的,那么这个方法就会产生比较严重的误差。
因为StartTime属性的时间精度只达到秒级,也就是说,实际的运行效果还是会有一定的误差,当然,这个误差最大不会超过1秒,所以一般来说对于5秒以上的延时设置,这个误差可以忽略。
但如果延时设置是2秒,然后产生了接近1秒的误差,这就成问题了,误差率将近50%啊!如何解决此类问题呢?有办法,只是稍复杂一点。
例如,我们希望做到这样一个效果——有一个按钮对象(名为cmd1),当用鼠标点击这个按钮时,按钮消失不见,2秒钟之后又出现。
也就是说在点击的时候把按钮的Visible属性设为False,并且启动一个定时器控件,2秒之后在定时器的OnTimeOut事件代码中,再把cmd1的Visible属性设为True。
如何比较精确地实现这2秒的时间间隔呢?具体做法是:将定时器的Interval属性设为100毫秒,定义一个模块级变
量intTimes,定时器每触发1次,这个变量的值就增加1,定时器被触发20次后,变量的值为20,总时间正好是2秒。
代码如下:
Private Sub Timer1_OnTimeOut(ByV al lTimerId As Long)
If intTimes < 20 Then
intTimes = intTimes + 1
Exit Sub
End If
Timer1.StopTimer
intTimes = 0
cmd1.Visible = True
End Sub
这样,就很好的解决了时间精度的问题(误差在100毫秒以内)。
但是这样做还有一点小的瑕疵,尽管变量intTimes 只有一个地方使用,依然必须在通用区进行定义,代码的内敛性太差,移植不方便。
但这个问题也可以解决。
定时器控
件有一些特殊的属性:Property1~ Property10,这些属性你可以用来存放任何值。
我们就要利用这些属性,一个就够,我们就选Property1。
首先,在编辑时将Property1 设为0,然后在OnTimeOut事件中加入如下代码:
Private Sub Timer1_OnTimeOut(ByV al lTimerId As Long)
If Timer1.Property1 < 20 Then
Timer1.Property1 = Timer1.Property1 + 1
Exit Sub
End If
Timer1.StopTimer
Timer1.Property1 = 0
cmd1.Visible = True
End Sub
三、堵塞问题
就是在连续运行方式下,OnTimeOut事件中的代码中,一定要小心使用循环结构,需要循环的话,尽量使用For循环。
如果必须要使用Do…Loop,首先要绝对避免任何死循环的可能,即使不会发生死循环,也一定要保证循环次数是可以预见的并且总循环时间一定要小于定时器的间隔时间,比如有个朋友发生过这样的问题,他在一个画面中使用了一个COMM控件,用于和设备进行串口通讯,他在一个定时器中编写脚本,运行时,有时会频繁的出现假死状态,我在电话中帮他解决问题,经过反复询问,最后发现罪魁祸首就是循环。
他在发出一个读取指令后,用一个Do…Loop不停的检测是否返回了所需要的数据,如果有则结束循环,但有些时候通讯状态不是很好,数据返回比较慢,甚至是严重超时,结
果循环就无限期的进行下去,CPU被占满,系统假死,他改用别的方法后,问题解决。
如果时间间隔设置的比较短,即使代码中没有循环结构,有些操作也会导致运行时间超过定时器的间隔时间,如果这个超时是可接受的正常情况,那么就要注意另一个问题,那就是定时器的QueueEvents属性。
它决定了当定时器某一次触发的脚本还没有执行完毕,下一次触发时间就到时了,这种性况下,新的事件是排队等候,还是被丢弃掉。
默认值是False,如果希望它们“一个都不能少”,那么就要把这个属性改为True。
但你必须保证这种超时只是偶然发生,否则,这个队就会也排越长,直到崩溃。
四、挂起问题
还有一个要注意的问题,如果你在前台(工作台)画面中使用了连续方式的定时器,那么你一定要知道,当你显示了一个有模式的窗体或者使用MsgBox函数时,工作台中的任何脚本都会被挂起(也就是停止运行),同样,定时器也不会再继续触发,直到窗体或消息框被关闭。
比如你像前面提到的那个老兄,在画面利用定时器进行通讯,那么,当显示有模式窗体或消息框时,通讯工作就会被停止,直到窗体或消息框被关闭。
所以如果需要通讯的话,最好编写一个独立的EXE程序比较好。
再比如,你要每小时整点的时候进行一次抄表工作,定时器的时间间隔为1小时。
那么如果8点整的时候,你已经有一个消息框显示后未被关闭,这次抄表就会缺失。
此类工作应该在后台调度中进行。
最后再提一个小事,默认情况下间隔时间的单位是毫秒,3秒钟就写作3000,但如果3小时怎么写呢?10800000?太夸张了。
其实可以用“时:分:秒”的格式,3小时写作3:00:00,超过1秒的时间间隔都可以用这种格式。
但是只能在属性窗口中这样写,新建定时器的对话框中不行。
以上是我在工作中使用定时器的一些心得,仓促写下,如果有错漏之处请告诉我,我尽快修正,以免误人。
定时器的其他用法,由于我使用的较少,就不乱说了。