step7编程时整数int、时间s5time及time之间的相互转换word文档

合集下载

时间转换S5T#

时间转换S5T#

数据类型S5TIME格式的转换2009-12-1 21:36:40当使用S5TIME数据类型输入持续时间时,输入条目以二进制编码的十进制格式进行存储。

下图说明了时间值为127,时间基准为1s 的时间地址的内容。

当使用S5TIME时,输入时间值的范围为0 -- 999,并说明时间基准(参见下表)。

时间基准指的是定时器以多少间隔为一个单位来递减时间值,一直到达0的时间间隔。

S5TIME的时间基准时间基准时间基准的二进制代码10ms 00100ms 011s 1010s 11可以使用下列语法格式之一预装载时间值:•L1) W#16#wxyzo此处w = 时间基准(即时间间隔或分辨率)o此处xyz = 以二进制编码的十进制格式表示的时间值•L1) S5T#aH_bbM_ccS_dddMSo此处 a = 小时,bb = 分钟,cc = 秒,dd = 毫秒o时间基准自动选择,该值四舍五入至具有此时间基准的下一个较小的数字。

可以输入的最大时间值是9,990秒或2H_46M_30S。

将整数和实数转换成S5TIME 格式的数据:这里所要求的时间值单位是毫秒。

转换程序分为两步:1. 首先将所要转换的数据转换为双整数并存储于数据格式为“TIME”的临时变量中。

如将整数通过命令“ITD”转换为双整,通过“RND”将实数转换为双整。

2. 调用STEP 7 标准库中IEC 功能库中的FC40(TIM_S5TI)功能块将上步存储的“TIME”格式的数据转换为“ S5TIME”数据格式的数值。

程序所示为整数到“S5TIME” 数据的转换例程。

L #value_iITDT #tmp_timeCALL FC40IN := #tmp_timeRET_VAL := #time_S5阅读全文(187) | 回复(0)。

STEP7中有关时间、日期的数据类型

STEP7中有关时间、日期的数据类型

STEP7中有关时间、日期的数据类型TIME, DA TE and TIMER in STEP 7SLC A&D CSJune 20041.西门子自动化与驱动产品的在线技术支持 (3)2.如何获得西门子自动化与驱动产品的资料 (4)3.需设备选型及订货 (4)4.西门子技术支持热线 (4)5.西门子自动化产品的其它网站 (5)6.缩写词含义 (5)7.如何使用STEP 7软件的在线帮助 (5)7.1.查找某个关键字或功能 (5)7.2.想了解某个FB/FC的功能及管脚的定义 (6)8.STEP 7中有关时间、日期的数据类型 (8)9.需要相关数据类型的详细描述 (8)10.S5TIME (Time Duration) 的格式及访问 (9)10.1.S5TIME的格式 (9)10.2.通过上位机访问PLC中S5TIME类型的数据 (10)10.3.S5TIME和TIME的转换 (11)11.DATE_AND_TIME的格式 (11)12.STEP 7相关功能块调用例程 (13)13.STEP 7中定时器的使用 (14)13.1.S7 TIMER的使用 (14)13.2.IEC TIMER的使用 (14)14.如何访问CPU的Clock Memory (14)1. 西门子自动化与驱动产品的在线技术支持首先,建议您访问Siemens A&D的产品与技术支持网站http://www4.ad.siemens.de/在主页的Product Support中选择您关心的产品或信息,或利用Search引擎直接输入关键字搜索。

您还可以访问西门子(中国)自动化与驱动集团的主页,如下图所示。

该网站同样可以提供大量的产品和系统的信息。

2. 如何获得西门子自动化与驱动产品的资料首先,建议您通过Siemens A&D的网站搜索并下载。

您还可以致电010-********转3785 /3726索取资料。

S7_300_Int to S5T_TIME

S7_300_Int to  S5T_TIME

