ISO 6336-6翻译

Posted 疲劳应用统计学

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ISO 6336-6翻译相关的知识,希望对你有一定的参考价值。

4概述

4.1确定载荷和应力谱

工作过程、启动过程或临界转速或接近临界转速运行产生的可变载荷将在驱动系统的轮齿处产生不同的应力。这些负载的大小和频率取决于被驱动机器、驱动器或电机以及系统的动态质量弹性特性。

这些可变载荷(应力)可通过以下程序确定:

-相关机器工作载荷的实验测量

-具有类似工作模式的类似机器的频谱估计(如果已知)

-计算,使用已知的外部激励和驱动系统的质量弹性模拟,然后最好进行实验测试以验证计算。

为了获得疲劳损伤计算的载荷谱,将测量(或计算)载荷的范围划分为箱或类别。每个箱包含在其装载范围内记录的装载次数。广泛使用的箱数量为64个。这些箱的尺寸可以相同,但通常最好在该范围内较低负载时使用较大的箱尺寸,在较高负载时使用较小的箱尺寸。通过这种方式,最具破坏性的荷载可能会被限制在较少的计算应力循环内,并且结果设计对于有效荷载更为准确。建议包括一个零负载箱,以便用于齿轮额定的总时间与设计工作寿命相匹配。为了保持一致性,通常的表示方法是将与编号最低的箱子相关联的最大扭矩设置为最大扭矩,以使最具破坏性的情况出现在任何表格的顶部。

与最高负载齿的负载值对应的负载等级的循环计数在每次负载重复时递增。表3显示了表4中定义的扭矩等级如何应用于特定扭矩水平和相关循环次数的示例。

用于评估齿载荷的扭矩应包括不同转速下的动态效应。

该频谱仅对测量或评估的时间段有效。如果频谱被外推以表示所需的寿命,则应考虑可能存在该测量频谱中不经常出现的扭矩峰值的可能性。这些瞬态峰值会对齿轮寿命产生影响。因此,必须延长评估的时间段,以捕获极端负载峰值。

有关弯曲和点蚀的应力谱可从载荷(扭矩)中获得。

齿根应力也可通过圆角中的应变计进行测量。可根据测量值计算相关接触应力。

4.2使用寿命的一般计算

计算的使用寿命基于每个负载循环(每转)都会损坏齿轮的理论。损伤量取决于应力水平,对于较低的应力水平,可将其视为零。

齿轮的计算弯曲或点蚀疲劳寿命是衡量其累积离散损伤直至发生故障的能力。

疲劳寿命计算需要:

a) 应力谱,

b)材料疲劳性能,以及

c)损伤累积方法

5.1中讨论了应力谱。

基于材料疲劳特性的强度值从适用的S-N曲线中选择。许多试样应在一个应力水平上反复施加应力,直至发生失效。在对特定概率进行统计解释后,给出了该应力水平的失效循环次数特征。在不同应力水平下重复该程序会导致S-N曲线。

累积应力谱的示例如图1所示。图2显示了具有特定材料疲劳特性的S-N曲线的累积接触应力谱。

采用线性、非线性和相关方法。更多信息可在文献中找到(参考文献[4]、[9]、[10]和[17])

4.3Palmgren-miner规则

Palmgren-Miner规则以及其他规则或修改是一种广泛使用的线性损伤累积方法。假设在给定应力水平下,每个应力重复的损伤效应相等,这意味着在给定应力水平下的第一个应力循环与最后一个应力循环具有相同的损伤。

Palmgren-Miner规则的假设是,根据为材料建立的S-N曲线,在特定应力下,多次重复应力循环使用的有效疲劳寿命部分等于在特定应力水平下疲劳寿命期间循环总数的比率。例如,如果零件在应力水平下承受3000次循环的应力,这将导致100000次循环中的失效,则疲劳寿命将延长3%。另一个应力水平的重复应力将消耗总疲劳寿命的另一个类似计算部分。

所用材料疲劳特性和耐久性数据应与特定和要求的失效概率相关,例如1%、5%或10%。

当以这种方式消耗100%的疲劳寿命时,零件可能会失效。在Palmgren-Miner分析中,应用这些单独应力循环的顺序并不重要。

