LGF_DateCaculator指令库及其使用
LGF_DateCaculator库文件夹下包含以下库指令: LGF_DateDays,LGF_DateDiff和 LGF_DateSum。
注意:
此指令库使用STEP 7 MicroWIN SMART V2.6版本编写,请在STEP 7 MicroWIN SMART V2.6或更高版本软件中使用该库指令。
此指令库/程序的作者和拥有者对于该软件的功能性和兼容性不负任何责任。使用该软件的风险完全由用户自行承担。由于它是免费的,所以不提供任何担保,错误纠正和热线支持,用户不必为此联系西门子技术支持与服务部门。
在项目中使用库
创建完成的指令库文件扩展名为".smartlib"。库文件可以作为单独的文件拷贝、移动,将库文件移动至系统库文件夹下即可使用库指令(STEP 7-Micro/WIN SMART库文件夹一般存储路径为"C:\Users\Public\Documents\Siemens\STEP 7-MicroWIN SMART\Lib")。如果操作完成打开软件后未找到库指令,在库菜单栏下单击右键选择"刷新库"即可。
成功添加指令库后,用户可以在STEP7 Micro/win的指令树中找到‘LGF_DateCaculator(v1.3)'
图1. LGF_DateCaculator库
LGF_DateCaculatort简介
1.**库指令LGF_DateDays说明:
**该库可以用来计算设定日期经过的天数,并且可以计算当年是否为闰年。
例如: 2020-3-18 是2020年的第78天, 并且 2020年是闰年。
程序块:
图 2. LGF_DateDays
表 1. LGF_DateDays参数
参数 | 声明 | 数据类型 | 注释 |
---|---|---|---|
EN | IN | BOOL | 程序块使能 |
setYear | IN_OUT | INT | 设置年份 |
setMonth | IN_OUT | BYTE | 设置月份 |
setDay | IN_OUT | BYTE | 设置日期 |
totalDay | IN_OUT | INT | 输出计算出来的天数 |
leapYear | IN_OUT | BOOL | 闰年标志 |
2.**库指令LGF_DateDiff说明:
**
该库可以用来计算2个日期之间的天数,如果起始日期比结束日期早,结果为正数,如果起始日期比结束日期晚,结果为负数。
当set 管脚为真时,更新计算结果。
例子: 从 2015-12-20 到 2021-5-11相差1969天 。
程序块:
图 3. LGF_DateDiff
表 2. LGF_DateDiff参数
参数 | 声明 | 数据类型 | 注释 |
---|---|---|---|
EN | IN | BOOL | 程序块使能 |
initYear | IN_OUT | INT | 初始年份 |
initMonth | IN_OUT | BYTE | 初始月份 |
initDay | IN_OUT | BYTE | 初始日期 |
endYear | IN_OUT | INT | 结束年份 |
endMonth | IN_OUT | BYTE | 结束月份 |
EndDay | IN_OUT | BYTE | 结束日期 |
dateDiff | IN_OUT | INT | 2个日期之间的天数 |
set | IN_OUT | BOOL | 当设置为1时,结果更新 |
-
**库指令LGF\_DateSum说明:
**
该库可以计算初始日期和当前日期之间的天数,当set管脚为真时,将设定日期赋值给初始日期。如果管脚 reset为真,dataAcc清零。
注:1.当前日期起始地址共占用16字节。2.使用时需要提前设置好本地PLC日期。 3. 设定日期不能大于plc当前日期。
例子: 从 2015-12-20 到PLC中的当前日期(2022-3-8) 过了2271 天 。
程序块:
图 4. LGF_DateSumt参数
表3. LGF_DateSumt参数
参数 | 声明 | 数据类型 | 注释 |
---|---|---|---|
EN | IN | BOOL | 程序块使能 |
currentDate | IN | DWORD | 当前日期的存储首地址(从起始地址占用16个字节) |
setYear | IN_OUT | INT | 设置年份 |
setMonth | IN_OUT | BYTE | 设置月份 |
setDay | IN_OUT | BYTE | 设置日期 |
initYear | IN_OUT | INT | 如果set为真,initYear等于setYear |
initMonth | IN_OUT | BYTE | 如果set为真,initMonth等于setMonth |
initDay | IN_OUT | BYTE | 如果set为真,initDay等于setDay |
dateAcc | IN_OUT | INT | 计算初始日期和当前日期之间的累积天数 |
set | IN_OUT | BOOL | 当设置为1时,initdata从setdata读取日期 |
reset | IN_OUT | BOOL | 当reset为真时,清除dataAcc |