s5t#0ms格式能否转换成int格式∙悬赏分:10∙- 解决时间:2008-11-4 14:40编了一个FB块,其中几个管脚需要从WINCC画面上设定时间,可是管脚用的数据格式是S5T#0MS的时间格式,wincc上输入框确是INT或者REAL格式的,怎么办?问题补充:一楼的回答确实可行,有没有小时,分钟,秒等通用的转换方式?问题ID: 27183提问者:五wuwuw - 新生第1级最佳答案在WINCC变量里是没有S5TIME这种数据格式的,所以在PLC里需要把读到的输入值转换成S5TIME,然后附到FB相应的管角上.还有,楼主,WINCC上输入框用INT格式就可以,定义好输入框的单位,然后程序里更改成相应的时基就OK了.例如:输入框地址为MW0,输入单位为分钟;L MW0L 6*I//转换成多少个10秒ITB//转换成BCD码L w#16#3000//定义成10秒时基OWT MW2 // MW2为S5TIME格式然后MW2附到FB的管角上.注意:单个定时器定时不能超过2小时46分30秒.回答者:中国牛 - 中级技术员第6级 2008-10-24 10:40 提问者对于答案的评价:hao30天内的投票结果:好100% (1)不好 0% (0)其他回答十进制怎样转化为S5TIME?对你数据的12,13位填写时基,如5S——数字5用16位二进制表示就是0000 0000 0000 0101而12,13位为写入10即为秒(00为10毫秒,01为100毫秒,10为1秒,11为10秒)L MW10 //假设地址中已经存放了数字5I_BCDMW20OW W#16#2000T XXXX //你需要存放的地址此时该地址中存放的数据用2进制表示为0001 0000 0000 0101 即为5S使用时请注意S5Time数据的限制。

回答者:7074 - 初级技术员第5级 2008-10-24 10:58上位机直接输下来的整数数据对应ms,所以只要在上位机进行一次线性变换就可以了!将上位机输入的数据扩大1000倍,比如上位机输入1,那么对应下位机的就是1000,传给下位机。

时间类型转换

时间类型转换

客户1:“西门子热线工程师,你好,我用第三方组态软件(如Intouch、iFix、组态王等),想在画面上设置定时器T的时间,以便人工及时修改。

但组态软件中没有S5Time数据类型,怎么办?”客户2:“我想在PLC程序中,用整数INT给定时器T的预设时间赋值,怎么做?”客户3:“我用的第三方组态软件(如Intouch、iFix、组态王等),想在画面上设置PID积分时间,但FB41的积分时间TI是Time 类型,组态软件中没有Time类型,怎么办?”客户4:“在PLC程序中,数据类型S5Time如何转换到整数INT 类型?”以上四个客户,遇到的问题实质上是一样的,就是整数INT、时间S5Time及Time之间的相互转换。

如何转换,首先要弄清整数INT、时间S5Time及Time的数据结构。

整数INT是16位的数据:时间S5Time是16位数据,BCD码格式:时间Time是32位数据,类似于双整数DINT:由此可见,三者之间的转换即是整数INT、双整数DINT及BCD 码之间的转换。

可以根据数据结构特点,自己编程实现相互转换,这样比较复杂。

利用库函数FC33/FC40是最简单方便的。

方法如下L# 是双整的意思:因为是双整数运算指令,常数必须是L#表示的双整数。

没看懂L#1000,为什么要乘?时基是ms吧。

所以ms转换为s因为time是毫秒级别的所以要乘,呵呵DINT -> MOVE指令-> Time -> 库函数FC40 -> S5Time。

-> MOVE指令-> Time。

如图示:3. 时间S5Time到整数INT的转换方法:S5Time -> 库函数FC33 -> Time -> MOVE指令-> DINT -> 取其高字部分,用MOVE指令-> INT。

Time -> MOVE指令-> DINT -INT -> 取其高字部分,用MOVE指令-> INT。

整数INT_时间S5Time及Time相互转换

整数INT_时间S5Time及Time相互转换

整数INT_时间S5Time及Time相互转换的困惑作为热线工程师,每天面临客户大量的各种技术问题,从产品功能、组态设置、参数含义、编程细节到故障诊断,林林总总。

不过,总有一些共性的问题,常常在热线中出现。

下面就是一个出镜频率很高的例子。

客户1:“西门子热线工程师,你好,我用第三方组态软件(如Intouch、iFix、组态王等),想在画面上设置定时器T的时间,以便人工及时修改。

但组态软件中没有S5Time数据类型,怎么办?”客户2:“我想在PLC程序中,用整数INT给定时器T的预设时间赋值,怎么做?”客户3:“我用的第三方组态软件(如Intouch、iFix、组态王等),想在画面上设置PID积分时间,但FB41的积分时间TI是Time类型,组态软件中没有Time类型,怎么办?”客户4:“在PLC程序中,数据类型S5Time如何转换到整数INT类型?”以上四个客户,遇到的问题实质上是一样的,就是整数INT、时间S5Time及Time之间的相互转换。