失效会发生当

ni, 是箱i的载荷循环数

N, 是箱i失效的荷载循环次数(取自适当的S-N曲线)

如果存在耐久极限(图2中膝盖外的水平线上限),则仅对超过该耐久极限的应力进行计算。如果适当的S-N曲线没有显示耐久极限(图3中膝盖(扭结点)以外的递减线),则应针对所有应力水平进行计算。对于每个应力水平,i,失效循环次数N,应从S-N曲线的相应应力水平中选取。其他损伤累积经买方和齿轮箱制造商同意,除本文所述方法外,还可使用(包括非线性)假设和允许的损坏金额(一个除外)。

5根据ISO 6336系列,基于单级强度计算使用强度

5.1基本原则

此方法仅对重新计算有效。它描述了根据Palmgren-Miner规则(见4.3)线性累积损伤计算的应用,之所以选择它是因为它广为人知且易于应用;这种选择并不意味着该方法优于文献中描述的其他方法。

从各个扭矩等级中,应列出每个扭矩等级上限处的扭矩和相关循环次数(示例见表5)

根据载荷谱(Ti,Ni),通过ISO 6336-2和ISO 6336-3中描述的小齿轮或车轮的方法确定有效应力水平Si,以获得应力谱(Si,Ni),如图2所示。

应力谱(Si,Ni)与S-N曲线相结合,可以确定每个应力水平Si的允许循环次数Ni(见图3)

注:对于循环次数为Ni的各应力等级Si,可通过小齿轮或车轮的IS0 6336-2和IS0 6336-3中所述方法确定允许循环次数Ni。

图3-应力谱和S-N曲线

注1:完全低于S-N曲线的累积应力谱表示并不意味着零件将在总累积应力循环数下存活。该信息可以从图7所示的演示中获得。

注3:垂直轴上的对数刻度因图2中的应力和扭矩而不同。

为了以图形方式评估累积损伤,有必要将每个应力箱的损伤载荷循环从应力水平Si转移到应力水平Si+1,以保持累积损伤连续不断。从图形上看,这相当于从应力箱Si的末端(分别参见图4和图5,在有和无耐久极限的情况下)到应力水平Si+1绘制一条与S-N曲线斜率相同的线。

给定载荷谱的等效累积损伤如图4所示,应力水平S3的比率为Neq3/N3(图5中的应力水平S4分别为Neq4/N4)。

图4—存在耐久极限时的累积应力谱和疲劳曲线极限

图5—长寿命范围内寿命因子<1的累积应力谱和S-N曲线

齿根()和齿侧()的应力谱以及所有相关因素均基于该扭矩谱形成。计算每个新扭矩等级的负载相关K系数(程序见5.2)。

通过这种方式获得的应力谱,将计算值与根据5.3使用Palmgren-Miner规则确定的强度值(S-N曲线、损伤线)进行比较,见4.3。

有关图形表示,请参见图3。

对于所有Si值,单个损坏零件的定义如下:

单个损坏部件的总和Ui导致累积损坏条件U,其应小于或等于1。

注4:如4.3所述,可使用除1,0以外的容许损伤总和。

注5:速度相关参数的计算基于每个负载水平的平均转速。这也涉及S-N曲线的确定。

该计算过程应适用于每个小齿轮和车轮的弯曲应力和接触应力。

图6显示了一个演示文稿,从中可以得出零件是否能经受住总应力循环次数的结论。

此外,应用于静载荷强度的安全系数应针对设计寿命的最高应力进行计算。本文件不适用于大于静态应力极限的应力水平,因为在弯曲或表面接触压力下,该范围内的应力可能超过轮齿的弹性极限。此外,应用于静载荷强度的安全系数应针对设计寿命的最高应力进行计算。最高应力可以是载荷谱中的最大应力,也可以是疲劳分析中未考虑的极端瞬态载荷。取决于材料和施加的载荷,超过有限寿命范围的单个应力循环可能导致轮齿的塑性屈服。对于点蚀,可根据IS0 6336-2确定静载荷强度;对于弯曲,可根据IS0 6336-3确定静载荷强度。

5.2应力谱的计算

对于扭矩谱的每个级i,应根据以下公式分别确定接触应力和弯曲应力的实际应力Si。

