服务热线:
您当前的位置:首页 > 世纪星月刊 > 第3期 (2011年3月)

【世纪星秘笈】巧用世纪星(二)

2011/9/26 11:10:36
 
作者:技术部 刘月新

 

前言:


  在很多时候,我们需要定时执行某个动作,例如每隔1 分钟我们向数据库里插入一条记录。世纪星
的命令语言提供了运行时间隔执行的功能,但是,需要注意的是,如果我们设定了间隔时间为1000 毫米,实际上程序执行间隔和1 秒是有误差的,就像其他编程语言的定时器一样并不准确。那么我们如何让间隔时间准确呢?

 

实现定时功能

 

第一种办法

  当需要间隔为整数分或秒时,例如1 分钟,我们可以在数据改变命令语言中实现,见图1 。

 

 

第二种办法

  当需要间隔为非整数分或秒时,例如1分钟12秒,我批量操作数据组态软件大多数都未提供数组功能,这对于习惯使用FOR 循环语句通过数据来实现变量的批处理的编程者,显得有些麻烦。其实,我们早就考虑到这一点,虽然没有们按秒计时。为了确保程序1 秒钟累计准确,我们扫描周期小于1 秒。在应用程序命令语言中实现,见图2 。

 

  

  采用以上两种办法实现的定时功能,定时准确,适用于对要求时间比较严格的地方,像流量的累计等。

 

批量操作数据

  组态软件大多数都未提供数组功能,这对于习惯使用FOR 循环语句通过数据来实现变量的批处理的编程者,显得有些麻烦。其实,我们早就考虑到这一点,虽然没有们按秒计时。为了确保程序1 秒钟累计准确,我们扫描周期小于1 秒。在应用程序命令语言中实现,见图2 。

  采用以上两种办法实现的定时功能,定时准确,适用于对要求时间比较严格的地方,像流量的累计等。
数组的概念,但是通过变量读写函数,世纪星可以实现变量的批处理。我们主要使用以下几个函数。
1)tagReadDisc()
语句:DiscResult=tagReadDisc("Tagname");
参数:Tagname--变量名或字符串
返回:DiscResult--离散变量
注释:配合函数StringFromIntg(),用于成组数据读写操作。

示例:
离散=tagReadDisc("dd"+"2");读离散变量"dd2"的值到变量" 离散" 中。
2)tagReadFloat()用法同tagReadDisc()
3)tagReadInt()用法同tagReadDisc()
4)tagReadMess()用法同tagReadDisc()
5)tagWriteDisc()
写离散值到离散变量中语法:DiscResult=tagWriteDisc("Tagname",
DiscValue)

参数:
Tagname--变量名或字符串
DiscValue--离散值0、1或离散变量
返回:DiscResult-- 离散变量;0:成功;1:失败
注释:配合函数StringFromIntg(),用于成组数据读写操作。

示例:
FORIndex=1TO10+1
tagWriteDisc("dd"+StringFromIntg(Index,10),1);
NEXT;
将离散值"1"写到离散变量"dd1"--"dd10"中。
6)tagWriteFloat()用法同tagWriteDisc()
7)tagWriteInt()用法同tagWriteDisc()
8)tagWriteMess()用法同tagWriteDisc()

批量操作数据示例:

本实例将a1-a5(内存实数)的值写入b1-ba5(内存实数)
Fori=1to5+1
flt=tagReadFloat("a"+StringFromIntg(i,10Base));
tagWriteFloat("a"+StringFromIntg(i,10Base),flt);
Next;

 

数据库表格模板

  如下字段
日期时间1#流量(l/min)2#流量(l/min)
世纪星需要创建的字段名称:
日期时间[1#流量(l/min)][2#流量(l/min)]
说明:当有数字开头的字段或者有小括号的字段,需要将该字段用[]括起来,否则无法创建表格,这是SQL语句决定的。

SQLSelect()

  当使用该语句查询数据库时,如果完成对记录集的访问之后,要调用S Q L E n d S e l e c t ( ),否则下次调用SQ LSe lec t()时记录集不会改变。

SQLConnect()cnn=SQLConnect("szConnectString");cnn为数据源连接句柄,如果连接成功后,cnn 会是一个非常大的整数,所以在变量字典里要将cnn 的范围设置的较大。

  

推荐(-1e9~1e9)

运算
1 )乘方
2^5=2**5
2 )求对数
Log10(100);返回:2。
Log10(1);返回:0。
求任意底数的对数(利用对数公式):
对数公式:loga(b)=loge(b)/loge(a)
如:log2(256)=Log(256)/Log(2)=8("="左侧为要求
的对数表达式,右侧为世纪星表达式)
log2(256)=Log10(256)/Log10(2)=8("="左侧为要求的
对数表达式,右侧为世纪星表达式)
类型转换
整型转字符:StringFromIntg()
字符转整型:StringToIntg()
其他类型:同理

 

命令语言调试函数

  方便用户查看命令语言的执行过程,以及查看执行过程中变量或表达式的值,世纪星提供了四个命令语言调试函数,分别对应世纪星的四种变量类型,这些函数可以将用户指定的信息发送到世纪星的信息窗口中,根据这些信息,用户可以了解到命令语言执行的过程,以及查看执行过程中变量或表达式的值。四个命令语言调试函数如下:

1离散变量或离散表达式调试函数:DebugTraceDisc("PromptMessage",DiscExpression);
2 整数变量或整数表达式调试函数:DebugTraceInt("PromptMessage",IntExpression);
3实数变量或实数表达式调试函数:DebugTraceFloat("PromptMessage",FloatExpression);
4信息变量信息表达式调试函数:DebugTraceMessage("PromptMessage",MessageExpression);

  

  更多精彩内容,尽情期待下一期《世纪星月刊》。

 


企业邮箱  |  法律公告  |  隐私保护  |  联系我们  |