如何转换,首先要弄清整数INT、时间S5Time及Time的数据结构。

整数INT是16位的数据:时间S5Time是16位数据,BCD码格式:时间Time是32位数据,类似于双整数DINT:由此可见,三者之间的转换即是整数INT、双整数DINT及BCD码之间的转换。

可以根据数据结构特点,自己编程实现相互转换,这样比较复杂。

利用库函数FC33/FC40是最简单方便的。

方法如下:1. 整数INT到时间S5Time的转换方法:INT -> I_DI指令 -> DINT -> MOVE指令 -> Time -> 库函数FC40 -> S5Time。

2. 整数INT到时间Time的转换方法:INT -> I_DI指令 -> DINT -> MOVE指令 -> Time。

如图示:3. 时间S5Time到整数INT的转换方法:S5Time -> 库函数FC33 -> Time -> MOVE指令 -> DINT -> 取其高字部分,用MOVE指令-> INT。

s7数字转时间指令

s7数字转时间指令

s7数字转时间指令S7数字转时间指令S7数字转时间指令是指西门子S7系列可编程逻辑控制器(PLC)中的一种特殊指令,用于将数字值转换为对应的时间值。

通过该指令,可以方便地对时间进行计算和操作,实现精确的时间控制。

一、S7数字转时间指令的基本语法和参数解释1. 语法:TON(TimerName, IN, PT)TimerName:定时器名称,用于标识不同的定时器IN:输入的时间值,可以是一个字或双字类型的变量PT:预设时间,用于设置定时器的时间上限2. 参数解释:定时器名称:用于标识不同的定时器,可以自定义,命名规则要符合PLC的命名规范输入的时间值:可以是一个字或双字类型的变量,表示从外部输入的时间值,单位可以是毫秒、秒、分钟等预设时间:用于设置定时器的时间上限,单位与输入的时间值一致二、S7数字转时间指令的使用示例例如,我们需要一个定时器,当输入的时间值达到预设时间时,输出一个开关信号。

以下是一个示例程序:```VARInputTime: INT; // 输入的时间值PresetTime: INT; // 预设时间Timer1: TON; // 定时器1Output: BOOL; // 输出信号END_VAR// 设置输入的时间值和预设时间InputTime := 5000; // 5000毫秒PresetTime := 10000; // 10000毫秒// 调用S7数字转时间指令TON(Timer1, InputTime, PresetTime);// 检测定时器的状态IF Timer1.Q THENOutput := TRUE; // 输出开关信号ELSEOutput := FALSE;END_IF```在上述示例中,我们首先定义了输入的时间值和预设时间的变量,以及一个定时器和一个输出信号的变量。

然后,我们将输入的时间值和预设时间赋值给对应的变量。

接下来,我们调用了S7数字转时间指令,将定时器和输入的时间值、预设时间作为参数传入。

STEP7功能块说明书

STEP7功能块说明书