接触应力(ISO 6336-2:,方法B)

弯曲应力(ISO 6336-3:,方法B)

对于该计算,定义为应用系数的KA值设置为单位(1,0),因为计算方法中包含的应力水平应考虑所有应用荷载影响。

5.3点蚀和弯曲强度值的测定

点蚀和弯曲强度的S-N曲线可通过实验或根据ISO 6336-2和ISO 6336-3的规则确定。

如果齿在两个方向上都有载荷(如惰轮),则应根据IS0 6336-3减小齿根强度的确定值。

对于接触应力,如果两个侧面的载荷不同,则应分别计算每个侧面的损伤累积。

5.4安全系数的确定

5.4安全系数的确定

在一般情况下,安全系数不能直接从损伤和U中推导出来。应通过迭代的方式确定。该过程如图7所示。

应分别计算小齿轮和车轮的安全系数S,分别用于弯曲和点蚀。安全系数仅在每次计算所需的使用寿命内有效。附录C显示了计算S的示例。

注:根据IS0 6336-2的接触应力或根据IS0 6336-3的弯曲应力乘以安全系数S,在迭代过程中计算的应力可高于静载荷强度(例如,见图C.1)。这并不意味着这些应力将在实际操作中发生。

 

Python 中的 ISO 时间 (ISO 8601)

【中文标题】Python 中的 ISO 时间 (ISO 8601)【英文标题】:ISO time (ISO 8601) in Python 【发布时间】:2011-01-10 04:19:37 【问题描述】:

我有一个文件。在 Python 中,我想占用它的创建时间,并将其转换为 ISO time (ISO 8601) string同时保留它是在 Eastern Time Zone (ET) 中创建的事实

如何获取文件的 ctime 并将其转换为指示东部时区的 ISO 时间字符串(并在必要时考虑夏令时)?

【问题讨论】:

How do I translate a ISO 8601 datetime string into a Python datetime object?的可能重复 @Nick- 有用的链接,但不是重复的- 他在询问是否要以另一种方式进行转换。 @Joseph-我刚刚问过这个关于 RFC 3999 的问题-应该可以解决这个问题-Generate RFC 3339 timestamp in Python 【参考方案1】:

您需要使用os.stat 获取文件创建时间,并使用time.strftimetime.timezone 的组合进行格式化:

>>> import time
>>> import os
>>> t = os.stat('C:/Path/To/File.txt').st_ctime
>>> t = time.localtime(t)
>>> formatted = time.strftime('%Y-%m-%d %H:%M:%S', t)
>>> tz = str.format('0:+06.2f', float(time.timezone) / 3600)
>>> final = formatted + tz
>>> 
>>> final
'2008-11-24 14:46:08-02.00'

【讨论】:

时区是否考虑夏令时?无论夏令时与否,似乎 tz 都是一样的。 它将是当前有效的任何偏移量。如果 DST 处于活动状态,它将具有与 DST 未激活时不同的偏移量。【参考方案2】:

如果我错了,请纠正我(我不是),但是与 UTC 的偏移量会随着夏令时而变化。所以你应该使用

tz = str.format('0:+06.2f', float(time.altzone) / 3600)

我也认为标志应该不同:

tz = str.format('0:+06.2f', -float(time.altzone) / 3600)

我可能是错的,但我不这么认为。

【讨论】:

【参考方案3】:

我同意 Jarek 的观点,而且我还注意到 ISO 偏移分隔符是一个冒号,所以我认为最终的答案应该是:

isodate.datetime_isoformat(datetime.datetime.now()) + str.format('0:+06.2f', -float(time.timezone) / 3600).replace('.', ':')

【讨论】:

【参考方案4】:

ISO 8601 时间表示

国际标准 ISO 8601 描述了日期和时间的字符串表示。这种格式的两个简单示例是

2010-12-16 17:22:15
20101216T172215

(都代表 2010 年 12 月 16 日),但该格式还允许亚秒级分辨率时间和指定时区。这种格式当然不是 Python 特有的,但它适用于以可移植格式存储日期和时间。有关此格式的详细信息,请参阅Markus Kuhn entry。

我建议使用这种格式将时间存储在文件中。

