力控组态软件的常见问题(六)
51:使用StartApp函数启动的WINDOWS自带的小键盘,使用StopApp函数为何关不掉?
是使用函数方法不对,首先将函数StartApp启动后的应用程序标识赋值给AppID(整型变量),如:AppID=StartApp("C:WINDOWSsystem32osk.exe");然后使用函数StopApp(AppID)才能将AppID指定的程序关闭。
52:如何求一段时间的小时数?(常用于GetStatisData()函数的Timespan 参数)
首先取起始时间的整型时间值LongTime(起始时间),再取终止时间的整型时间值LongTime(终止时间),再用nTime=LongTime(终止时间)-LongTime(起始时间)
小时数为:nHour=nTime/3600。
例如:求2004年10月1日0点0分到2004年11月1日0点0分,表达式即为:
nHour=(LongTime("2004/10/1 00:00:00")-LongTime("2004/11/1 00:00:00"))/3600。
53:使用力控控制策略PID结合模块做模拟量采集和调节控制,经常出现下置 数据超时或通讯停止的问题?
由于力控的PID运算调节周期短(10ms),如果直接将输出结果给模块会造成输出过频,出现上述写超时的现象。可以将输出做延时等控制。
54:如何在历史趋势中用一支笔在不同时间内切换显示不同变量的值?
可以使用字段中的Tag1-Tag8修改每只趋势笔显示的内容。也可以在历史趋势组态时选择双击时“变量时间设置框”。 或在特殊功能下的位号组里,定义几组位号组,然后,用函数ChangeGroup()可以动态切换。
55: 使用X-Y曲线时,我手工给X和Y对应的变量输入数值,发现坐标系中点了两个点,根本不是我要的曲线,这是为什么呀?
X-Y曲线是表达Y与X关系的曲线,必须同时(时间差很微小)获得数值。否则会出现上述现象。自动采集和运算时因周期短不存在这个问题,手工输入时需要做左键动作的脚本赋值。如:X.PV=A1.PV; Y.PV=A2.PV; 输入A1.PV和A2.PV的值后对前面的脚本进行确认,显示X.PV与Y.PV即可。
56:为何运行时能在历史趋势中看到实时曲线,向前查询时却看不到历史曲线?
1、 在数据库组态时对该变量没有进行历史保存或保存方式不合适。
2、 变量的量程过大,趋势数值范围太小,实际显示的数值占量程的百分比非常小,
所以感觉没有曲线显示,或曲线在数值范围外。
如果是组态中没有保存历史,在实时数据库系统的信息中会有“历史点不存在XXXX”(XXXX是数据库变量名称)的错误提示。
57:如果组态的画面中,有的画面需要对用户进行限制访问权限,即一些人 可以浏览一些人不可以浏览,怎么来实现?
组态时在“DRAW”窗口中的“特殊功能”——“用户组态”中,组态不同级别的用户及相 应用户口令。在需要设置画面浏览权限的窗口做“进入窗口”的脚本动作,判断$userle- vel 的值,当该值小于某个数时(0,1,2,3),关闭该窗口。只有以级别高的用户登录时($userlevel>?),才可以访问该窗口。注意登录后,用完该窗口,要注销,对该窗口的保护才继续起作用。
58:不想别人打开我的工程,对整个工程的开发与运行环境进行加密可以吗?
可以,只需在用户管理中定义一定级别的用户,在“配置”——“开发系统参数”——“组态保护”中选择一合适级别即可。即,只有等于或高于该级别的用户才能进入工程的开发系统。另外一种方式为:力控的运行加密锁可以使用“特使功能”——“工程加密”对工程进行加密,切记不要忘记密码也不要用同一个加密锁在不同工程中使用,否则将造成原有工程不能进入。运行系统加密可在“配置”——“运行系统参数”——“参数设置”中选择进入运行权限.
59:起始时间控件返回的是long型值,用什么函数能取得从中的“年”,“月”,“时”,“分”,“秒”?
使用函数:
StrTime(time, format)//将整型时间转成字符串形式 和
StrMid(String, First, Count)//截取由First开始Count个字符组成的字符串。
例如:求时间控件返回的年份:
cYear=StrMid(StrTime(#timer1.TimeGet(),2),0,4) //timer1为起始时间控件
60:如何求一段时间的小时数?(常用于GetStatisData()函数的Timespan参数)
首先取起始时间的整型时间值LongTime(起始时间),再取终止时间的整型时间值LongTime(终止时间),再用nTime=LongTime(终止时间)-LongTime(起始时间),求得小时数为:nHour=nTime/3600
例如:求2004年10月1日0点0分到2004年11月1日0点0分,表达式即为:
nHour=(LongTime("2004/10/1 00:00:00")-LongTime("2004/11/1 00:00:00"))/3600