parator== IN1等于IN2<> IN1不等于IN2> IN1大于IN2< IN1小于IN2>= IN1大于或等于IN2<= IN1小于或等于IN22.整数就是没有小数位都是零的数,即能被1整除的数(如-1,-2,0,1,……)CMP ?I(INT)整数比较CMP ?D (DINT)比较双精度整数CMP ?R (REAL)比较实数3.转换指令概述BCD_I BCD码转换为整数I_BCD 整型转换为BCD码BCD_DI BCD码转换为双精度整数I_DINT 整型转换为长整型DI_BCD 长整型转换为BCD码DI_REAL 长整型转换为浮点型4 计数器指令S_CUD 双向计数器S_CD 降值计数器S_CU 升值计数器---( SC ) 设置计数器线圈•---( CU ) 升值计数器线圈•---( CD ) 降值计数器线圈5.S_CUD 双向计数器`6. S_CU 升值计数器7. S_CD 降值计数器8. ---( SC ) 设置计数器值9. ---( CU ) 升值计数器线圈10. ---( CD ) 降值计数器线圈11. ---(OPN)打开数据块:DB或DI如果想将数据块中的数据读出(如DB和DI),需要通过(OPN)打开数据块后才可读出。

12. ---(JMP)--- 无条件跳转13. ---(JMPN) 若“否”则跳转14. LABEL标号【整型数学运算指令】整型数学运算指令概述说明使用整数运算,您可以对两个整数(16和32位)执行以下运算:• ADD_I 加整数• SUB_I 减整型• MUL_I 乘整型• DIV_I 除整型• ADD_DI 加双精度整数• SUB_DI 减长整型• MUL_DI 乘长整型• DIV_DI 除长整型• MOD_DI 返回分数长整型15. ADD_I 整数加16. SUB_I 整数减17. MUL_I 整数乘18. DIV_I 整数除19. MOD_DI 返回长整数余数20. 浮点运算指令概述IEEE32位浮点数属于REAL数据类型。

step7的使用方法

step7的使用方法

异步错误组织块
OB80~OB87:异步错误中断。异步错误 是PLC的功能性错误。它们与程序执行时 不同步地出现,不能跟踪到程序中的某个 具体位置。 在运行模式下检测到一个故障 后,如果已经编写了相关的组织块,则调 用并执行该组织块中的程序。如果,发生 故障时,相应的故障组织块不存在,则 CPU将进入STOP模式。
中间输出单元 信号流反向指令 复位线圈 置位线圈 复位置位触发器和置位复位触发器
位逻辑指令
程序实例
对应时序图如下所示:
位逻辑指令
时序图
位逻辑指令 正跳沿(上升沿)检测指令
位逻辑指令 负跳沿(下降沿)检测指令
位逻辑指令
地址正跳沿检测 地址负跳沿检测
SAVE指令
位逻辑指令 地址上升沿检测指令示例
1. FC和FB的变量声明表的差别
2.FC和FB参数赋值不同
FC没有自己的背景数据块 FB有自己的背景数据块 FC的参数必须指定实参 FB的参数可根据需要决定是否指定实参
3.1.3系统功能SFC和系统功能块SFB
SFC和SFB是预先编好的可供用户调用的 程序块,它们已经固化在S7PLC的CPU中, 其功能和参数已经确定。一台PLC具有哪 些SFC和SFB功能,是由CPU型号决定的。 具体信息可查阅CPU的相关技术手册。通 常SFC和SFB提供一些系统级的功能调用, 如通讯功能、高速处理功能等。注意:在 调用SFB时,需要用户指定其背景数据块 (CPU中不包含其背景数据块),并确定 将背景数据块下载到PLC中。
lad参数数据类型存储区说明地址timer地址表示要起动的计时器号时间值s5time定时时间值s5time格式4保持型开通延时定时器ss上图中的程序对应的时序图如图所示4保持型开通延时定时器sslad参数数据类型说明存储区地址timer要启动的计时器号如t0bool启动输入端tvs5time定时时间s5time格bool复位输入端bool定时器的状态biword当前时间整数格式bcdword当前时间bcd码格关断延时定时器sf相当于继电器控制系统中的断电延时时间继电器

step7编程时整数INT、时间S5Time及Time之间的相互转换Word文档

step7编程时整数INT、时间S5Time及Time之间的相互转换Word文档

:数INT_时间S5Time及Time相互转换
就是整数INT、时间S5Time及Time之间的相互转换。

如何转换,首先要弄清整数INT、时间S5Time及Time的数据结构。

整数INT是16位的数据:
时间S5Time是16位数据,BCD码格式:
时间Time是32位数据,类似于双整数DINT:
由此可见,三者之间的转换即是整数INT、双整数DINT及BCD码之间的转换。

可以根据数据结构特点,自己编程实现相互转换,这样比较复杂。

利用库函数FC33/FC40是最简单方便的。

方法如下:
1. 整数INT到时间S5Time的转换方法:
INT -> I_DI指令 -> DINT -> MOVE指令 -> Time -> 库函数FC40 -> S5Time。

2. 整数INT到时间Time的转换方法:INT -> I_DI指令 -> DINT -> MOVE指令 -> Time。

如图示:
3. 时间S5Time到整数INT的转换方法:
S5Time -> 库函数FC33 -> Time -> MOVE指令 -> DINT -> 取其高字部分,用MOVE指令 -> INT。

注意数据类型。

STEP7中有关时间、日期的数据类型[整理版]

STEP7中有关时间、日期的数据类型[整理版]

TIME, DA TE and TIMER in STEP 7SLC A&D CSJune 20041.西门子自动化与驱动产品的在线技术支持 (3)2.如何获得西门子自动化与驱动产品的资料 (4)3.需设备选型及订货 (4)4.西门子技术支持热线 (4)5.西门子自动化产品的其它网站 (5)6.缩写词含义 (5)7.如何使用STEP 7软件的在线帮助 (5)7.1.查找某个关键字或功能 (5)7.2.想了解某个FB/FC的功能及管脚的定义 (6)8.STEP 7中有关时间、日期的数据类型 (8)9.需要相关数据类型的详细描述 (8)10.S5TIME (Time Duration) 的格式及访问 (9)10.1.S5TIME的格式 (9)10.2.通过上位机访问PLC中S5TIME类型的数据 (10)10.3.S5TIME和TIME的转换 (11)11.DATE_AND_TIME的格式 (11)12.STEP 7相关功能块调用例程 (13)13.STEP 7中定时器的使用 (14)13.1.S7 TIMER的使用 (14)13.2.IEC TIMER的使用 (14)14.如何访问CPU的Clock Memory (14)1. 西门子自动化与驱动产品的在线技术支持首先,建议您访问Siemens A&D的产品与技术支持网站http://www4.ad.siemens.de/在主页的Product Support中选择您关心的产品或信息,或利用Search引擎直接输入关键字搜索。

您还可以访问西门子(中国)自动化与驱动集团的主页,如下图所示。

该网站同样可以提供大量的产品和系统的信息。

2. 如何获得西门子自动化与驱动产品的资料首先,建议您通过Siemens A&D的网站搜索并下载。

您还可以致电************转3785 /3726索取资料。

另外,还有大量的手册可以通过分销商订购,和其它产品的订货方式一样。

STEP7_功能块说明

STEP7_功能块说明

parator== IN1等于IN2<> IN1不等于IN2> IN1大于IN2< IN1小于IN2>= IN1大于或等于IN2<= IN1小于或等于IN22.整数就是没有小数位都是零的数,即能被1整除的数(如-1,-2,0,1,……)CMP ?I(INT)整数比较CMP ?D (DINT)比较双精度整数CMP ?R (REAL)比较实数3.转换指令概述BCD_I BCD码转换为整数I_BCD 整型转换为BCD码BCD_DI BCD码转换为双精度整数I_DINT 整型转换为长整型DI_BCD 长整型转换为BCD码DI_REAL 长整型转换为浮点型4 计数器指令S_CUD 双向计数器S_CD 降值计数器S_CU 升值计数器---( SC ) 设置计数器线圈•---( CU ) 升值计数器线圈•---( CD ) 降值计数器线圈5.S_CUD 双向计数器`6. S_CU 升值计数器7. S_CD 降值计数器8. ---( SC ) 设置计数器值9. ---( CU ) 升值计数器线圈10. ---( CD ) 降值计数器线圈11. ---(OPN)打开数据块:DB或DI如果想将数据块中的数据读出(如DB和DI),需要通过(OPN)打开数据块后才可读出。