在此表示中获取当前时间的一种方法是使用 Python 标准库中 time 模块中的 strftime:

>>> from time import strftime
>>> strftime("%Y-%m-%d %H:%M:%S")
'2010-03-03 21:16:45'

可以使用 datetime 类的 strptime 构造函数:

>>> from datetime import datetime
>>> datetime.strptime("2010-06-04 21:08:12", "%Y-%m-%d %H:%M:%S")
datetime.datetime(2010, 6, 4, 21, 8, 12)

最强大的是 Egenix mxDateTime 模块:

>>> from mx.DateTime.ISO import ParseDateTimeUTC
>>> from datetime import datetime
>>> x = ParseDateTimeUTC("2010-06-04 21:08:12")
>>> datetime.fromtimestamp(x)
datetime.datetime(2010, 3, 6, 21, 8, 12)

参考文献

The Python time module documentation

The Python datetime class documentation

The Egenix mxDateTime class

【讨论】:

在什么意义上“更健壮”? 日期:2018-05-25 UTC 组合日期和时间:2018-05-25T12:16:14+00:00 UTC 组合日期和时间:2018-05-25T12:16:14Z UTC 组合日期和时间:20180525T121614Z【参考方案5】:
import datetime, time    
def convert_enddate_to_seconds(self, ts):
    """Takes ISO 8601 format(string) and converts into epoch time."""
     dt = datetime.datetime.strptime(ts[:-7],'%Y-%m-%dT%H:%M:%S.%f')+\
                datetime.timedelta(hours=int(ts[-5:-3]),
                minutes=int(ts[-2:]))*int(ts[-6:-5]+'1')
    seconds = time.mktime(dt.timetuple()) + dt.microsecond/1000000.0
    return seconds 

>>> import datetime, time
>>> ts = '2012-09-30T15:31:50.262-08:00'
>>> dt = datetime.datetime.strptime(ts[:-7],'%Y-%m-%dT%H:%M:%S.%f')+ datetime.timedelta(hours=int(ts[-5:-3]), minutes=int(ts[-2:]))*int(ts[-6:-5]+'1')
>>> seconds = time.mktime(dt.timetuple()) + dt.microsecond/1000000.0
>>> seconds
1348990310.26

【讨论】:

【参考方案6】:

我在the documentation 中找到了 datetime.isoformat。它似乎做你想做的事:

datetime.isoformat([sep])

Return a string representing the date and time in ISO 8601 format, YYYY-MM-DDTHH:MM:SS.mmmmmm or, if microsecond is 0, YYYY-MM-DDTHH:MM:SS

If utcoffset() does not return None, a 6-character string is appended, giving the UTC offset in (signed) hours and minutes: YYYY-MM-DDTHH:MM:SS.mmmmmm+HH:MM or, if microsecond is 0 YYYY-MM-DDTHH:MM:SS+HH:MM

The optional argument sep (default 'T') is a one-character separator, placed between the date and time portions of the result. For example,
>>>

>>> from datetime import tzinfo, timedelta, datetime
>>> class TZ(tzinfo):
...     def utcoffset(self, dt): return timedelta(minutes=-399)
...
>>> datetime(2002, 12, 25, tzinfo=TZ()).isoformat(' ')
'2002-12-25 00:00:00-06:39'

【讨论】:

【参考方案7】:

本地到 ISO 8601:

import datetime
datetime.datetime.now().isoformat()
>>> 2020-03-20T14:28:23.382748

UTC 到 ISO 8601:

import datetime
datetime.datetime.utcnow().isoformat()
>>> 2020-03-20T01:30:08.180856

本地到 ISO 8601,无微秒:

import datetime
datetime.datetime.now().replace(microsecond=0).isoformat()
>>> 2020-03-20T14:30:43

UTC 到 ISO 8601 以及时区信息 (Python 3):

import datetime
datetime.datetime.utcnow().replace(tzinfo=datetime.timezone.utc).isoformat()
>>> 2020-03-20T01:31:12.467113+00:00

UTC 到 ISO 8601,本地时区信息不带微秒(Python 3):

import datetime
datetime.datetime.now().astimezone().replace(microsecond=0).isoformat()
>>> 2020-03-20T14:31:43+13:00

