1、函数&样例:TIME和DINT的相互转化问题:如何将“TIME”数据类型的变量转换为“DINT”数据类型,使得转换后以下个别变量仍然保留:天数,小时数,分钟数,秒数和毫秒数?如何将这些个别变量:天数,小时数,分钟数,秒数和毫秒数(“DINT” 数据类型)反向转换为“TIME”数据类型? 解答:“TIME”类型的变量内容被解释为毫秒数并且保存为有符号的32位定点数(占用一个双字)。为了将数据类型“TIME”( 以毫秒数计数)拆分到上述参数中, 建议按下列步骤操作: 天数的计算:days = TIME_value / 86400000 /1 天 = 86400000毫秒。daysinhours =
2、 days * 24 /以小时来计算天数。daysinminutes = days * 1440 /以分钟数来计算天数。daysinseconds = days * 86400 /以秒数来计算天数。ddaysinmilliseconds = days * 86400000 /以毫秒数来计算天数。 小时数的计算:Hours = (TIME_value / 3600000) - daysinhourshoursinminutes = hours * 60 /以分钟数计算小时数。hoursinseconds = hours * 3600 /以秒数计算小时数。hoursinmilliseconds =
3、 hours * 3600000 /以毫秒数计算小时数。 分钟数的计算:Minutes = (TIME_value / 60000) - daysinminutes - hoursinminutesminutesinseconds = minutes * 60 /以秒数计算分钟数。miniutesinmilliseconds = minutes * 60000 /以毫秒数计算分钟数。 秒数的计算:Seconds = (TIME_value / 1000) - daysinseconds - hoursinseconds - minutesinsecondsssecondsinmilliseco
4、nds = seconds * 1000 /以毫秒数计算秒数。 毫秒数的计算:Milliseconds = TIME_value - daysinmilliseconds - hoursinmilliseconds - secondsinmilliseconds. 现在,如果想把上述参数(类型:DINT)反向转换为数据类型为“TIME”的变量,那么首先需要将变量(天数, 小时数,分钟数和秒数)转化为毫秒数然后把所有变量相加在一起。 该 样例中含有一个STEP 7 V5.1项目,包含了从数据类型“Time”到数据类型“DINT”的转换(FC12)和从数据类型“ DINT”到数据类型“TIME”的 转换(FC11)。 从“TIME”到“DINT”的转换:输入:Time_value 类型:TIME(毫秒数)输出:天类型:DINT输出:小时类型:DINT输出:分钟类型:DINT输出:秒类型:DINT输出:毫秒类型:DINT从“DINT”到“TIME”的转换:输入:天类型:DINT输入:小时类型:DINT输入:分钟类型:DINT输入:秒类型:DINT输入:毫秒类型:DINT输出:Time_value 类型:TIME (毫秒数)可以根据需求随意修改函数。