12. ---(JMP)--- 无条件跳转13. ---(JMPN) 若“否”则跳转14. LABEL标号【整型数学运算指令】整型数学运算指令概述说明使用整数运算,您可以对两个整数(16和32位)执行以下运算:•ADD_I 加整数•SUB_I 减整型•MUL_I 乘整型•DIV_I 除整型•ADD_DI 加双精度整数•SUB_DI 减长整型•MUL_DI 乘长整型•DIV_DI 除长整型•MOD_DI 返回分数长整型15. ADD_I 整数加16. SUB_I 整数减17. MUL_I 整数乘18. DIV_I 整数除19. MOD_DI 返回长整数余数20. 浮点运算指令概述IEEE32位浮点数属于REAL数据类型。

西门子STEP7时间相关功能整理

西门子STEP7时间相关功能整理

西门子时间处理功能块笔记1.时间相关数据类型TIME:IEC timeS5TIME:SIMATIC timeDATE:IEC dateTIME_OF_DAY:timeDATE_AND_TIME:DT1.1.S5TIME的格式S5TIME是用BCD码保存的,在数据存储区占用两个连续的字节。

Bit13和Bit12为存储的时基。

,Bit11~Bit0每四位为一个时间数值得BCD码当使用S5TIME 时,定义数值的范围为0~999,而且要指明使用的时基。

时基指定了时间单位。

可以输入的最大值为9,990秒,或2H_46M_30S。

