VCL语法教程——5.常用Function
- math类型
ABS函数,取绝对值
ABS 有2路,ABS1,ABS2
属性:ABS#_output, 用来保存绝对值后的值
方法:
automate_ABS(ABS#,Input) 自动取绝对值,结果在ABS#_output里
get_ABS(ABS#,Input) 取绝对值,结果通过函数返回,也保存在ABS#_output里面
MTD,乘除运算,先乘后除
MTD 有4路,MTD1~MTD4
属性:MTD#_output
方法:
automate_muldiv(MTD#,Input,Multiplier,Divisor) 乘除运算,结果在MTD#_output里
get_muldiv(MTD#,Input,Multiplier,Divisor) 结果通过函数返回,也保存在MTD#_output里面
RND,随机数产生
方法:random() 返回一个随机数
random_set(seed) 设置随机数因子
SCL,缩放,详见教程4
方法:automate_scale(3)
scale_value(2)
setup_scale_factor(2)
COPY,变量copy,类似DMA
CPY有4个模块,CPY1~CPY4
方法:
1.automate_copy(CPY#,Source variable,Destiniation variable)
automate_copy(CPY#,0,0) 关闭CPY# 自动copy功能
2.automate_block_copy(CPY#,Source variable,Destiniation variable,count)
automate_block_copy(CPY#,0,0,0) 关闭CPY# 自动copy block的功能
3.automate_limited_block_copy(9)
自动copy最多4个变量到目标变量 ??????????????可否省略
如果要关闭,就把对应的目标或者源设置为0.
FLT,过滤模块
FLT有4组,FLT1~FLT4
方法:
automate_filter(FLT#,Input,Gain,preload,Rate)
参数说明: Gain 增益(0~32767)
Preload (预加载)
Rate(filter 每次更新的间隔ticks)
???这个是比较大小?Gain和Preload的功能 。1个ticks在哪里看时间
LIM, 信号限制模块
LIM有4组,LIM1~LIM4
LIM的设置类型有4个,
HARD_UPPER_LIMIT Hard upper limit (0 to ±32765)
HARD_LOWER_LIMIT Hard lower limit (0 to ±32765)
HARD_UPPER_UNSIGNED Hard upper limit (0 to 65536)
HARD_LOWER_UNSIGNED Hard lower limit (0 to 65536)
属性:
LIM#_output ,保存LIM#模块的值
LIM#_limt ,保存LIM#模块的限定值
方法:
automate_limit(LIM#,Input,Limit Value) ???这个是如何限制的 ,大小
get_limit(LIM#,Input) 返回受限制的值,并保存在LIM#_output中。
set_limit(LIM#,Limit Value) 设置Limitvalue
set_limit(LIM#,TYPE,Limit Value) 设置上述4个类型中的值,将TYPE设置为0讲禁止LIM模块
MAP模块,2D 图标,详见教程4
MAP有4组,MAP1~MAP4
属性:MAP#_outout ,
MAP#_segment ,表示输入的X在图标中的第几段
0代表输入X<Xmin. 当X>Xmax,输出就等于描点的(X,Y)的对数。
方法:
automate_map(MAP#,input)
get_map_output(MAP#,input) ;返回对应的Y值
get_map_segment(MAP#,input) ;获取输入X对应的第几段
set_map(MAP#,Length,X1,Y1,X2,Y2.....)
RMP模块,ramping模块,用于变量的斜线上升或下降
RMP有4组,RMP1~RMP4
属性:RMP#_output
RMP#_hold, 状态查询位,0代表等待改变,!=0代表正在运行
方法:
automate_ramp(RMP#,Target,Hold control,rate)
set_ramp_hold(RMP#,hold control) ;设置RMP#_hold位
set_ramp_rate(RMP#,rate) ;设置RMP#_rate.
set_ramp_target(RMP#,target) ;设置RMP# Target value.
setup_ramp(RMP#,Start value, Hold contrl,rate)
实例:
1.手动模式
setup_ramp(RMP#,Start value, 0,rate) ;先设置初值,rate,并使能
set_ramp_target(RMP#,target) ;启动
set_ramp_hold(RMP#,1) ; 暂停
2.自动模式,在auotomate_ramp()启动后set_ramp 3个参数的函数失效
初始化target变量,hold control变量,rate变量,RMP#_output变量
setup_ramp(RMP#,Start value, 0,rate) ;先设置初值,rate,并使能
auotomate_ramp(RMP#,Target variable,Hold varibale,rate variable)
SEL,通用开关模块
SEL模块有8组,SEL1~SEL8
SEL分成2中类型,1PDT单刀双掷,4PDT4刀双掷。
属性:
SEL#_output ;1PDT 的输出,COM端
SEL#_4P_n_output ;4PDT 的第n路输出。
SEL#_select ;1PDT的控制位,置0选择主路输出,不等于0选择次路输出。
SEL#_4P_select ;同上
方法:
对于1PDT开关
automate_select(SEL#,select variable) ;select variable置0禁用automate
set_select(SEL#,variable) ;设置SEL#_select的值
;设置1PDT,output的主输出值和次输出值
setup_select(SEL#,variable_primary,variable_secondary)
对于4PDT开关
automate_4p_select(SEL#,select variable)
set_4p_select(SEL#,variable)
;设置4PDT 的全部4路的output的主输出值和次输出值
setup_select(SEL#,
P1_primary,P2_primary,P3_primary,P4_primary,
P1_secondary,P2_secondary,P3_secondary,P4_secondary, )
;设置P1_primary和P1_secondary都为0 将禁用该通道
;单独设置P1_primary或P1_secondary为0 ,则非0的路还是有作用。
TIM模块,时间模块分2种,倒计时DLY和计时模块TMR
DLY模块:DLY1~DLY16
属性:DLY#_output 倒计时剩余时间
方法:
setup_delay(DLY#,Ticks) ;默认最新TICKS =1ms
ssetup_delay_prescale(DLY#,PreSclae) ; 分频,设置最小TICKS=1ms * PreSclae
TMR模块:TMR1~TMR3, 最大计时200K hours。
属性:TMR#_ms_output ;范围 (0~6000) 即0~0.1S 实际结果/10 就是真实ms
TMR#_sec_output ;范围(0~6000)即0~10 Hr 实际结果/10 就是真实hr
TMR#_hr_output ;范围(0~20K) 即0~200K Hr 实际结果*10 就是真实hr
TMR#_enable ;状态位,0禁止,不等于0运行
方法:
disbale_timer(TMR#)
enable_timer(TMR#)
reset_timer(TMR#) ; reset to 0
setup_timer(TMR#,ms,sec,hr) ;设置TMR# 的初始化ms,sec,hr值,注意范围。