电工学习网

 找回密码
 立即注册
查看: 63|回复: 0

西门子TIA读取PLC时间提取到字符串的简便方法

[复制链接]
发表于 5 天前 | 显示全部楼层 |阅读模式
     一次做自动化设备与MES系统对接部分, MES工艺要求现场操作人员相关信息在工位hmi进行登陆确认(设有操作权限),以便确认人员信息与人员关联,plc控制系统还要自动记录保养人员信息、内容及数据,作业人员可在HMI上读取点检作业指导书、工艺技术参数,故障发生时间,故障处理时间,复位时间以及故障结束时间,系统自动记录作业人员信息及点检过程信息,并汇总数据库,所有这些上传数据都得有当时系统时间,所以plc编程中要有采集系统日期时间的函数,但MES部分是另外一家公司负责,是专门做IT行业的,对我们设备厂家提供的数据格式比如DTL等不愿解析,而且他们是先于甲方签订的协议,要我们按他们的要求提供数据,即提供字符串格式数据,我们经过分析后发现PLC也无法直接输出这样格式的数据。
    这里遇到的问题就是把DATE数据类型转换成 STRING 类型。以前在STEP7中也没有直接的转换指令,也是需要借助多个转换指令完成这个功能的,比如FC5,FC16 , FC30等功能块,要把年、月、日这三个变量转换成 BCD 码,然后还要把 DATE_AND_TIME 格式数据的前3个字节提取出来,分别转换成 INT型,但TIA里面没有这样的函数,
只能找到T_CONV:转换时间并提取的函数,输入:整数、TIME、日期和时间类型,输出:整数、TIME、日期和时间类型, 显然输出无法直接转字符串,无法满足工艺要求,而且这个数据量非常大,对我们编程造带来一些问题。
    后来经过搜索资料找到TIA 的扩展函数库LGF,提供的函数以“通用函数库”的形式,而且该库可以无限制地使用,并且包含 FIFO、搜索功能、矩阵计算、天文计时器等很多实用功能。时间转换函数编程时如下所示:
6374959826172215976311754.jpg
这个函数库里面第6个函数是 Converter operations,这里以1.01版本为例:也就是上面的LGF_DTLtoString功能块,比如
日期 DTL 22.0 DTL#2021-02-10-08:08:08
YEAR         UInt  22.0 2021
MONTH      USInt 24.0 02  
DAY         USInt 25.0 10  
WEEKDAY      USInt 26.0 5
HOUR         USInt 27.0 8
MINUTE      USInt 28.0 8
SECOND      USInt 29.0 8
NANOSECOND U DInt    30.0 0
    一共10个字节,通过这个函数可以直接把采集的时间格式数据转换为字符串,不必经过层层转换,而且这个函数可直接通过参数调用,具有通用性,不受知识产权保护限制,因此可进行自行修改编辑。
6374959831739128276854758.jpg
包括界面说明注释在内,写的很完善,库中的所有块都可以在S7-1200/1500控制器种使用,而且支持使用 S7-PLCSIM 进行仿真,非常适合自动化与MES系统对接时调用,顺利解决了本文开头遇到的问题。
来源:西门子工业技术论坛

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

|电工学习网 ( )

GMT+8, 2021-2-27 17:25

Powered by © 2011-2021 www.diangon.com 版权所有 免责声明 不良信息举报

技术驱动未来! 电工学习网—专业电工基础知识电工技术学习网站。

栏目导航: 工控家园 | 三菱plc | 西门子plc | 欧姆龙plc | plc视频教程

快速回复 返回顶部 返回列表