本章节描述标准库指令中的各种指令本章节描述标准库指令中的各种指令5.2 5.2 标准准库指令指令指令块如图所示:指令块如图所示:减计数器指令减计数器指令CTDCTD输入:入:CDCD:: 布布尔型(型(BOOLBOOL););该输入端的上升沿触入端的上升沿触发CVCV的的递减减计数LOADLOAD:布:布尔型(型(BOOLBOOL);当其);当其为上升沿触上升沿触发时,,CVCV被置被置为上限上限值PVPVPVPV:: 字型(字型(WORDWORD);上限);上限值,也就是,也就是CVCV开始开始递减减时的初始的初始值输出:出:Q Q:: 布布尔型(型(BOOLBOOL);一旦);一旦CVCV达到达到0 0时,其,其值为TRUETRUECVCV:字型(:字型(WORDWORD);不断减);不断减1 1的的值,从,从PVPV开始直至其达到开始直至其达到0 0 当当LOADLOAD为TRUETRUE时,,计数数变量量CVCV被初始化被初始化为上限上限值PVPV当CDCD端有一个从端有一个从FALSEFALSE变为TRUETRUE的上升沿的上升沿时,若,若CVCV大于大于0 0时,它,它将减将减1 1(也就是(也就是说,它不会,它不会输出小于出小于0 0的的值)。
当)当CVCV等于等于0 0时,,Q Q返回返回TRUETRUE程序例:程序例:分析:程序分析:程序执行行时,将,将PV_WORDPV_WORD设为3 3,当,当X2X2由由FALSEFALSE变为TRUETRUE上升沿上升沿 触触发时,,CV_WORDCV_WORD也也变为3 3此时 输入端入端X1X1执行行FALSEFALSE变为TRUETRUE,上升沿触,上升沿触发,,则 CV_WORD CV_WORD自自动减减计数数1 1;当;当X1X1第第3 3次由次由FALSEFALSE变 TRUE TRUE上升沿触上升沿触发时,,CV_WORDCV_WORD递减到减到0 0时,此,此时Q Q 输出出为1 1加计数指令加计数指令CTUCTU指令指令块如下如下图所示:所示:输入:入:CUCU:布:布尔型(型(BOOLBOOL););该输入端的上升沿触入端的上升沿触发CVCV的的递增增计数RESETRESET:布:布尔型(型(BOOLBOOL);当其);当其为TRUETRUE时,,CVCV被复位被复位为0 0。
PVPV:字型(:字型(WORDWORD););CVCV计数的上限数的上限输出:出:Q Q:布:布尔型(型(BOOLBOOL);一旦);一旦CVCV达到其上限达到其上限PVPV时,其,其值为TRUETRUECVCV:字型(:字型(WORDWORD);不断加);不断加1 1的的值,直至其达到,直至其达到PVPV 当当RESETRESET为TRUETRUE时,,计数数变量量CVCV被初始化被初始化为0 0当CUCU端有端有一个从一个从FALSEFALSE变为TRUETRUE的上升沿的上升沿时,,CVCV将加将加1 1当CVCV大于或等大于或等于上限于上限PVPV时,,Q Q返回返回TRUETRUE程序例:程序例:分析:程序分析:程序执行行时,将,将PV_WORDPV_WORD设为3 3,此,此时CV_WORDCV_WORD是是0 0 此此时输入端入端X1X1执行行FALSEFALSE变为TRUETRUE上升沿触上升沿触发,,则 CV_WORD CV_WORD自自动加加计数数1 1;当;当X1X1第第3 3次由次由FALSEFALSE变TRUETRUE上上 升沿触升沿触发时,,CV_WORDCV_WORD递增到增到3 3时,此,此时Q Q输出出为1 1。
此此时如将如将RESETRESET端端X2X2执行行FALSEFALSE变为TRUETRUE上升沿触上升沿触发,, 则指令重新复位数指令重新复位数变量量CVCV被初始化被初始化为0 0 计数功能块计数功能块CTUCTU::运行结果运行结果::加减双向加减双向计数指令数指令CTUDCTUD指令指令块如下如下图所示:所示:输入:入:CUCU:布:布尔型(型(BOOLBOOL);当);当CUCU端有上升沿端有上升沿时,触,触发CVCV的的递增增计数CDCD:布:布尔型(型(BOOLBOOL);当);当CDCD端有上升沿端有上升沿时,触,触发CVCV的的递减减计数RESETRESET:布:布尔型(型(BOOLBOOL)当其)当其为TRUETRUE时,,CVCV被复位被复位为0 0LOADLOAD:布:布尔型(型(BOOLBOOL);当其);当其为TRUETRUE时,,CVCV被置被置为PVPVPVPV:字型(:字型(WORDWORD););CVCV递增增时的上限的上限值,或,或CVCV开始开始递减减时的初的初 始始值。
输出:出:QUQU:布:布尔型(型(BOOLBOOL);一旦);一旦CVCV达到达到PVPV时,其,其值为TRUETRUEQDQD:布:布尔型(型(BOOLBOOL);一);一 旦旦CVCV达到达到0 0时,, 其其值为TRUETRUECVCV:字型:字型 ((WORDWORD);不断减);不断减1 1的的值,从,从PVPV开始直至其达到开始直至其达到0 0程序例:程序例:分析:当分析:当RESETRESET为TRUETRUE时,,计数数变量量CVCV被初始化被初始化为0 0当LOAD LOAD 为TRUETRUE时,,计数数变量量CVCV被初始化被初始化为上限上限值PVPV当CUCU端端 有一个从有一个从FALSEFALSE变为TRUETRUE的上升沿的上升沿时,,CVCV将加将加1 1当CDCD 端有一个从端有一个从FALSEFALSE变为TRUETRUE的上升沿的上升沿时,若,若CVCV不会降不会降 到到0 0以下以下时,它将减,它将减1 1当CVCV大于或等于上限大于或等于上限PVPV时,,QU QU 返回返回TRUETRUE。
当当CVCV等于等于0 0时,,QDQD返回返回TRUETRUE延延时断开指令断开指令TOFTOF 定定时器功能器功能块,完成关延,完成关延时的功能当定的功能当定时器器的的输入端由入端由TRUETRUE变为FALSEFALSE时(下降沿),等(下降沿),等过了一了一段段时间后,定后,定时器的器的输出端才出端才变为FALSEFALSE指令块如如下下图所示:所示:输入:入:ININ:布:布尔型(型(BOOLBOOL););该输入端的下降沿触入端的下降沿触发ETET端端 的的计时PTPT::时间型(型(TIMETIME););ETET计时时间的上限的上限值(延(延时 时间)输出:出:Q Q:布:布尔型(型(BOOLBOOL);一旦);一旦ETET端端计时达到上限达到上限值PTPT时,, 输出一个下降沿(延出一个下降沿(延时时间过去了)ETET::时间型(型(TIMETIME););时间的当前状的当前状态程序例:程序例:分析:当分析:当ININ为TRUETRUE时,Q,Q为TRUETRUE,,ETET为0 0一旦ININ变为FALSEFALSE,定,定 时器的器的输出端出端ETET以精确到毫秒以精确到毫秒级别开始开始计时,直到它等,直到它等 于于PTPT,随后它会,随后它会维持不持不变。
当当ININ变为FALSEFALSE且且ETET等于等于PT PT 时,,Q Q为FALSEFALSE否则它它为TRUETRUE在本例中,在本例中,PTPT设为3s3s,, 当当X1X1由由TRUETRUE变为FALSEFALSE下降沿触下降沿触发时,定,定时器器输出端出端ET ET 开始开始计时,定,定时到达到达3s3s后后输出出Q Q由由TRUETRUE变为FALSEFALSE延延时导通指令通指令TONTON 定定时器功能器功能块,完成开延,完成开延时的功能当定的功能当定时器器的的输入端入端变为TRUETRUE时,等,等过了一段了一段时间后,定后,定时器器的的输出端才出端才变为TRUETRUE指令块如下如下图所示:所示:输入:入:ININ:布:布尔型(型(BOOLBOOL););该输入端的上升沿触入端的上升沿触发ETET端端 的的计时PTPT::时间型(型(TIMETIME););ETET计时时间的上限的上限值(延(延时 时间)输出:出:Q Q:布:布尔型(型(BOOLBOOL);一旦);一旦ETET端端计时达到上限达到上限值PTPT时,, 输出一个上升沿(延出一个上升沿(延时时间过去了)。
去了)ETET::时间型(型(TIMETIME););时间的当前状的当前状态程序例:程序例:分析分析: :当当ININ为FALSEFALSE时,Q,Q为FALSEFALSE,,ETET为0 0一旦ININ变 为TRUETRUE,定,定时器的器的输出端出端ETET以精确到毫秒以精确到毫秒级别 开始开始计时,直到它等于,直到它等于PTPT,随后它会,随后它会维持不持不变 当当ININ变为TRUETRUE且且ETET等于等于PTPT时,,Q Q为TRUETRUE否则 它它为FALSEFALSE在本例中在本例中, PT, PT设为3s3s,当,当X1X1由由 FALSE FALSE变为TRUETRUE上升沿触上升沿触发时,定,定时器器输出端出端 ET ET开始开始计时,定,定时到达到达3s3s后后输出出Q Q由由FALSEFALSE变为 TRUE TRUE(1)(1)通电延时通电延时TONTON::相应的时序图:相应的时序图:利用通电延时利用通电延时TONTON设计一个通电后延时设计一个通电后延时3S3S的梯形图的梯形图t=880mst=880ms时的运行状态时的运行状态::t=3st=3s时的运行状态:时的运行状态:参考程序及运行结果:参考程序及运行结果:(2)(2)断电延时断电延时TOFTOF::相应的时序图相应的时序图::t=0st=0s时的运行结果时的运行结果::t=1s100mst=1s100ms时的运行结果:时的运行结果:t=3st=3s时的运行结果:时的运行结果:例:例:利用断电延时利用断电延时TOFTOF设计一个断电后延时设计一个断电后延时3S3S的梯形图的梯形图PLC 每隔2 秒钟读取一次i) 定时器及计数器组合用法单个定时器用法秒脉冲+计数器上述的三种方式都可以实现上述的三种方式都可以实现2s 的定时功能,但是从编程的简便性和容许的误的定时功能,但是从编程的简便性和容许的误差角度来说,第二种方式可能更简单,产生的时间误差更小。
在编程的过程中,差角度来说,第二种方式可能更简单,产生的时间误差更小在编程的过程中,考虑到考虑到PLC 扫描周期的影响,应尽可能的简化程序的编写,以减小扫描周期可扫描周期的影响,应尽可能的简化程序的编写,以减小扫描周期可能产生的误差能产生的误差触触发发定定时时器指令器指令TPTP 触触发定定时器功能器功能块定时器的器的输出出值不断增加,不断增加,直至其达到限直至其达到限值在计时期期间,,““脉冲脉冲””变量量为TRUETRUE,其他,其他时候候为FALSEFALSE指令块如下如下图所示:所示:输入:入:ININ:布:布尔型(型(BOOLBOOL););该输入端的上升沿触入端的上升沿触发ETET端端的的计时PTPT::时间型(型(TIMETIME););计时时间的上限的上限值输出:出:Q Q:布:布尔型(型(BOOLBOOL);当);当ETET端在端在计时的的时候,其候,其值为TRUETRUEETET::时间型(型(TIMETIME););时间的当前状的当前状态程序例:程序例:分析:当分析:当ININ为FALSEFALSE时,Q,Q为FALSEFALSE,,ETET为0 0。
一旦一旦ININ变为TRUETRUE,, 定定时器的器的输出端出端ETET以毫秒精度开始以毫秒精度开始计时,直到它等于,直到它等于 PT PT,随后它会,随后它会维持不持不变当ININ变为TRUETRUE且且ETET小于或等小于或等 于于PTPT时,,Q Q为TRUETRUE否则它它为FALSEFALSE在由PTPT值指定的指定的 时间到达到达时,,Q Q返回了一个信号在本例中,返回了一个信号在本例中,PTPT设为3 3 时,,X1X1为FALSEFALSE,,Q1Q1为FALSEFALSE,当,当X1X1为TRUETRUE,,Q Q输出出变为 TRUE TRUE,同,同时ETET开始开始计数,当数,当ET=3SET=3S时,,Q Q输出出变回回为 FALSE. FALSE.脉冲指令脉冲指令BLINKBLINK 功能功能块BLINKBLINK产生脉冲信号生脉冲信号输入由入由BOOLBOOL类型型ENABLEENABLE,,以及以及TIMETIME类型型TIMELOWTIMELOW和和TIMEHIGHTIMEHIGH组成。
成输出出OUTOUT是是BOOLBOOL类型指令指令块如下如下图所示:所示: 如果如果ENABLEENABLE为TRUETRUE,在,在时间周期周期TIMEHIGHTIMEHIGH,,BLINKBLINK设置置输出出为TRUETRUE;然后在;然后在时间周期周期TIMELOWTIMELOW,,设置置输出出为FALSEFALSE程序例:程序例:分析:在本例中,当分析:在本例中,当ENABLE X1ENABLE X1是是TRUETRUE时,,BLINKBLINK开始工作,开始工作, 输出低出低电平平2s2s高高电平平1s1s的脉冲,如下的脉冲,如下图功能块功能块BLINKBLINK的应用的应用振荡电路:振荡电路:振荡电路的作用是产生交流电振荡来作为信号源一般把大小和方向都随周期发生变化的电流叫振荡电流,能产生振荡电流的电路叫做振荡电路,那么如何使用PLC程序编制振荡电路呢?施耐德标准程序库中提供了这样的功能块来产生方波脉冲,即BLINK功能块功能块介绍:功能块介绍: (1)功能块BLINK产生脉冲信号输入由BOOL类型ENABLE,以及TIME类型TIMELOW和TIMEHIGH组成。
输出OUT是BOOL类型2)如果ENABLE为TRUE,在时间周期TIMEHIGH,BLINK设置输出为TRUE.然后在时间周期TIMELOW,设置输出为FALSE,程序和时序图如图所示图中的程序实现了图中的程序实现了10s10s为真、为真、10s10s为假的方波为假的方波时序图时序图:参考程序:参考程序:下降沿触下降沿触发发指令指令F_TRIGF_TRIG该功能功能块检测一个下降沿指令一个下降沿指令块如下如下图所示:所示:输入:入:CLKCLK:布:布尔型(型(BOOLBOOL);被);被检测其下降沿的布其下降沿的布尔型型输入信号入信号输出:出:Q Q:布:布尔型(型(BOOLBOOL);当);当CLKCLK上上检测到一个下降沿到一个下降沿时,, 其其值为TRUETRUE; ; 只要只要输入入变量量CLKCLK为TRUETRUE,,输出出Q Q都都保持保持为FALSEFALSE一旦CLKCLK为FALSEFALSE,,Q Q会先返回会先返回TRUETRUE,然后被置,然后被置为FALSEFALSE这意味着每次意味着每次调用用这个功能个功能块时,, Q Q会返回会返回FALSEFALSE直到直到CLKCLK在上升沿后有一个在上升沿后有一个下降沿。
下降沿程序例:程序例:分析:在本例中,当分析:在本例中,当X1X1输入一个由入一个由TRUETRUE变为FALSE FALSE 的下降沿,的下降沿,则F_TRIGF_TRIG的的输出出Q Q也也输出一个由出一个由FALSEFALSE变为TRUETRUE的上升沿,然后再的上升沿,然后再变为FALSEFALSE上升沿触上升沿触发发指令指令R_TRIGR_TRIG 该功能功能块检测一个上升沿指令一个上升沿指令块如下如下图所示:所示:输入:入:CLKCLK:布:布尔型(型(BOOLBOOL);被);被检测上升沿的布上升沿的布尔型型输入入信号信号输出:出:Q Q:布:布尔型(型(BOOLBOOL);当);当CLKCLK上上检测到一个上升沿到一个上升沿时,,其其值为TRUETRUE只要只要输入入变量量CLKCLK为FALSEFALSE,,输出出Q Q保持保持为FALSEFALSE一旦CLKCLK为TRUETRUE,,Q Q会先返回会先返回TRUETRUE,然后,然后被置被置为FALSEFALSE这意味着每次意味着每次调用用这个功能个功能块时,,Q Q会返回会返回FALSEFALSE直到直到CLKCLK在下降沿后有一个上升沿。
在下降沿后有一个上升沿程序例:程序例:分析:在本例中,当分析:在本例中,当X1X1输入一个由入一个由FALSEFALSE变为TRUE TRUE 的上升沿,的上升沿,则R_TRIGR_TRIG的的输出出Q Q也也输出一个由出一个由 FALSE FALSE变为TRUETRUE的上升沿,然后再的上升沿,然后再变为FALSEFALSE单按钮控制输出灯的程序单按钮控制输出灯的程序功能块R-TRIG的应用:程序:程序:时序图:时序图:功能介绍:功能介绍:(1)在程序中使用上升沿指令后,当输入点button的状态由OFF转为ON,仅在驱动输入ON后1个扫描周期内,内部软元件M3才动作2)在输入点button上,第一个脉冲信号到来时,M3产生一个扫描周期的单脉冲,使M3的常开触点闭合一个扫描周期3)第一个按钮脉冲到来一个扫描周期后,M3断开,输出线圈lamp接通,第二个支路使输出线圈lamp保持接通(4)当第二个脉冲到来时,M3再产生一个扫描周期的单脉冲,使得输出线圈lamp的状态由接通变为断开5)通过分析可知,通过一个输入点的上升沿的次数可控制输出lamp的接通和断开6)由以上分析可知,这个程序同时也是一个二分频电路。
如果将分频的脉冲信号加button上,则lamp的输出频率刚好是button输入频率的1/2.加运算指令加运算指令ADDADD 变量相加允量相加允许的的变量量类型:型: BYTE BYTE、、WORDWORD、、DWORDDWORD、、SINTSINT、、USINTUSINT、、INTINT、、UINTUINT、、DINTDINT、、UDINTUDINT、、REALREAL和和LREALLREAL指令块如下如下图所示:所示:程序例:程序例:分析:在本例中,当分析:在本例中,当X1X1为TRUETRUE时,,ADDADD执行把操作行把操作 数数X3X3和和 X4 X4相加的运算,并把相加的运算,并把结果果输出到出到X5X5 中,如中,如X3=3X3=3;;X4=7X4=7;;则X5=10X5=10减运算指令减运算指令SUBSUB 从某个从某个变量中减去一个量中减去一个变量允许的的变量量类型:型:BYTEBYTE、、WORDWORD、、DWORDDWORD、、SINTSINT、、USINTUSINT、、INTINT、、UINTUINT、、DINTDINT、、UDINTUDINT、、REALREAL和和LREALLREAL。
指令如下指令如下图所示:所示:程序例:程序例:分析分析: :在本例中在本例中, , 当当X1X1为TRUETRUE时,,SUBSUB执行把操作数行把操作数 X3 X3减去减去 X4 X4的运算,并把的运算,并把结果果输出到出到X5X5中,如中,如 X3=3 X3=3;;X4=7X4=7;;则 X5=-4 X5=-4 变量相乘允量相乘允许的的变量量类型:型:BYTEBYTE、、WORDWORD、、DWORDDWORD、、SINTSINT、、USINTUSINT、、INTINT、、UINTUINT、、DINTDINT、、UDINTUDINT、、REALREAL和和LREALLREAL指令如下指令如下图所示:所示:乘运算指令乘运算指令MULMUL程序例:程序例:分析:在本例中分析:在本例中, , 当当X1X1为TRUETRUE时,,MULMUL执行把操作行把操作 数数X3X3乘以乘以X4X4的运算,并把的运算,并把结果果输出到出到X5X5中,中, 如如X3=3X3=3;;X4=7X4=7;;则X5=21X5=21。
除运算指令除运算指令DIVDIV 用一个用一个变量除另一个量除另一个变量允许的的变量量类型:型:BYTEBYTE、、WORDWORD、、DWORDDWORD、、SINTSINT、、USINTUSINT、、INTINT、、UINTUINT、、DINTDINT、、UDINTUDINT、、REALREAL和和LREALLREAL指令如下指令如下图所示:所示:程序例:程序例:分析:在本例中分析:在本例中, , 当当X1X1为TRUETRUE时,,DIVDIV执行把操行把操 作数作数X3X3除除X4X4的运算,并把的运算,并把结果果输出到出到X5X5 中,如中,如X3=10X3=10;;X4=5X4=5;;则X5=2X5=2截尾取整指令截尾取整指令TRUNCTRUNC 把把实数数类型(型(REALREAL))转换成成DINTDINT类型取被转换值的整数部分指令如下的整数部分指令如下图所示:所示:程序例:程序例:分析:在本例中分析:在本例中, , 当当X1X1为TRUETRUE时,,TRUNCTRUNC执行把操行把操 作数作数X7X7截尾取整的运算,即当截尾取整的运算,即当X7=9.89X7=9.89时,, 取其整数部分,并把取其整数部分,并把结果果输出到出到X8X8,即,即 X8=9 X8=9。
取余指令取余指令MODMOD 一个一个变量与另一个量与另一个变量相除取余允量相除取余允许的的变量量类型:型:BYTEBYTE、、WORDWORD、、DWORDDWORD、、SINTSINT、、USINTUSINT、、INTINT、、UINTUINT、、DINTDINT、、UDINTUDINT结果果为除法运算的余数,是除法运算的余数,是一个整数指令如下一个整数指令如下图所示:所示:程序例:程序例:分析:在本例中,当分析:在本例中,当X1X1为TRUETRUE时,,MODMOD指令指令执行行 把把X3X3除以除以X4X4,并把余数,并把余数输出到出到X5X5中;即中;即 当当X3=10X3=10,,X4=6X4=6时,余数,余数X5=4X5=4比比较较等于指令等于指令EQEQ指令如下指令如下图所示:所示: 当两个操作数相等当两个操作数相等时,返回,返回值为TRUETRUE操作数可以可以为BOOLBOOL、、BYTEBYTE、、WORDWORD、、DWORDDWORD、、SINTSINT、、USINTUSINT、、INTINT、、UINTUINT、、DINTDINT、、UDINTUDINT、、REALREAL、、LREALLREAL、、TIMETIME、、DATEDATE、、TIME_OF_DAYTIME_OF_DAY、、DATE_AND_TIMEDATE_AND_TIME和和STRINGSTRING类型。
型程序例:程序例:分析:在本例中,当分析:在本例中,当X1X1为TRUETRUE时,,EQEQ指令指令执行,比行,比 较X3X3和和X4X4的的值,如,如X3=X4X3=X4,,则输出比出比较结果果 X2 X2为TRUETRUE;否;否则,,X2X2为FALSEFALSE所以,当所以,当 X3=X4=6 X3=X4=6时,比,比较结果果X2=TRUEX2=TRUE比比较较 大于等于指令大于等于指令GEGE大于或等于指令如下大于或等于指令如下图图:: 当第一个操作数大于或者等于第二个操作数当第一个操作数大于或者等于第二个操作数时,返回,返回值为TRUETRUE操作数可以操作数可以为BOOLBOOL、、BYTEBYTE、、WORDWORD、、DWORDDWORD、、SINTSINT、、USINTUSINT、、INTINT、、UINTUINT、、DINTDINT、、UDINTUDINT、、REALREAL、、LREALLREAL、、TIMETIME、、DATEDATE、、TIME_OF_DAYTIME_OF_DAY、、DATE_AND_TIMEDATE_AND_TIME和和STRINGSTRING类型。
型程序例:程序例:分析:在本例中,当分析:在本例中,当X1X1为TRUETRUE时,,GEGE指令指令执行,行, 比比较X3X3和和X4X4的的值,如,如X3X3大于等于大于等于X4X4,,则输 出比出比较结果果X2X2为TRUETRUE;否;否则,,X2X2为FALSEFALSE 所以,当所以,当X3=5X3=5;;X4=6X4=6时,比,比较结果果X2=FALSEX2=FALSE比比较较 大于指令大于指令GTGT大于指令如下大于指令如下图图:: 当第一个操作数比第二个大当第一个操作数比第二个大时,返回,返回值为TRUETRUE操作数可以操作数可以为BOOLBOOL、、BYTEBYTE、、WORDWORD、、DWORDDWORD、、SINTSINT、、USINTUSINT、、INTINT、、UINTUINT、、DINTDINT、、UDINTUDINT、、REALREAL、、LREALLREAL、、TIMETIME、、DATEDATE、、IME_OF_DAYIME_OF_DAY、、DATE_AND_TIMEDATE_AND_TIME和和STRINGSTRING类型。
型程序例:程序例:分析:在本例中,当分析:在本例中,当X1X1为TRUETRUE时,,GTGT指令指令执行,比行,比 较X3X3和和X4X4的的值,如,如X3X3大于大于X4X4,,则输出比出比较结 果果X2X2为TRUETRUE;否;否则,,X2X2为FALSEFALSE所以,当所以,当 X3=8,X4=6 X3=8,X4=6时,比,比较结果果X2=TRUEX2=TRUE比比较较 小于等于指令等于指令LELE小于等于指令如下小于等于指令如下图所示:所示: 第一个操作数小于或者等于第二个操作数第一个操作数小于或者等于第二个操作数时,,返回返回值为TRUETRUE操作数可以操作数可以为BOOLBOOL、、BYTEBYTE、、WORDWORD、、DWORDDWORD、、SINTSINT、、USINTUSINT、、INTINT、、UINTUINT、、DINTDINT、、UDINTUDINT、、REALREAL、、LREALLREAL、、TIMETIME、、DATEDATE、、TIME_OF_DAYTIME_OF_DAY、、DATA_AND_TIMEDATA_AND_TIME和和STRINGSTRING类型。
型程序例:程序例:分析:在本例中,当分析:在本例中,当X1X1为TRUETRUE时,,LELE指令指令执行,行, 比比较X3X3和和X4X4的的值,如,如X3X3小于或者等于小于或者等于X4X4,, 则输出比出比较结果果X2X2为TRUETRUE,否,否则,,X2X2为 FALSE FALSE所以,当所以,当X3=8X3=8,,X4=9X4=9时,比,比较结 果果X2=TRUEX2=TRUE比比较较 小于指令小于指令LTLT小于指令如下小于指令如下图所示:所示: 当第一个操作数比第二个小当第一个操作数比第二个小时,返回,返回值为TRUETRUE操作数可以操作数可以为BOOLBOOL、、BYTEBYTE、、WORDWORD、、DWORDDWORD、、SINTSINT、、USINTUSINT、、INTINT、、UINTUINT、、DINTDINT、、UDINTUDINT、、REALREAL、、LREALLREAL、、TIMETIME、、DATEDATE、、TIME_OF_DAYTIME_OF_DAY、、DATA_AND_TIMEDATA_AND_TIME和和STRINGSTRING类型。
型程序例:程序例:分析:在本例中,当分析:在本例中,当X1X1为TRUETRUE时,,LELE指令指令执行,比行,比 较X3X3和和X4X4的的值,如,如X3X3小于小于X4X4,,则输出比出比较结 果果X2X2为TRUETRUE,否,否则,,X2X2为FALSEFALSE所以,当所以,当 X3=8 X3=8,,X4=9X4=9时,比,比较结果果X2=TRUEX2=TRUE比比较较 不等于指令不等于指令NENE不等于指令如下不等于指令如下图所示:所示: 当两个操作数不相等当两个操作数不相等时,返回,返回值为TRUETRUE操作数可以数可以为BOOLBOOL、、BYTEBYTE、、WORDWORD、、DWORDDWORD、、SINTSINT、、USINTUSINT、、INTINT、、UINTUINT、、DINTDINT、、UDINTUDINT、、REALREAL、、LREALLREAL、、TIMETIME、、DATEDATE、、TIME_OF_DAYTIME_OF_DAY、、DATA_AND_TIMEDATA_AND_TIME和和STRINGSTRING类型。
型程序例:程序例:分析:在本例中,当分析:在本例中,当X1X1为TRUETRUE时,,LELE指令指令执行,行, 比比较X3X3和和X4X4的的值,如,如X3X3不等于不等于X4X4,,则输出出 比比较结果果X2X2为TRUETRUE,否,否则,,X2X2为FALSEFALSE所 以,当以,当X3=8X3=8,,X4=9X4=9时,比,比较结果果X2=TRUEX2=TRUE循循环环左移指令左移指令ROLROL将操作数按位循将操作数按位循环左移指令如下左移指令如下图所示:所示: ROL (in, n) ROL (in, n)允许的数据的数据类型:型:BYTEBYTE、、WORDWORD、、DWORDDWORDinin会左移二会左移二进制位制位n n次,同次,同时左左边移出的位重新移出的位重新补充到右充到右边程序例:程序例:分析:在本例中,分析:在本例中,inbyteinbyte和和outbyteoutbyte分分别设为bytebyte数数 据据类型,型,inbyte=10#69inbyte=10#69,,n=2n=2。
当当X1X1为 TRUE TRUE 时,,ROLROL执行循行循环左移位,此左移位,此时, , inbyte=10#69=2#01000101 inbyte=10#69=2#01000101,循,循环左移左移2 2位后,位后, outbyte=2#00010101=10#21 outbyte=2#00010101=10#21循循环环右移指令右移指令RORROR将操作数按位循将操作数按位循环右移指令如下右移指令如下图所示:所示: ROR (in, n) ROR (in, n)允许的数据的数据类型:型:BYTEBYTE、、WORDWORD、、DWORDDWORDinin会左移二会左移二进制位制位n n次,同次,同时右右边移出的移出的位重新位重新补充到左充到左边程序例:程序例:分析:在本例中,分析:在本例中,inbyteinbyte和和outbyteoutbyte分分别设为bytebyte数数 据据类型,型,inbyte=10#69inbyte=10#69,,n=2n=2当X1X1为TRUETRUE时,, ROR ROR执行循行循环右移位,此右移位,此时, , inbyte=10#69=2#01000101 inbyte=10#69=2#01000101,循,循环右移右移2 2位后,位后, outbyte=2#01010001=10#81 outbyte=2#01010001=10#81。
左移指令左移指令SHLSHL将操作数按位左移指令如下将操作数按位左移指令如下图所示:所示: SHL (in, n) SHL (in, n)inin:需要左移的操作数需要左移的操作数n n::操作数左移的位数如果操作数左移的位数如果n n超出了数据本身的位数,超出了数据本身的位数,BYTEBYTE、、WORDWORD和和DWORDDWORD类型的操作数将会型的操作数将会补0 0,而有,而有符号符号类型的操作数(例如型的操作数(例如INTINT)将会)将会进行算数移位行算数移位也就是也就是说会将会将这些数的最高位的些数的最高位的值补在空出的二在空出的二进制位上程序例:程序例:分析:在本例中,分析:在本例中,inbyteinbyte和和outbyteoutbyte分分别设为byte byte 数据数据类型,型,inbyte=10#69inbyte=10#69,,n=2n=2当X1X1为 TRUE TRUE时,,ROLROL执行左移位,此行左移位,此时,, inbyte=10#69=2#01000101 inbyte=10#69=2#01000101,, 左移左移2 2位后,位后,outbyte=2#00010100=10#20outbyte=2#00010100=10#20。
右移指令右移指令SHRSHR将操作数按位右移指令如下将操作数按位右移指令如下图所示:所示: SHR (in, n) SHR (in, n)in: in: 需要右移的操作数需要右移的操作数n: n: 操作数右移的位数如果操作数右移的位数如果n n超出了数据本身的位超出了数据本身的位数,数,BYTEBYTE、、WORDWORD和和DWORDDWORD类型的操作数将会型的操作数将会补0 0,,而有符号而有符号类型的操作数(例如型的操作数(例如INTINT)将会)将会进行算行算数移位也就是数移位也就是说会将会将这些数的最高位的些数的最高位的值补在在空出的二空出的二进制位上程序例:程序例:分析:在本例中,分析:在本例中,inbyteinbyte和和outbyteoutbyte分分别设为bytebyte数数 据据类型,型,inbyte=10#69inbyte=10#69,,n=2n=2当X1X1为TRUETRUE时,, ROR ROR执行右移位,此行右移位,此时 inbyte=10#69=2#01000101 inbyte=10#69=2#01000101,右移,右移2 2位后,位后, outbyte=2#00010001=10#17 outbyte=2#00010001=10#17。
正弦函数正弦函数SINSIN返回一个数的正弦返回一个数的正弦值,数据以弧度,数据以弧度计算指令如下算指令如下图:: 输入入变量可以是量可以是BYTEBYTE、、WORDWORD、、DWORDDWORD、、INTINT、、DINTDINT、、REALREAL、、SINTSINT、、USINTUSINT、、UINTUINT、、UDINTUDINT类型输出出变量只能是量只能是REALREAL类型程序例:程序例:分析:在本例中,分析:在本例中,X3=1X3=1弧度弧度=180/pi=180/pi度;当度;当X1X1为TRUE TRUE 时,,SINSIN执行正弦行正弦计算,将算,将X3X3的正弦的正弦值输出到出到 X7 X7中,所以中,所以X7=0.841X7=0.841余弦函数余弦函数COSCOS返回一个数的余弦返回一个数的余弦值,数据以弧度,数据以弧度计算指令如下算指令如下图:: 输入入变量可以是量可以是BYTEBYTE、、WORDWORD、、DWORDDWORD、、INTINT、、DINTDINT、、REALREAL、、SINTSINT、、USINTUSINT、、UINTUINT、、UDINTUDINT类型。
型输出出变量只能是量只能是REALREAL类型程序例:程序例:分析:在本例中,分析:在本例中,X3=1X3=1弧度弧度=180/pi=180/pi度;当度;当X1X1为 TRUE TRUE时,,SINSIN执行余弦运算,将行余弦运算,将X3X3的余弦的余弦值 输出到出到X7X7中,所以中,所以X7=0.54X7=0.54正切函数正切函数TANTAN返回一个数的正切返回一个数的正切值,数据以弧度,数据以弧度计算指令如下算指令如下图:: 输入入变量可以是量可以是BYTEBYTE、、WORDWORD、、DWORDDWORD、、INTINT、、DINTDINT、、REALREAL、、SINTSINT、、USINTUSINT、、UINTUINT、、UDINTUDINT类型输出出变量只能是量只能是REALREAL类型程序例:程序例:分析:在本例中,分析:在本例中,X3=1X3=1弧度弧度=180/pi=180/pi度;当度;当X1X1为 TRUE TRUE时,,SINSIN执行正切运算,将行正切运算,将X3X3的正切的正切 值输出到出到X7X7中,所以中,所以X7=1.56X7=1.56。
反正弦函数反正弦函数ASINASIN返回一个数的反正弦返回一个数的反正弦值值,数据以弧度,数据以弧度计计算指令如下如下图图:: 输入入变量可以是量可以是BYTEBYTE、、WORDWORD、、DWORDDWORD、、INTINT、、DINTDINT、、REALREAL、、SINTSINT、、USINTUSINT、、UINTUINT、、UDINTUDINT类型输出出变量只能是量只能是REALREAL类型程序例:程序例:分析:在本例中,分析:在本例中,X3=1X3=1弧度弧度=180/pi=180/pi度;当度;当X1X1为 TRUE TRUE时,,ASINASIN执行反正弦运算,将行反正弦运算,将X3X3的反的反 正弦正弦值输出到出到X7X7中,所以中,所以X7=1.57X7=1.57反余弦函数反余弦函数ACOSACOS返回一个数的反余弦返回一个数的反余弦值值,数据以弧度,数据以弧度计计算指令如下如下图图:: 输入入变量可以是量可以是BYTEBYTE、、WORDWORD、、DWORDDWORD、、INTINT、、DINTDINT、、REALREAL、、SINTSINT、、USINTUSINT、、UINTUINT、、UDINTUDINT类型。
型输出出变量只能是量只能是REALREAL类型程序例:程序例:分析:在本例中,分析:在本例中,X3=1X3=1弧度弧度=180/pi=180/pi度;当度;当X1X1为 TRUE TRUE时,,ACOSACOS执行反余弦运算,将行反余弦运算,将X3X3的的 反余弦反余弦输出到出到X7X7中,所以中,所以X7=0X7=0反正切函数反正切函数ATANATAN返回一个数的反正切返回一个数的反正切值值数据以弧度数据以弧度计计算指令如下如下图图:: 输入入变量可以是量可以是BYTEBYTE、、WORDWORD、、DWORDDWORD、、INTINT、、DINTDINT、、REALREAL、、SINTSINT、、USINTUSINT、、UINTUINT、、UDINTUDINT类型输出出变量只能是量只能是REALREAL类型程序例:程序例:分析:在本例中,分析:在本例中,X3=1X3=1弧度弧度=180/pi=180/pi度;当度;当X1X1为 TRUE TRUE时,,ATANATAN执行反正切运算,将行反正切运算,将X3X3的反的反 正切正切值输出到出到X7X7中,所以中,所以X7=0.785X7=0.785。
取取绝对值绝对值函数函数ABSABS返回一个数的返回一个数的绝对值绝对值指令如下指令如下图图::输入入 输出出INT INT,REAL,WORD,DWORD,DINTINT INT,REAL,WORD,DWORD,DINTREAL REALREAL REALBYTE INT,REAL,BYTE,WORD,DWORD,DINTBYTE INT,REAL,BYTE,WORD,DWORD,DINTWORD INT,REAL,WORD,DWORD,DINTWORD INT,REAL,WORD,DWORD,DINTDWORD REAL,DWORD,DINTDWORD REAL,DWORD,DINTSINT REALSINT REALUSINT REALUSINT REALUINT INT,REAL,WORD,DWORD,DINT,UDINT,UINTUINT INT,REAL,WORD,DWORD,DINT,UDINT,UINTDINT REAL,DWORD,DINTDINT REAL,DWORD,DINTUDINT REAL,DWORD,DINT,UDINTUDINT REAL,DWORD,DINT,UDINT程序例:程序例:分析:在本例中,当分析:在本例中,当X1X1为TRUETRUE时,,ABSABS指令指令 执行,将行,将X3X3的的绝对值输出到出到X7X7中;如中;如 X3=-8 X3=-8,,则输出出X7=8X7=8。
指数函数指数函数EXPEXP返回指数函数指令如下返回指数函数指令如下图图:: 输入入变量可以是量可以是BYTEBYTE、、WORDWORD、、DWORDDWORD、、INTINT、、DINTDINT、、REALREAL、、SINTSINT、、USINTUSINT、、UINTUINT、、UDINTUDINT类型输出出变量只能是量只能是REALREAL类型程序例:程序例:分析:在本例中,当分析:在本例中,当X1X1为TRUETRUE时,,EXPEXP指令指令执 行,将行,将X3X3的指数的指数输出到出到X7X7中;如中;如X3=2X3=2,, 则输出出X7=7.39X7=7.39幂幂函数函数EXPTEXPT求一个求一个变变量关于另一个量关于另一个变变量的量的幂幂指令如下指令如下图图:: 两个操作数可以是两个操作数可以是BYTEBYTE、、WORDWORD、、DWORDDWORD、、INTINT、、DINTDINT、、REALREAL、、SINTSINT、、USINTUSINT、、UINTUINT、、UDINTUDINT类型。
型输出出变量只能是量只能是REALREAL类型程序例:分析:在本例中,当分析:在本例中,当X1X1为TRUETRUE时,,EXPTEXPT指令指令执 行,把行,把X3X3的的X5X5次次幂输出到出到X7X7中;如中;如X3=2X3=2,, X5=3 X5=3,,则X7=23=8X7=23=8取平方根函数取平方根函数SQRTSQRT返回一个数的平方根指令如下返回一个数的平方根指令如下图图:: 输入入变量可以是量可以是BYTEBYTE、、WORDWORD、、DWORDDWORD、、INTINT、、DINTDINT、、REALREAL、、SINTSINT、、USINTUSINT、、UINTUINT、、UDINTUDINT类型输出出变量只能是量只能是REALREAL类型程序例:程序例:分析:在本例中,当分析:在本例中,当X1X1为TRUETRUE时,,SQRTSQRT指令指令 执行,把行,把X3X3的平方根的平方根值输出到出到X7X7中;中; 如如X3=64,X3=64,则X7=8X7=8。
对对数函数数函数LOGLOG返回返回值是以是以1010为底的底的对数指令如下数指令如下图:: 输入入变量可以是量可以是BYTEBYTE、、WORDWORD、、DWORDDWORD、、INTINT、、DINTDINT、、REALREAL、、SINTSINT、、USINTUSINT、、UINTUINT、、UDINTUDINT类型输出出变量只能是量只能是REALREAL类型程序例:程序例:分析:在本例中,当分析:在本例中,当X1X1为TRUETRUE时,,LOGLOG指令指令执 行,把行,把X3X3的以的以1010为底的底的对数数结果果输出到出到 X7 X7中;如中;如X3=100,X3=100,则X7=2X7=2自然自然对对数函数数函数LNLN返回一个数的自然返回一个数的自然对数指令如下数指令如下图:: 输入入变量可以是量可以是BYTEBYTE、、WORDWORD、、DWORDDWORD、、INTINT、、DINTDINT、、REALREAL、、SINTSINT、、USINTUSINT、、UINTUINT、、UDINTUDINT类型。
型输出出变量只能是量只能是REALREAL类型程序例:程序例:分析:在本例中,当分析:在本例中,当X1X1为TRUETRUE时,,LNLN指令指令执 行,把行,把X3X3的自然的自然对数数结果果输出到出到X7X7 中;如中;如X3=88X3=88,,则X7=4.48X7=4.48取地址指令取地址指令ADRADR取地址指令指令如下取地址指令指令如下图:: ADR ADR返回返回变量自身的地址,数据量自身的地址,数据类型型为DWORDDWORD这个地址可以作个地址可以作为指指针传递给操作操作函数,也可以函数,也可以赋给工程内的某个指工程内的某个指针程序例:程序例:分析:在本例中,当分析:在本例中,当X1X1为TRUETRUE时,,ADRADR指令指令执行,将行,将 X3 X3的地址的地址赋予指予指针变量量zhizhen1zhizhen1上,即上,即 zhizhen1 zhizhen1指向了指向了X1X1;如;如X3=88X3=88,,则指指针变量量 zhizhen1 zhizhen1的的值16#1187CBB816#1187CBB8即是即是X1X1的地址,同的地址,同 时指指针的指向的指向变量的量的值zhizhen1^zhizhen1^是是8888。
字字节长节长度指令度指令SIZEOFSIZEOF这个操作符用来确定个操作符用来确定给定定变量量x x需要占用多少个字需要占用多少个字节指令图下下图::SIZEOFSIZEOF操作符通常返回一个无符号数返回操作符通常返回一个无符号数返回值的的类型与型与变量量x x的大小相匹配的大小相匹配SIZEOF(x)SIZEOF(x)的返回的返回值 返回返回值的的类型型0 <= x0 <= x的的值 < 256 USINT < 256 USINT256 <= x256 <= x的的值 < 65536 UINT < 65536 UINT65536 <= x65536 <= x的的值<4294967296 UDINT<4294967296 UDINT4294967296 <= x4294967296 <= x的的值 ULINT ULINT程序例:程序例:分析:在本例中,当分析:在本例中,当X1X1为TRUETRUE时,,SIZEOFSIZEOF指令指令 执行,来确定行,来确定给定数定数组变量量arr1arr1需要占需要占 用多少个字用多少个字节,并将,并将结果果输出到出到var3var3 ((USINTUSINT型);由于型);由于arr1arr1是是0 0到到5 5的的INTINT型数型数 组变量,因此量,因此var3=12var3=12。
二二选一指令一指令SELSEL从两个操作数中从两个操作数中选择一个指令如下一个指令如下图::由由G G 决定决定IN0 IN0 还是是IN1 IN1 为输出OUT := SEL(G, IN0, IN1) OUT := SEL(G, IN0, IN1) 的含的含义::OUT := IN0; OUT := IN0; 若若G=FALSEG=FALSEOUT := IN1; OUT := IN1; 若若G=TRUE.G=TRUE.允允许的数据的数据类型型: :IN0, IN1, OUT: IN0, IN1, OUT: 任意任意类型型G: BOOL.G: BOOL.程序例:程序例:分析:在本例中,当分析:在本例中,当X1X1为FALSEFALSE时,,SELSEL指令指令选 择X3X3输出到出到X5X5中,所以中,所以X5=X3=8X5=X3=8;当;当X1X1为 TRUE TRUE时,,SELSEL指令指令选择X4X4输出到出到X5X5中,所中,所 以以X5=X3=19X5=X3=19多多选选一指令一指令MUXMUX多多项选择项选择操作符。
指令如下操作符指令如下图图::IN0IN0、、...,INn...,INn以及以及OUTOUT可以是可以是任意任意类型的型的变量X1X1必必须为BYTEBYTE、、WORDWORD、、DWORDDWORD、、SINTSINT、、USINTUSINT、、INTINT、、UINTUINT、、DINTDINT或或UDINTUDINT类型MUXMUX从从这一一组值中中选择第第X1X1个个值程序例:程序例:分析:在本例中,分析:在本例中,MUXMUX指令根指令根 据据X1X1的的值,来决定,来决定X9X9 的的输出出值当X1=8X1=8时,, MUX MUX取功能取功能块中的第中的第8 8 个个值,即,即X9=X8=8X9=X8=8取极限指令取极限指令LIMITLIMIT取极限指令如下取极限指令如下图图::程序例:程序例:当X1X3时分析:分析:MaxMax是是结果的上限果的上限值,,MinMin是是结果的下限果的下限值 如果如果ININ值大于上限大于上限值MaxMax,,LIMITLIMIT将返回将返回MaxMax,, 而如果而如果ININ小于小于MinMin,那么,那么结果果为MinMin。
在本在本 例中,当例中,当X1X3>X2X1>X3>X2时,, 输出出X9=X3X9=X3取最大取最大值指令指令MAXMAX取最大取最大值值函数返回函数返回输输入的入的值值中最大的那一个指中最大的那一个指令如下令如下图图::IN0, IN1,IN2IN0, IN1,IN2和和OUTOUT可以可以为任意任意类型的型的变量程序例:程序例:分析:程序运行分析:程序运行时,,MAXMAX指令取指令取输入的入的X1,X2,X3X1,X2,X3 中最大的中最大的值,并将,并将结果果输出到出到X9X9中在 本例中本例中X2X2最大,因此最大,因此X9=X2=9X9=X2=9取最小取最小值值指令指令MINMIN取最小取最小值值函数返回两个函数返回两个值值中中较较小的那一个小的那一个指令如下指令如下图图::IN0, IN1,IN2IN0, IN1,IN2和和OUTOUT可以可以为任意任意类型的型的变量。
量程序例:程序例:分析:程序运行分析:程序运行时,,MINMIN指令取指令取输入的入的X1,X2,X3X1,X2,X3 中最小的中最小的值,并将,并将结果果输出到出到X9X9中在本 例中例中X3X3最小,因此最小,因此X9=X3=6X9=X3=6赋值指令指令MOVEMOVE将一个将一个变变量的量的值赋给值赋给另一个适当另一个适当类类型的型的变变量指令如下令如下图图:: 在在图形形编辑器器FBDFBD、、LDLD、、CFCCFC中,中,MOVEMOVE是一是一个方框在个方框在这个方框里(未个方框里(未锁定的)定的)EN/ENOEN/ENO功功能也可以用于能也可以用于变量量赋值程序例:程序例:分析:在本例中,当分析:在本例中,当X1X1为TRUETRUE时,,MOVEMOVE指令指令执 行,将行,将X3X3的的值赋给到到X4X4中;即中;即X4=X3=8X4=X3=8布布尔尔类类型型转换转换指令指令从布从布尔类型型转换为其它任意其它任意类型 BOOL_TO_< BOOL_TO_<数据数据类型型> >转换为数字数字类型型时,,若操作数若操作数为TRUETRUE,,结果果为1 1;若操作数;若操作数为FALSEFALSE,,结果果为0 0。
BOOL_TO_< BOOL_TO_<数据数据类型型> >转换为字符串字符串类型型时,,若操作数若操作数为TRUETRUE,,结果果为“TRUE”“TRUE”,若操作数,若操作数为FALSEFALSE,,则结果果为“FALSE”“FALSE”程序例程序例1 1:: 程序例程序例2 2::分析:在本例中,当分析:在本例中,当X1X1为TRUETRUE时,,BOOL_TO_BYTEBOOL_TO_BYTE指指令令执行,行,输出出结果果outbyteoutbyte;由于;由于X2=TRUEX2=TRUE,,所以所以outbyte=1 outbyte=1 分析:在本例中,当分析:在本例中,当X1X1为TRUETRUE时,,BOOL_TO_STRINGBOOL_TO_STRING指令指令执行,行,输出出结果果outstringoutstring;由于;由于X2=TRUEX2=TRUE,所以,所以outstring=TRUEoutstring=TRUE字字节类节类型型转换转换指令指令 BYTE_TO_< BYTE_TO_<数据数据类型型> >转换为数字数字类型型时,,若操作数若操作数为TRUETRUE,,结果果为1 1;若操作数;若操作数为FALSEFALSE,,结果果为0 0。
BYTE_TO_< BYTE_TO_<数据数据类型型> >转换为布布尔类型型时,,若操作数若操作数为TRUETRUE,,结果果为TRUETRUE;若操作数;若操作数为FALSEFALSE,,结果果为FALSEFALSE BYTE_TO_< BYTE_TO_<数据数据类型型> >转换为字符串字符串类型型时,,若操作数若操作数为TRUETRUE,,结果果为“TRUE”“TRUE”,若操作数,若操作数为FALSEFALSE,,则结果果为“FALSE”“FALSE”程序例:程序例:分析:在本例中,当分析:在本例中,当X1X1为TRUETRUE时,,BYTE_TO_WORDBYTE_TO_WORD 指令指令执行,行,输出出结果果WORD1WORD1;由于;由于 OUTBYTE=1 OUTBYTE=1,所以,所以WORD1=1WORD1=1日期日期转换转换指令指令从日期和日期从日期和日期时间类时间类型型变变量量转换为转换为其他其他类类型型变变量量指令如下指令如下图图:: 日期以秒日期以秒为单位,用位,用DWORDDWORD数据数据类型从型从19701970年年1 1月月1 1日起存日起存储在内部。
然后再在内部然后再进行行转化从较大大的数据的数据类型型转换为较小的数据小的数据类型型时,有可能,有可能丢失部分信息失部分信息转换为字符串字符串类型型变量量时,,转换结果果为日期常量日期常量程序例程序例1 1::程序例程序例2 2::分析:在本例中,当分析:在本例中,当X1X1为TRUETRUE时DATE_TO_WORDDATE_TO_WORD指令指令执行,行,输出出结果果OUTWORDOUTWORD;由于;由于输入日入日期是期是1970-10-101970-10-10,所以,所以outword=50994outword=50994分析:在本例中,当分析:在本例中,当X1X1为TRUETRUE时,,DATE_TO_STRINGDATE_TO_STRING指指令令执行,行,输出出结OUTSTRINGOUTSTRING;;由于由于输入日期是入日期是1970-10-101970-10-10,所以,所以OUTSTRING=D#1970-OUTSTRING=D#1970-10-1010-10程序例程序例3 3::分析:在本例中,当分析:在本例中,当X1X1为TRUETRUE时,,DATE_TO_DWORDDATE_TO_DWORD 指令指令执行,行,输出出结果果OUTDWORDOUTDWORD;由于;由于输入入 日期是日期是1970-10-101970-10-10,所以,所以 OUTDWORD=24364800 OUTDWORD=24364800。
整数整数转换转换指令指令INT_TO_INT_TO_数据数据类型,是将整型数据型,是将整型数据转成其他数据成其他数据类型指令如下型指令如下图::程序例程序例1 1::程序例程序例2 2::分析:在本例中,当分析:在本例中,当X1X1为TRUETRUE时,,INT_TO_BCDINT_TO_BCD指令指令执行,行,输出出结果果OUTWORDOUTWORD;由于;由于输入入X3=88X3=88,所以,所以OUTWORD=136OUTWORD=136分析:在本例中,当分析:在本例中,当X1X1为TRUETRUE时,,INT_TO_STRINGINT_TO_STRING指指令令执行,行,输出出结果果OUTSTRINGOUTSTRING;由于;由于输入入X3=88X3=88,所以,所以OUTSTRING=’88’OUTSTRING=’88’实实数数/ /长实数数类型型转换从从实实数数/ /长实数数变量量类型型转换为其它其它类型指令如下如下图:: 数数值将被四舍五入将被四舍五入为近似的整数近似的整数值,然后,然后转换成新的成新的变量量类型请注意注意转换为字符串字符串类型型时,,((长))实数的位数不能超数的位数不能超过1616位。
如果位数太多,位如果位数太多,那么第十六位将被四舍五入如果定那么第十六位将被四舍五入如果定义的字符串的字符串长度比度比较短,那么数字的右短,那么数字的右侧部分将被截去部分将被截去程序例:程序例:分析分析: : 在本例中,当在本例中,当X1X1为TRUETRUE时,,REAL_TO_DINTREAL_TO_DINT 指令指令执行,行,输出出结果果OUTDINTOUTDINT;由于;由于输入入 X3=-88.1 X3=-88.1,数,数值将被四舍五入,所以将被四舍五入,所以 OUTDWORD=-88 OUTDWORD=-88字符串字符串类类型型转换转换命令命令STRING_TO_ >把字符串把字符串类型型变量量转换为其它其它类型指令如下型指令如下图:: 先把先把STRINGSTRING转换为INTINT类型型变量,然后把量,然后把INTINT转换为BYTEBYTE类型由于高字型由于高字节将被截去,因此将被截去,因此结果将介于果将介于0-2550-255之之间STRINGSTRING类型型变量的操作数中量的操作数中必必须包含一个在目包含一个在目标类型型变量里有效的量里有效的值,否,否则转换的的结果果为0 0。
程序例:程序例:分析:当分析:当X1X1为TRUETRUE时,,STRING_TO_DINTSTRING_TO_DINT指令指令执 行,行,输出出结果果OUTDINTOUTDINT;由于;由于输 OUTSTRING=’abcde’ OUTSTRING=’abcde’,不在,不在DINTDINT的数的数 据据类型中,所以型中,所以OUTDINT=0OUTDINT=0。