具有时区信息的 ISO 8601 本地 (Python 3):

import datetime
datetime.datetime.now().astimezone().isoformat()
>>> 2020-03-20T14:32:16.458361+13:00

请注意,在 UTC 时间使用 astimezone() 时存在错误。这给出了不正确的结果:

datetime.datetime.utcnow().astimezone().isoformat() #Incorrect result

对于 Python 2,请参阅并使用 pytz。

【讨论】:

.isoformat() 可以带一个分隔符参数,(如果你想要'T'以外的东西):.isoformat(' ') @ThorSummoner 很高兴知道!但是请注意,更改分隔符将不再符合 ISO-8601 ......这没什么意义(此外,有更好的方法来打印日期,但这不是这里的问题)。 RFC 空格是 ISO-8601 标准的一部分。 It is permitted to omit the 'T' character by mutual agreement. @raychi 总是允许通过双方协议更改标准(在许多情况下这会破坏标准,但谁在乎它是否是双方协议,对吧?)。我的 2c:不要,保持原样。 这个答案是错误的,因为 datetime.datetime.now().isoformat() 返回一个本地 ISO 8601 字符串而不将其标记为本地。您需要有一个代表本地时区的 datetime.timezone 才能让 isoformat 做正确的事情。【参考方案8】:

ISO 8601 time format 不存储时区名称,仅保留对应的 UTC 偏移量。

将文件 ctime 转换为 ISO 8601 时间字符串,同时在 Python 3 中保留 UTC 偏移量:

>>> import os
>>> from datetime import datetime, timezone
>>> ts = os.path.getctime(some_file)
>>> dt = datetime.fromtimestamp(ts, timezone.utc)
>>> dt.astimezone().isoformat()
'2015-11-27T00:29:06.839600-05:00'

代码假定您的本地时区是Eastern Time Zone (ET),并且您的系统为给定的 POSIX 时间戳 (ts) 提供了正确的 UTC 偏移量,即 Python 可以访问您系统上的历史时区数据库或者时区在给定日期有相同的规则。

如果您需要便携式解决方案; use the pytz module 提供对the tz database 的访问:

>>> import os
>>> from datetime import datetime
>>> import pytz  # pip install pytz
>>> ts = os.path.getctime(some_file)
>>> dt = datetime.fromtimestamp(ts, pytz.timezone('America/New_York'))
>>> dt.isoformat()
'2015-11-27T00:29:06.839600-05:00'

在这种情况下结果是一样的。

如果您需要时区名称/缩写/时区ID,请单独存储。

>>> dt.astimezone().strftime('%Y-%m-%d %H:%M:%S%z (%Z)')
'2015-11-27 00:29:06-0500 (EST)'

注意:不,UTC 偏移量中的:EST 时区缩写不是 ISO 8601 时间格式的一部分。它不是唯一的。

同一库的不同库/不同版本可能对同一日期/时区使用不同的时区规则。如果是未来的日期,那么规则可能还未知。换句话说,相同的 UTC 时间可能对应不同的本地时间,具体取决于您使用的规则 - 以 ISO 8601 格式保存时间会保留 UTC 时间和对应于当前时间的本地时间在您的平台上使用的区域规则。如果有不同的规则,您可能需要在不同的平台上重新计算当地时间。

【讨论】:

【参考方案9】:

这是我用来转换为 XSD 日期时间格式的:

from datetime import datetime
datetime.now().replace(microsecond=0).isoformat()
# You get your ISO string

我在寻找 XSD 日期时间格式 (xs:dateTime) 时遇到了这个问题。我需要从isoformat 中删除微秒。

【讨论】:

什么是 "XSD"(在这种情况下)? 我相信他的意思是来自 XSD / XML 样式表的xs:date 意思是xs:dateTime【参考方案10】:

我开发了这个功能:

def iso_8601_format(dt):
    """YYYY-MM-DDThh:mm:ssTZD (1997-07-16T19:20:30-03:00)"""

    if dt is None:
        return ""

    fmt_datetime = dt.strftime('%Y-%m-%dT%H:%M:%S')
    tz = dt.utcoffset()
    if tz is None:
        fmt_timezone = "+00:00"
    else:
        fmt_timezone = str.format('0:+06.2f', float(tz.total_seconds() / 3600))

    return fmt_datetime + fmt_timezone