S5TIME时基及相应的时间范围如下:时基BCD码时间范围10ms0010ms-9s990ms100ms01100ms-1min39s990ms1s101s-16min39s10s1110s-2hr46min30s∙梯形图中定于格式为S5T#0H_00M_00S_000MSo H=小时单位,M=分钟单位,S=秒单位,MS=毫秒单位2.DATE_AND_TIME的格式以及相关处理功能块当使用数据类型DATE_AND_TIME(DT)时,将占用数据存储区的8个连续字节,以BCD 码格式保存。

该数据类型范围:DT#1990-1-1-0:0:0.0to DT#2089-12-31-23:59:59.999∙DATE_AND_TIME#2020-01-02-9:01:1.00∙DT#2020-01-02-9:01:1.002020年01月02日上午9点1分3秒50.23毫秒,在date and time的八个字节中分别存储的内容:字节内容例子允许的范围BCD码0年B#16#201990~19992000~208990h~99h 00h~89h1月B#16#011~1201h~12h2日B#16#021~311h~31h3时B#16#0900~2300h~23h4分B#16#0100~5900h~59h5秒B#16#0300~5900h~59h6毫秒的后二位B#16#230~999000h~999h7毫秒的高位B#16#507星期B#16#5Sunday-Saturday1h~7h3.STEP7相关功能块块位于Libraries\Standard Library\IEC Function Blocks路径下。

STEP7-功能块全中文说明

STEP7-功能块全中文说明