【讨论】:

【参考方案11】:

ISO 8601 允许使用除 T 之外没有分隔符的紧凑表示,因此我喜欢使用这种单行符来快速获取时间戳字符串:

>>> datetime.datetime.utcnow().strftime("%Y%m%dT%H%M%S.%fZ")
'20180905T140903.591680Z'

如果您不需要微秒,只需省略 .%f 部分:

>>> datetime.datetime.utcnow().strftime("%Y%m%dT%H%M%SZ")
'20180905T140903Z'

当地时间:

>>> datetime.datetime.now().strftime("%Y%m%dT%H%M%S")
'20180905T140903'

编辑:

在阅读了更多内容之后,我建议您保留标点符号。RFC 3339 建议使用这种样式,因为如果每个人都使用标点符号,则不会有诸如多个 ISO 8601 字符串被分组排序的风险。标点。因此,符合标准的字符串的一个衬里是:

>>> datetime.datetime.now().strftime("%Y-%m-%dT%H:%M:%SZ")
'2018-09-05T14:09:03Z'

【讨论】:

有没有办法将毫秒的位数限制为 3?即我的其他 javascript 应用程序将生成 2019-02-23T04:02:04.051Znew Date().toISOString() 警告:末尾的“Z”不正确。输出包含 'Z' 符号的时区的正确方法是 '%z' 或 '%Z',即 'datetime.datetime.now().strftime("%Y-%m-%dT%H :%M:%S%z")'。我花了 2 小时试图在我的代码中找到一个错误…… @Dr_Zaszuś 这不对。 %z 为您的本地时间生成一个时区偏移量,这不是我推荐的时间戳,特别是如果您正在查看多个系统。文字 Z 是 ISO 8601 UTC 的简写。 @Miranda javascript like output datetime.datetime.now(datetime.timezone.utc).isoformat()[:23]+"Z"【参考方案12】:

为 estani 的 excellent answer 添加一个小变化

本地到 ISO 8601,带有 TimeZone 和 no 微秒信息(Python 3):

import datetime, time

utc_offset_sec = time.altzone if time.localtime().tm_isdst else time.timezone
utc_offset = datetime.timedelta(seconds=-utc_offset_sec)
datetime.datetime.now().replace(microsecond=0, tzinfo=datetime.timezone(offset=utc_offset)).isoformat()

样本输出:

'2019-11-06T12:12:06-08:00'

测试这个输出可以被JavascriptDate和C#DateTime/DateTimeOffset解析出来

【讨论】:

【参考方案13】:

对于那些正在寻找仅日期解决方案的人来说,它是:

import datetime

datetime.date.today().isoformat()

【讨论】:

我最终这样做是为了避免导入超过 datetime 类: from datetime import datetime; datetime.now().isoformat()[:10] (抱歉找不到代码 sn-p thingy)【参考方案14】:

以毫秒为单位的标准 RFC-3339

我需要这种格式的 LoRa 应用程序的时间,所以我想出了这个,希望对您有所帮助:

from datetime import datetime
from time import strftime


# Get the current time in the format: 2021-03-20T16:51:23.644+01:00
def rfc3339_time_ms():
        datetime_now = datetime.utcnow()
        # Remove the microseconds
        datetime_now_ms = datetime_now.strftime("%Y-%m-%dT%H:%M:%S.%f")[:-3]
        # Add the timezone as "+/-HHMM", and the colon in "+/-HH:MM"
        datetime_now_ms_tz = datetime_now_ms + strftime("%z")
        rfc3339_ms_now = datetime_now_ms_tz[:-2] + ":" + datetime_now_ms_tz[-2:]
        # print(f"Current time in ms in RFC-3339 format: rfc3339_ms_now")
        return rfc3339_ms_now

【讨论】:

以上是关于ISO 6336-6翻译的主要内容,如果未能解决你的问题,请参考以下文章

VS Code 翻译插件一览表

unicode汉语翻译是啥意思

20165232 第二周学习总结

中文编码问题

: Software architectural design

: Software architectural design