parator== IN1等于IN2<> IN1不等于IN2> IN1大于IN2< IN1小于IN2>= IN1大于或等于IN2<= IN1小于或等于IN22.整数就是没有小数位都是零的数,即能被1整除的数(如-1,-2,0,1,……)CMP ?I(INT)整数比较CMP ?D (DINT)比较双精度整数CMP ?R (REAL)比较实数3.转换指令概述BCD_I BCD码转换为整数I_BCD 整型转换为BCD码BCD_DI BCD码转换为双精度整数I_DINT 整型转换为长整型DI_BCD 长整型转换为BCD码DI_REAL 长整型转换为浮点型4 计数器指令S_CUD 双向计数器S_CD 降值计数器S_CU 升值计数器---( SC ) 设置计数器线圈•---( CU ) 升值计数器线圈•---( CD ) 降值计数器线圈5.S_CUD 双向计数器`6. S_CU 升值计数器7. S_CD 降值计数器8. ---( SC ) 设置计数器值9. ---( CU ) 升值计数器线圈10. ---( CD ) 降值计数器线圈11. ---(OPN)打开数据块:DB或DI如果想将数据块中的数据读出(如DB和DI),需要通过(OPN)打开数据块后才可读出。

12. ---(JMP)--- 无条件跳转13. ---(JMPN) 若“否”则跳转14. LABEL标号【整型数学运算指令】整型数学运算指令概述说明使用整数运算,您可以对两个整数(16和32位)执行以下运算:•ADD_I 加整数•SUB_I 减整型•MUL_I 乘整型•DIV_I 除整型•ADD_DI 加双精度整数•SUB_DI 减长整型•MUL_DI 乘长整型•DIV_DI 除长整型•MOD_DI 返回分数长整型15. ADD_I 整数加16. SUB_I 整数减17. MUL_I 整数乘18. DIV_I 整数除19. MOD_DI 返回长整数余数20. 浮点运算指令概述IEEE32位浮点数属于REAL数据类型。

西门子PLC中整数转换S5TIME

西门子PLC中整数转换S5TIME

整形转S5TIME格式S5TIME时间个与其他数据格式之间的转换,首先要清楚S5TIME数据结构(如下图):长度:S5TIME占有2个字节长度的存储空间(16位)。

最大值:S5T#2h46m20s最小值:S5T10MS13、14位为时间基数整数范围:10ms~9990000ms999S在存储器中格式如下图:999s-->999000ms->S5TIME核心步骤就是把999000ms按S5TIME规则放进存储器中首先看最终的效果1s-->S5T2s999s-->S5T16m39s9990s-->S5T2h46m30s步骤1:创建FB150 “I_S5T”步骤2:双击打开FC150定义输入输出接口步骤3:逻辑程序如下:源码导入1.创建名字为FC105源文件,复制下面的源码到FC105源文件中2.点击编译按钮就可以直接生成FC150,然后就可以在程序调用FC150FUNCTION "I_S5T" : S5TIMETITLE =AUTHOR : SnailFAMILY : 'Time'NAME : T_CONVVERSION : 0.1VAR_INPUTIn : INT ; //输入整型时间(单位:秒)END_VARVAR_TEMPT_base : INT ; //时间基数T_base_temp : DWORD ;Input_D : DINT ; //输入的整数时间中间变量Input_BCD : DWORD ; //输入的整数时间中间变量BCD码Input_S5T : DWORD ; //输入的整数时间S5TimeLT_0 : BOOL ;LT_1 : BOOL ;TEMP1 : BOOL ;END_VARBEGINNETWORKTITLE =时间基数T_Base初始化L L#0;T #T_base;NOP 0;NETWORKTITLE =A( ;L #In;T #Input_D;SET ;SAVE ;CLR ;A BR;) ;JNB _001;L #Input_D;L L#1000;*D ;T #Input_D;_001: NOP 0;NETWORKTITLE =判断输入的整数书时间是否在有效范围内A( ;L #Input_D;<D ;) ;= #LT_0;A #LT_0;JC CLRB;NETWORKTITLE =判断输入的整数书时间是否在有效范围内A( ;L #Input_D;L L#9990000;<=D ;) ;= #LT_1;A #LT_1;JC LOP1;NETWORKTITLE =S5_Time := 3.999L W#16#3999;T #Input_S5T;SET ;SAVE ;CLR ;A BR;JC CLRB;NETWORKTITLE =999s 999000ms /10ms 待转换的时间时间除以最小时间基数10msLOP1: L #Input_D;L L#10;/D ;T #Input_D;NOP 0;NETWORKTITLE =如果输入#Input_D的整数值小于等于999说明说明存储时间基数的二进制//如果输入#Input_D的整数值小于等于999说明说明存储时间基数的二进制位是00,所以直接//跳转执行程序标签为BCD1的程序段L #Input_D;L L#999;<=D ;JC BCD1;NETWORKTITLE =Input_D > 999 则T_basen + 1//如果输入#Input_D的整数值大于999说明说明存储时间基数的二进制位不是00,所以处理时//间基数的存储位L 1;+I ;T #T_base;AN OV;SAVE ;CLR ;A BR;= #TEMP1;NETWORKTITLE =跳转到LOP1//跳转到LOP1 判断Input_D /10是否大于等于999,如果为否,则继续执行之前的步骤O #TEMP1;ON #TEMP1;JC LOP1;NETWORKTITLE =BCD1: L #Input_D;DTB ;T #Input_BCD;NOP 0;NETWORKTITLE =时间基数之处理A( ;A( ;L #T_base;T #T_base_temp;SET ;SAVE ;CLR ;A BR;) ;JNB _002;L W#16#C;L #T_base_temp;SLD ;T #T_base_temp;SET ;SAVE ;CLR ;_002: A BR;) ;JNB _003;L #T_base_temp;L #Input_BCD;OD ;T #Input_S5T; _003: NOP 0; NETWORKTITLE =CLRB: AN #LT_0;SAVE ; NETWORKTITLE =L #Input_S5T;T #RET_VAL;NOP 0; NETWORKTITLE =END_FUNCTION。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

:数INT_时间S5Time及Time相互转换
就是整数INT、时间S5Time及Time之间的相互转换。

如何转换,首先要弄清整数INT、时间S5Time及Time的数据结构。

整数INT是16位的数据:
时间S5Time是16位数据,BCD码格式:
时间Time是32位数据,类似于双整数DINT:
由此可见,三者之间的转换即是整数INT、双整数DINT及BCD码之间的转换。

可以根据数据结构特点,自己编程实现相互转换,这样比较复杂。

利用库函数FC33/FC40是最简单方便的。

方法如下:
1. 整数INT到时间S5Time的转换方法:
INT -> I_DI指令-> DINT -> MOVE指令-> Time -> 库函数FC40 -> S5Time。

2. 整数INT到时间Time的转换方法:INT -> I_DI指令-> DINT -> MOVE指令-> Tim e。

如图示:
3. 时间S5Time到整数INT的转换方法:
S5Time -> 库函数FC33 -> Time -> MOVE指令-> DINT -> 取其高字部分,用MOVE指令-> INT。

注意数据类型。

相关文档
最新文档