如何屏蔽rs232针脚17未连接引起的告警

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何屏蔽rs232针脚17未连接引起的告警相关的知识,希望对你有一定的参考价值。

1 通信线路的绝缘设计方法RS-232 的大噪声(干扰)容限可使接口可靠工作,避免对由外部加到导线上的噪声引起的数据错误。在一个充满了电子噪声的连接环境中,绝缘可以防止噪声在连接电路之 间的耦合。绝缘通过将一个电路分成一个个独立的块来进行工作。这些块使用光和磁耦合来传送能量和数据,而过滤掉大部分的噪声。绝缘可以隔开地线、数据连接,或者把两者都隔开。地线绝缘使得一个电路对电源震荡和在被附近电路共用的地线中的噪声有免疫能力。在长的连接中,地线绝缘还使得连接对从一端到另一端的接地电位差异有免疫能力。绝缘数据连接避免了噪声在连接和它所连接到的电路之间的耦合。大多数的电路连接使用直接的办法,例如焊点或者诸如螺母接线端或压接这样的机械连接。利用电镀绝缘,一个电路的地线和信号线与其他电路没有电阻通道,或者 直接的接触。相反,电路可以使用光或者磁耦合来传输能量和信号。绝缘还使得每个电路对另一个电路中的噪声具有免疫能力。实现电镀绝缘的一般方法 包括使用变压器来绝缘电源和使用光隔离器来隔离数据。在一个变压器中,在线圈绕组之间的磁耦合使得主线圈中的电流在次线圈中产生电流。光隔离器通过光敏电 阻以及释放和探测可见或者红外波段中的能量的光敏二极管的方式来传输能量。以类似的方式,一个光纤--光学接口将二个电信号转换成在光纤中传输的光信号, 并且在接收器中将光信号转换成电信号。为了进行完全的绝缘,RS-232连接的每一端需要一个RS-232接口使用的一个绝缘的电源,以及一个 绝缘的接口,用来穿过绝缘屏障传输信号。在RS-232连接中,SG是信号地。因为RS-232接收器读取的是信号线和SG之间的电压,一个SG上的噪声 脉冲就能导致接收器误读一个逻辑电平。?在数字逻辑中,+5 V是对信号地以上5 V电压的一个简单说法。当一个电路使用不只一个电源的时候,即使电源的接地线没有相互绝缘,使接地通路保持独立,减少了从一个通路耦合到另一个通路的噪 声。每个电源的接地线可以使用独立的电线和电路板,只要在电源处连接到一起。
含有模拟和数字电路的电路可以为每一种电路提供独立的接地线,只在一个电源附近的点,连接这两条通路。数字地线往往是有噪声的,因为数字输出在它们切换的时候产生了大电流,因此将它们和模拟电路分开就比较合理,这些模拟电路可能对微小的电压变化比较敏感。1.1 安全地线安全地线,或者保护地线,是1个大地地线连接,它通常是一个直径很大的部分埋在地下的铜导线或者镀铜管。1个电源插座上的3根导线中的1根就和安全地线相 连,这个插座的另两根导线是带有220 V交流电压的火线和1根零线,带有220 V交流电的返回电流,零线连接到安全地线。这意味着所有建筑的电路零线通常在入口处有一个与建筑的连接。?安全地线在出现故障的情况下提供了一 个对地的低阻抗通路。例如,在很多电源中,有1个端点将安全地线和电源的底盘相连。如果底盘没有接地并且1根松散的导线或者元件故障导致1个电压源和底盘 相接触,这个底盘就可能携带高电压。如果底盘接地了,电流就会沿着这个低阻抗通路流向大地直到保险丝熔断,电路断开。? ??? TIA/EIA-232标准中,有一个DCE可以有1个可移动的跨接来连接SG和安全地线。实际上,DCE和DTE上的SG线经常和一个安全地线相连。1.2 大地地线?一个安全地线是一个大地地线。因为任何电气电路可以连接到大地地线,所以它往往不是一个安静的、稳定的参考,相反它可以携带大量的各种类型的噪声。可以产 生接地噪声的因素包括设备开关切换、电源系统波动、电路故障、雷击或者任何引起电流波动的事件。噪声可以表现为倾角,尖峰脉冲,60 Hz振动,或者任何形式的磁、电场变化。不同位置的大地地线相互之间可能有电气连接,也可能没有。它们是否相连,以及接地电压变化多大,部分取决于在接地线连接之间的介质的导电性能的好坏。1.3 共用接地线的影响如果一个RS-232连接的两端共享一个共用的大地地线,并且SG线也接到安全地线,从所有源头来的接地电流将会寻找阻抗最低的通路:大地地线或者SG 线。这种情况,有多个返回通路,被称作一个接地回路,显然这不是所希望的。如果两台设备处在不同的建筑内部,使用不同的电源系统,SG有可能比其他通路有 更小的阻抗,从其他源头来的接地电流就可能在连接的接地线上找到它们的通路,这会导致连接中的一个有噪声的接地线。一个有绝缘的接地线的连接就避免了这个 问题。
2 电源地线的设计应用一个绝缘的接口要求为这个绝缘屏障的每一端提供一个电源。图2显示了两个绝 缘的RS-232接口。每个接口使用一个双电源,如图1所示。在这个电源中一个变压器将220 V交流电转变成两个次级线圈中的低电压。一个线圈为计算机或者其他连接到光隔离器的设备端的电路提供电压。另一个线圈为RS-232接口提供电压。每个电 源有它自己的接地线,并且这些接地线必须和一个大地地线、底盘或者信号地线没有共同的连接。这个接口可以使用两个完全分开的电源或者输出没有共享一个通用 地线的电池,而不是有两个线圈的一个电源。如何掌握一个直流电源是否与大地地线绝缘了呢?在大多数用线电压供电的直流电源中,一个变压器将线电压降压到一 个较低的数值,其他元件整流、过滤和调节这个电压的输出到一个稳定的直流电压值。在变压器的主线圈和副线圈之间需要的唯一的连接是主线圈中有电流流动时产 生的磁耦合。这样,这个变压器就能够将电源输出与线电压导线和安全地线绝缘。实际上,有的数字电路电源的输出没有连接到安全地线。在输出端,因为电压很 低,稳压器限制了电流,如果电路试图产生大的电流,一根保险丝就将电路断开。??在其他电源中,输出的接地末端连接到一个安全地,打破了这个绝缘。结果就是和其他还连接到安全地或者大地地线的电路的共享接地线。即使是这些电路处于不同的建筑中或者相距数千英尺,它们之间也可能存在一个连接。?有两线电源插座的电源可能看上去没有安全地线连接,但是零线在外接电路插入电源的时候,是连接到安全地线的。这个电源的输出只有在它的接地线没有和零线相连的时候才是绝缘的。 ?对于含有变压器的电源而言,可以用一个欧姆表来查看这个输出是否和安全地线绝缘。利用电源,量测在电源的安全地和这个直流输出的接地线末端之间的阻抗。如果这个欧姆表显示有连接,就表示没有绝缘。在电源内部、零线和安全地线应该没有连接。也可以用欧姆表验证这一点。?
有的电源不使用变压器,它们仅仅是直接整流,降低和过滤线电压。在这种情况下,输出就没有与大地地线绝缘。即使是电源插座没有安全地线引脚,在外接电路插入电源的时候,零线也是连接到安全地线的。?3 采用光电隔离器光隔离器穿过一个隔离的屏障来传输信号。一个光隔离器由一个与光敏电阻耦合的发光 二极管构成。流过发光二极管的电流使得它以可见光或者红外线的方式释放能量。这些能量将这个光敏电阻打开,导致在这个电阻的发射极和集电极之间的低阻抗。 这个发光二极管的基极可以留着没有连接。从基极到发射极加入一个电阻可以导致更快的开关速度,但是输出电流更低。?图2的接口使用了6N1398光隔离器,它是设计用来和LSTTL逻辑直接连接的。它们的增益很高达400%,但一个发光二极管的电流只有0.5 mA。在TTL到RS-232电路中,在74LSl4转换器的引脚3的一个逻辑低电平使得电流流过这个发光二极管,这就打开了相应的光敏电阻,使得它的集 电极处于低电平。这个MAX233将这个信号反向,然后发送一个正的RS-232电压。在74LSl4引脚3的逻辑高电平关闭这个发光二极管和光敏电阻。MAX233位于引脚2的内部上拉电阻产生一个负的RS-232电压。?光隔离器在另一个方向上也是以类似的方式工作。一个负的RS-232输入使得MAX233输出一个逻辑高电平。这个逻辑高电平将发光二极管和光敏电阻打 开,导致在74LSl4的引脚1的逻辑低电平和引脚2的逻辑高电平。一个正的RS-232输入导致MAX233输出一个逻辑低电平。这个逻辑低电平关闭这 个发光二极管和光敏电阻。一个上拉电阻将74LSl4的引脚l拉到高电平,导致在引脚2处出现逻辑低电平。?RS-232到RS-232电路显 示了怎样通过使用一个RS-232输出来直接驱动一个发光二极管来绝缘一个现有的,未绝缘的RS-232接口。当RS-232电压为正的时候,这个发光二 极管打开,并且这个绝缘的RS-232输出也是正的。当这个未绝缘的输出为负的时候,这个发光二极管关闭,并且一个二极管将这个电压限制在大约-0?7 V。在另一个方向上,电路类似于它上边的电路,除了因为这个未绝缘RS-232已经将信号反向,因而不需要一个LS74系列的反向器以外。
对于 最底下电路的VCCl,如果没有其他用途的话,可以在DTR或者RTS使用一个正的输出。这个电路在VCCl这一边的电缆应该较短。光敏电阻的开关时间是 几微秒,这个时间长度不会在数据传输速度为?20 kb/s?或者更低的时候导致任何问题。对于更快的波特率,应该寻找一个开关时间为这个位宽度的1/10或者更短的发光二极管。?另一个实现绝缘接口的方法是为接口的RS-232-端使用一个独立的、绝缘的+12 V电源。这也使能够使用较便宜的1488/9驱动器和接收器。?此外,可以选用Max252接口,Max252是一个在一个单一的封装里的完整的、绝缘的RS-232接口。这个芯片包括一个石英谐振器和一个微型的变压器,这个变压器从芯片的5 V电源产生一个隔离的电源。它还有两个光隔离的驱动器/接收器对。?绝缘连接的另一种方式是使用光纤电缆来取代铜导线。光纤有很多优点,它们对接地噪声和电磁干扰有抵抗力,并且自身不产生电磁干扰。光纤电缆往往可以在1~2.5 mil之后才需要使用转发器。?4 电涌保护设计?电涌保护是使电路免受噪声或者破坏性电压和电流攻击的有效方法。理想的电涌保护应该吸收所有处在连接操作范围之外的电压和电流,而不在任何方面限制连接的传输。在实际工程应用中,可在连接中添加电容,以避免由于电压波动而造成的不良影响,因此也限制了最大的波特率。?在正常的操作中,这个保护设备表现出很高的电阻,因此事实上对于传输电路而言是不可见的。当线路存在一个高电压涌流时,保护设备打开,提供了一个到地的电阻通道。?两个有用的涌流抑制设备是TVS二极管和气电管。TVS(瞬时电压抑制)二极管在关闭的时候有很小的电容,且反应迅速(10-12 s),并且可以在很大击穿电压范围内使用。气电管要慢一些,但是可以在更高的电压下提供保护。有的连接两者都使用。每一种设备应该连接穿过一个接地跨接或者其他直接与大地地线的低阻抗连接。
参考技术A 1 通信线路的绝缘设计方法RS-232 的大噪声(干扰)容限可使接口可靠工作,避免对由外部加到导线上的噪声引起的数据错误。在一个充满了电子噪声的连接环境中,绝缘可以防止噪声在连接电路之 间的耦合。绝缘通过将一个电路分成一个个独立的块来进行工作。这些块使用光和磁耦合来传送能量和数据,而过滤掉大部分的噪声。绝缘可以隔开地线、数据连接,或者把两者都隔开。地线绝缘使得一个电路对电源震荡和在被附近电路共用的地线中的噪声有免疫能力。在长的连接中,地线绝缘还使得连接对从一端到另一端的接地电位差异有免疫能力。绝缘数据连接避免了噪声在连接和它所连接到的电路之间的耦合。大多数的电路连接使用直接的办法,例如焊点或者诸如螺母接线端或压接这样的机械连接。利用电镀绝缘,一个电路的地线和信号线与其他电路没有电阻通道,或者 直接的接触。相反,电路可以使用光或者磁耦合来传输能量和信号。绝缘还使得每个电路对另一个电路中的噪声具有免疫能力。实现电镀绝缘的一般方法 包括使用变压器来绝缘电源和使用光隔离器来隔离数据。在一个变压器中,在线圈绕组之间的磁耦合使得主线圈中的电流在次线圈中产生电流。光隔离器通过光敏电 阻以及释放和探测可见或者红外波段中的能量的光敏二极管的方式来传输能量。以类似的方式,一个光纤--光学接口将二个电信号转换成在光纤中传输的光信号, 并且在接收器中将光信号转换成电信号。为了进行完全的绝缘,RS-232连接的每一端需要一个RS-232接口使用的一个绝缘的电源,以及一个 绝缘的接口,用来穿过绝缘屏障传输信号。在RS-232连接中,SG是信号地。因为RS-232接收器读取的是信号线和SG之间的电压,一个SG上的噪声 脉冲就能导致接收器误读一个逻辑电平。?在数字逻辑中,+5 V是对信号地以上5 V电压的一个简单说法。当一个电路使用不只一个电源的时候,即使电源的接地线没有相互绝缘,使接地通路保持独立,减少了从一个通路耦合到另一个通路的噪 声。每个电源的接地线可以使用独立的电线和电路板,只要在电源处连接到一起。
含有模拟和数字电路的电路可以为每一种电路提供独立的接地线,只在一个电源附近的点,连接这两条通路。数字地线往往是有噪声的,因为数字输出在它们切换的时候产生了大电流,因此将它们和模拟电路分开就比较合理,这些模拟电路可能对微小的电压变化比较敏感。1.1 安全地线安全地线,或者保护地线,是1个大地地线连接,它通常是一个直径很大的部分埋在地下的铜导线或者镀铜管。1个电源插座上的3根导线中的1根就和安全地线相 连,这个插座的另两根导线是带有220 V交流电压的火线和1根零线,带有220 V交流电的返回电流,零线连接到安全地线。这意味着所有建筑的电路零线通常在入口处有一个与建筑的连接。?安全地线在出现故障的情况下提供了一 个对地的低阻抗通路。例如,在很多电源中,有1个端点将安全地线和电源的底盘相连。如果底盘没有接地并且1根松散的导线或者元件故障导致1个电压源和底盘 相接触,这个底盘就可能携带高电压。如果底盘接地了,电流就会沿着这个低阻抗通路流向大地直到保险丝熔断,电路断开。? ??? TIA/EIA-232标准中,有一个DCE可以有1个可移动的跨接来连接SG和安全地线。实际上,DCE和DTE上的SG线经常和一个安全地线相连。1.2 大地地线?一个安全地线是一个大地地线。因为任何电气电路可以连接到大地地线,所以它往往不是一个安静的、稳定的参考,相反它可以携带大量的各种类型的噪声。可以产 生接地噪声的因素包括设备开关切换、电源系统波动、电路故障、雷击或者任何引起电流波动的事件。噪声可以表现为倾角,尖峰脉冲,60 Hz振动,或者任何形式的磁、电场变化。不同位置的大地地线相互之间可能有电气连接,也可能没有。它们是否相连,以及接地电压变化多大,部分取决于在接地线连接之间的介质的导电性能的好坏。1.3 共用接地线的影响如果一个RS-232连接的两端共享一个共用的大地地线,并且SG线也接到安全地线,从所有源头来的接地电流将会寻找阻抗最低的通路:大地地线或者SG 线。这种情况,有多个返回通路,被称作一个接地回路,显然这不是所希望的。如果两台设备处在不同的建筑内部,使用不同的电源系统,SG有可能比其他通路有 更小的阻抗,从其他源头来的接地电流就可能在连接的接地线上找到它们的通路,这会导致连接中的一个有噪声的接地线。一个有绝缘的接地线的连接就避免了这个 问题。
2 电源地线的设计应用一个绝缘的接口要求为这个绝缘屏障的每一端提供一个电源。图2显示了两个绝 缘的RS-232接口。每个接口使用一个双电源,如图1所示。在这个电源中一个变压器将220 V交流电转变成两个次级线圈中的低电压。一个线圈为计算机或者其他连接到光隔离器的设备端的电路提供电压。另一个线圈为RS-232接口提供电压。每个电 源有它自己的接地线,并且这些接地线必须和一个大地地线、底盘或者信号地线没有共同的连接。这个接口可以使用两个完全分开的电源或者输出没有共享一个通用 地线的电池,而不是有两个线圈的一个电源。如何掌握一个直流电源是否与大地地线绝缘了呢?在大多数用线电压供电的直流电源中,一个变压器将线电压降压到一 个较低的数值,其他元件整流、过滤和调节这个电压的输出到一个稳定的直流电压值。在变压器的主线圈和副线圈之间需要的唯一的连接是主线圈中有电流流动时产 生的磁耦合。这样,这个变压器就能够将电源输出与线电压导线和安全地线绝缘。实际上,有的数字电路电源的输出没有连接到安全地线。在输出端,因为电压很 低,稳压器限制了电流,如果电路试图产生大的电流,一根保险丝就将电路断开。??在其他电源中,输出的接地末端连接到一个安全地,打破了这个绝缘。结果就是和其他还连接到安全地或者大地地线的电路的共享接地线。即使是这些电路处于不同的建筑中或者相距数千英尺,它们之间也可能存在一个连接。?有两线电源插座的电源可能看上去没有安全地线连接,但是零线在外接电路插入电源的时候,是连接到安全地线的。这个电源的输出只有在它的接地线没有和零线相连的时候才是绝缘的。 ?对于含有变压器的电源而言,可以用一个欧姆表来查看这个输出是否和安全地线绝缘。利用电源,量测在电源的安全地和这个直流输出的接地线末端之间的阻抗。如果这个欧姆表显示有连接,就表示没有绝缘。在电源内部、零线和安全地线应该没有连接。也可以用欧姆表验证这一点。?
有的电源不使用变压器,它们仅仅是直接整流,降低和过滤线电压。在这种情况下,输出就没有与大地地线绝缘。即使是电源插座没有安全地线引脚,在外接电路插入电源的时候,零线也是连接到安全地线的。?3 采用光电隔离器光隔离器穿过一个隔离的屏障来传输信号。一个光隔离器由一个与光敏电阻耦合的发光 二极管构成。流过发光二极管的电流使得它以可见光或者红外线的方式释放能量。这些能量将这个光敏电阻打开,导致在这个电阻的发射极和集电极之间的低阻抗。 这个发光二极管的基极可以留着没有连接。从基极到发射极加入一个电阻可以导致更快的开关速度,但是输出电流更低。?图2的接口使用了6N1398光隔离器,它是设计用来和LSTTL逻辑直接连接的。它们的增益很高达400%,但一个发光二极管的电流只有0.5 mA。在TTL到RS-232电路中,在74LSl4转换器的引脚3的一个逻辑低电平使得电流流过这个发光二极管,这就打开了相应的光敏电阻,使得它的集 电极处于低电平。这个MAX233将这个信号反向,然后发送一个正的RS-232电压。在74LSl4引脚3的逻辑高电平关闭这个发光二极管和光敏电阻。MAX233位于引脚2的内部上拉电阻产生一个负的RS-232电压。?光隔离器在另一个方向上也是以类似的方式工作。一个负的RS-232输入使得MAX233输出一个逻辑高电平。这个逻辑高电平将发光二极管和光敏电阻打 开,导致在74LSl4的引脚1的逻辑低电平和引脚2的逻辑高电平。一个正的RS-232输入导致MAX233输出一个逻辑低电平。这个逻辑低电平关闭这 个发光二极管和光敏电阻。一个上拉电阻将74LSl4的引脚l拉到高电平,导致在引脚2处出现逻辑低电平。?RS-232到RS-232电路显 示了怎样通过使用一个RS-232输出来直接驱动一个发光二极管来绝缘一个现有的,未绝缘的RS-232接口。当RS-232电压为正的时候,这个发光二 极管打开,并且这个绝缘的RS-232输出也是正的。当这个未绝缘的输出为负的时候,这个发光二极管关闭,并且一个二极管将这个电压限制在大约-0?7 V。在另一个方向上,电路类似于它上边的电路,除了因为这个未绝缘RS-232已经将信号反向,因而不需要一个LS74系列的反向器以外。
对于 最底下电路的VCCl,如果没有其他用途的话,可以在DTR或者RTS使用一个正的输出。这个电路在VCCl这一边的电缆应该较短。光敏电阻的开关时间是 几微秒,这个时间长度不会在数据传输速度为?20 kb/s?或者更低的时候导致任何问题。对于更快的波特率,应该寻找一个开关时间为这个位宽度的1/10或者更短的发光二极管。?另一个实现绝缘接口的方法是为接口的RS-232-端使用一个独立的、绝缘的+12 V电源。这也使能够使用较便宜的1488/9驱动器和接收器。?此外,可以选用Max252接口,Max252是一个在一个单一的封装里的完整的、绝缘的RS-232接口。这个芯片包括一个石英谐振器和一个微型的变压器,这个变压器从芯片的5 V电源产生一个隔离的电源。它还有两个光隔离的驱动器/接收器对。?绝缘连接的另一种方式是使用光纤电缆来取代铜导线。光纤有很多优点,它们对接地噪声和电磁干扰有抵抗力,并且自身不产生电磁干扰。光纤电缆往往可以在1~2.5 mil之后才需要使用转发器。?4 电涌保护设计?电涌保护是使电路免受噪声或者破坏性电压和电流攻击的有效方法。理想的电涌保护应该吸收所有处在连接操作范围之外的电压和电流,而不在任何方面限制连接的传输。在实际工程应用中,可在连接中添加电容,以避免由于电压波动而造成的不良影响,因此也限制了最大的波特率。?在正常的操作中,这个保护设备表现出很高的电阻,因此事实上对于传输电路而言是不可见的。当线路存在一个高电压涌流时,保护设备打开,提供了一个到地的电阻通道。?两个有用的涌流抑制设备是TVS二极管和气电管。TVS(瞬时电压抑制)二极管在关闭的时候有很小的电容,且反应迅速(10-12 s),并且可以在很大击穿电压范围内使用。气电管要慢一些,但是可以在更高的电压下提供保护。有的连接两者都使用。每一种设备应该连接穿过一个接地跨接或者其他直接与大地地线的低阻抗连接。
参考技术B RS232抗干扰指南
1 通信线路的绝缘设计方法RS-232 的大噪声(干扰)容限可使接口可靠工作,避免对由外部加到导线上的噪声引起的数据错误。在一个充满了电子噪声的连接环境中,绝缘可以防止噪声在连接电路之 间的耦合。绝缘通过将一个电路分成一个个独立的块来进行工作。这些块使用光和磁耦合来传送能量和数据,而过滤掉大部分的噪声。绝缘可以隔开地线、数据连接,或者把两者都隔开。地线绝缘使得一个电路对电源震荡和在被附近电路共用的地线中的噪声有免疫能力。在长的连接中,地线绝缘还使得连接对从一端到另一端的接地电位差异有免疫能力。绝缘数据连接避免了噪声在连接和它所连接到的电路之间的耦合。大多数的电路连接使用直接的办法,例如焊点或者诸如螺母接线端或压接这样的机械连接。利用电镀绝缘,一个电路的地线和信号线与其他电路没有电阻通道,或者 直接的接触。相反,电路可以使用光或者磁耦合来传输能量和信号。绝缘还使得每个电路对另一个电路中的噪声具有免疫能力。实现电镀绝缘的一般方法 包括使用变压器来绝缘电源和使用光隔离器来隔离数据。在一个变压器中,在线圈绕组之间的磁耦合使得主线圈中的电流在次线圈中产生电流。光隔离器通过光敏电 阻以及释放和探测可见或者红外波段中的能量的光敏二极管的方式来传输能量。以类似的方式,一个光纤--光学接口将二个电信号转换成在光纤中传输的光信号, 并且在接收器中将光信号转换成电信号。为了进行完全的绝缘,RS-232连接的每一端需要一个RS-232接口使用的一个绝缘的电源,以及一个 绝缘的接口,用来穿过绝缘屏障传输信号。在RS-232连接中,SG是信号地。因为RS-232接收器读取的是信号线和SG之间的电压,一个SG上的噪声 脉冲就能导致接收器误读一个逻辑电平。?在数字逻辑中,+5 V是对信号地以上5 V电压的一个简单说法。当一个电路使用不只一个电源的时候,即使电源的接地线没有相互绝缘,使接地通路保持独立,减少了从一个通路耦合到另一个通路的噪 声。每个电源的接地线可以使用独立的电线和电路板,只要在电源处连接到一起。
含有模拟和数字电路的电路可以为每一种电路提供独立的接地线,只在一个电源附近的点,连接这两条通路。数字地线往往是有噪声的,因为数字输出在它们切换的时候产生了大电流,因此将它们和模拟电路分开就比较合理,这些模拟电路可能对微小的电压变化比较敏感。1.1 安全地线安全地线,或者保护地线,是1个大地地线连接,它通常是一个直径很大的部分埋在地下的铜导线或者镀铜管。1个电源插座上的3根导线中的1根就和安全地线相 连,这个插座的另两根导线是带有220 V交流电压的火线和1根零线,带有220 V交流电的返回电流,零线连接到安全地线。这意味着所有建筑的电路零线通常在入口处有一个与建筑的连接。?安全地线在出现故障的情况下提供了一 个对地的低阻抗通路。例如,在很多电源中,有1个端点将安全地线和电源的底盘相连。如果底盘没有接地并且1根松散的导线或者元件故障导致1个电压源和底盘 相接触,这个底盘就可能携带高电压。如果底盘接地了,电流就会沿着这个低阻抗通路流向大地直到保险丝熔断,电路断开。? ??? TIA/EIA-232标准中,有一个DCE可以有1个可移动的跨接来连接SG和安全地线。实际上,DCE和DTE上的SG线经常和一个安全地线相连。1.2 大地地线?一个安全地线是一个大地地线。因为任何电气电路可以连接到大地地线,所以它往往不是一个安静的、稳定的参考,相反它可以携带大量的各种类型的噪声。可以产 生接地噪声的因素包括设备开关切换、电源系统波动、电路故障、雷击或者任何引起电流波动的事件。噪声可以表现为倾角,尖峰脉冲,60 Hz振动,或者任何形式的磁、电场变化。不同位置的大地地线相互之间可能有电气连接,也可能没有。它们是否相连,以及接地电压变化多大,部分取决于在接地线连接之间的介质的导电性能的好坏。1.3 共用接地线的影响如果一个RS-232连接的两端共享一个共用的大地地线,并且SG线也接到安全地线,从所有源头来的接地电流将会寻找阻抗最低的通路:大地地线或者SG 线。这种情况,有多个返回通路,被称作一个接地回路,显然这不是所希望的。如果两台设备处在不同的建筑内部,使用不同的电源系统,SG有可能比其他通路有 更小的阻抗,从其他源头来的接地电流就可能在连接的接地线上找到它们的通路,这会导致连接中的一个有噪声的接地线。一个有绝缘的接地线的连接就避免了这个 问题。
2 电源地线的设计应用一个绝缘的接口要求为这个绝缘屏障的每一端提供一个电源。图2显示了两个绝 缘的RS-232接口。每个接口使用一个双电源,如图1所示。在这个电源中一个变压器将220 V交流电转变成两个次级线圈中的低电压。一个线圈为计算机或者其他连接到光隔离器的设备端的电路提供电压。另一个线圈为RS-232接口提供电压。每个电 源有它自己的接地线,并且这些接地线必须和一个大地地线、底盘或者信号地线没有共同的连接。这个接口可以使用两个完全分开的电源或者输出没有共享一个通用 地线的电池,而不是有两个线圈的一个电源。如何掌握一个直流电源是否与大地地线绝缘了呢?在大多数用线电压供电的直流电源中,一个变压器将线电压降压到一 个较低的数值,其他元件整流、过滤和调节这个电压的输出到一个稳定的直流电压值。在变压器的主线圈和副线圈之间需要的唯一的连接是主线圈中有电流流动时产 生的磁耦合。这样,这个变压器就能够将电源输出与线电压导线和安全地线绝缘。实际上,有的数字电路电源的输出没有连接到安全地线。在输出端,因为电压很 低,稳压器限制了电流,如果电路试图产生大的电流,一根保险丝就将电路断开。??在其他电源中,输出的接地末端连接到一个安全地,打破了这个绝缘。结果就是和其他还连接到安全地或者大地地线的电路的共享接地线。即使是这些电路处于不同的建筑中或者相距数千英尺,它们之间也可能存在一个连接。?有两线电源插座的电源可能看上去没有安全地线连接,但是零线在外接电路插入电源的时候,是连接到安全地线的。这个电源的输出只有在它的接地线没有和零线相连的时候才是绝缘的。 ?对于含有变压器的电源而言,可以用一个欧姆表来查看这个输出是否和安全地线绝缘。利用电源,量测在电源的安全地和这个直流输出的接地线末端之间的阻抗。如果这个欧姆表显示有连接,就表示没有绝缘。在电源内部、零线和安全地线应该没有连接。也可以用欧姆表验证这一点。?
有的电源不使用变压器,它们仅仅是直接整流,降低和过滤线电压。在这种情况下,输出就没有与大地地线绝缘。即使是电源插座没有安全地线引脚,在外接电路插入电源的时候,零线也是连接到安全地线的。?3 采用光电隔离器光隔离器穿过一个隔离的屏障来传输信号。一个光隔离器由一个与光敏电阻耦合的发光 二极管构成。流过发光二极管的电流使得它以可见光或者红外线的方式释放能量。这些能量将这个光敏电阻打开,导致在这个电阻的发射极和集电极之间的低阻抗。 这个发光二极管的基极可以留着没有连接。从基极到发射极加入一个电阻可以导致更快的开关速度,但是输出电流更低。?图2的接口使用了6N1398光隔离器,它是设计用来和LSTTL逻辑直接连接的。它们的增益很高达400%,但一个发光二极管的电流只有0.5 mA。在TTL到RS-232电路中,在74LSl4转换器的引脚3的一个逻辑低电平使得电流流过这个发光二极管,这就打开了相应的光敏电阻,使得它的集 电极处于低电平。这个MAX233将这个信号反向,然后发送一个正的RS-232电压。在74LSl4引脚3的逻辑高电平关闭这个发光二极管和光敏电阻。MAX233位于引脚2的内部上拉电阻产生一个负的RS-232电压。?光隔离器在另一个方向上也是以类似的方式工作。一个负的RS-232输入使得MAX233输出一个逻辑高电平。这个逻辑高电平将发光二极管和光敏电阻打 开,导致在74LSl4的引脚1的逻辑低电平和引脚2的逻辑高电平。一个正的RS-232输入导致MAX233输出一个逻辑低电平。这个逻辑低电平关闭这 个发光二极管和光敏电阻。一个上拉电阻将74LSl4的引脚l拉到高电平,导致在引脚2处出现逻辑低电平。?RS-232到RS-232电路显 示了怎样通过使用一个RS-232输出来直接驱动一个发光二极管来绝缘一个现有的,未绝缘的RS-232接口。当RS-232电压为正的时候,这个发光二 极管打开,并且这个绝缘的RS-232输出也是正的。当这个未绝缘的输出为负的时候,这个发光二极管关闭,并且一个二极管将这个电压限制在大约-0?7 V。在另一个方向上,电路类似于它上边的电路,除了因为这个未绝缘RS-232已经将信号反向,因而不需要一个LS74系列的反向器以外。
对于 最底下电路的VCCl,如果没有其他用途的话,可以在DTR或者RTS使用一个正的输出。这个电路在VCCl这一边的电缆应该较短。光敏电阻的开关时间是 几微秒,这个时间长度不会在数据传输速度为?20 kb/s?或者更低的时候导致任何问题。对于更快的波特率,应该寻找一个开关时间为这个位宽度的1/10或者更短的发光二极管。?另一个实现绝缘接口的方法是为接口的RS-232-端使用一个独立的、绝缘的+12 V电源。这也使能够使用较便宜的1488/9驱动器和接收器。?此外,可以选用Max252接口,Max252是一个在一个单一的封装里的完整的、绝缘的RS-232接口。这个芯片包括一个石英谐振器和一个微型的变压器,这个变压器从芯片的5 V电源产生一个隔离的电源。它还有两个光隔离的驱动器/接收器对。?绝缘连接的另一种方式是使用光纤电缆来取代铜导线。光纤有很多优点,它们对接地噪声和电磁干扰有抵抗力,并且自身不产生电磁干扰。光纤电缆往往可以在1~2.5 mil之后才需要使用转发器。?4 电涌保护设计?电涌保护是使电路免受噪声或者破坏性电压和电流攻击的有效方法。理想的电涌保护应该吸收所有处在连接操作范围之外的电压和电流,而不在任何方面限制连接的传输。在实际工程应用中,可在连接中添加电容,以避免由于电压波动而造成的不良影响,因此也限制了最大的波特率。?在正常的操作中,这个保护设备表现出很高的电阻,因此事实上对于传输电路而言是不可见的。当线路存在一个高电压涌流时,保护设备打开,提供了一个到地的电阻通道。?两个有用的涌流抑制设备是TVS二极管和气电管。TVS(瞬时电压抑制)二极管在关闭的时候有很小的电容,且反应迅速(10-12 s),并且可以在很大击穿电压范围内使用。气电管要慢一些,但是可以在更高的电压下提供保护。有的连接两者都使用。每一种设备应该连接穿过一个接地跨接或者其他直接与大地地线的低阻抗连接。
遇到失意伤心事,多想有一个懂你的人来指点迷津,因他懂你,会以我心,换你心,站在你的位置上思虑,为你排优解难。一个人,来这世间,必须懂得一些人情事理,才能不断成长。就像躬耕于陇亩的农人,必须懂得土地与种子的情怀,才能有所收获。一个女子,一生所求,莫过于找到一个懂她的人,执手白头,相伴终老。即使芦花暖鞋,菊花枕头,也觉温暖;即使粗食布衣,陋室简静,也觉舒适,一句"懂你",叫人无怨无悔,愿以自己的一生来交付。懂得是彼此的欣赏,是灵魂的轻唤,是惺惺相惜,是爱,是暖,是彼此的融化;是走一段很远的路,蓦然回首却发现,我依然在你的视线里;是回眸相视一笑的无言;是一条偏僻幽静的小路,不显山,不露水,路边长满你喜爱的花草,静默无语却馨香盈怀,而路的尽头,便是通达你心灵的小屋......瑟瑟严冬,窗外雪飘,絮絮自语说了这多,你可懂我了吗?若你知晓,无需说话,只报一声心灵的轻叹,那,便是我的花开春暖。你相不相信,人生有一种念想,不求奢华不求结果,不求你在我身边,只愿有一种陪伴暖在心灵,那,便是懂得。有人懂得是一种幸福,懂得别人是一种襟怀,互为懂得是一种境界。懂得,真好!

5.9
百度文库VIP限时优惠现在开通,立享6亿+VIP内容
立即获取
RS232抗干扰指南
1 通信线路的绝缘设计方法
RS-232 的大噪声(干扰)容限可使接口可靠工作,避免对由外部加到导线上的噪声引起的数据错误。在一个充满了电子噪声的连接环境中,绝缘可以防止噪声在连接电路之 间的耦合。绝缘通过将一个电路分成一个个独立的块来进行工作。这些块使用光和磁耦合来传送能量和数据,而过滤掉大部分的噪声。
绝缘可以隔开地线、数据连接,或者把两者都隔开。地线绝缘使得一个电路对电源震荡和在被附近电路共用的地线中的噪声有免疫能力。在长的连接中,地线绝缘还使得连接对从一端到另一端的接地电位差异有免疫能力。绝缘数据连接避免了噪声在连接和它所连接到的电路之间的耦合。
第 1 页
大多数的电路连接使用直接的办法,例如焊点或者诸如螺母接线端或压接这样的机械连接。利用电镀绝缘,一个电路的地线和信号线与其他电路没有电阻通道,或者 直接的接触。相反,电路可以使用光或者磁耦合来传输能量和信号。绝缘还使得每个电路对另一个电路中的噪声具有免疫能力。
参考技术C 如何屏蔽rs232针脚17未连接引起的告警?
当数据输出接口不能正常工作时,一般有以下几个情况及处理方法:
1. 输入出数据操作时,系统没有反应。
(1)请检查系统工作方式对不对,请把系统的工作方式置于 EDIT 方式,且打开程序保护键;或者在输入参数时,也可以置于急停状态。
(2)请按 FANUC 出厂时数据单,重新输入功能选择参数(0 系统的 900 号以后,16 系统类的 9900 号以后的参数,15 系统类的 9100 号参数)。
(3)检查系统是否处于 RESET 状态。
参考技术D 当数据输出接口不能正常工作时,一般有以下几个情况及处理方法:
  1. 输入出数据操作时,系统没有反应。
  (1)请检查系统工作方式对不对,请把系统的工作方式置于 EDIT 方式,且打开程序保护键;或者在输入参数时,也可以置于急停状态。
  (2)请按 FANUC 出厂时数据单,重新输入功能选择参数(0 系统的 900 号以后,16 系统类的 9900 号以后的参数,15 系统类的 9100 号参数)。
  (3)检查系统是否处于 RESET 状态。

MySQL连接池引起的FullGC问题分析

问题现象

在某个工作日,突然收到线上的服务告警,有大量的请求延时产生,查看线上服务发现基本上都是获取数据库连接超时,而且影响时间只有3~4秒钟,服务又恢复了正常。

隔了几分钟之后,又出现了大量的告警,还是影响3~4秒后又恢复正常。由于我们是底层服务,被重多的上层服务所依赖,这么频繁的异常波动已经严重影响到了业务使用。开始排查问题

排查过程

DB的影响?

  • 当第一次告警产生时,第一反应是可能上层服务有大量的接口调用,并且涉及到一些复杂的SQL查询导致数据库连接数不够用,但是在分析了接口调用情况后发现异常前后的请求并没有明显的变化,排除突发流量造成的影响

  • 查询DB情况,负载良好,无慢查询,排除DB造成的影响

容器或JVM的影响?

排除了DB的影响之后,再往上排查容器的影响, 我们再次回过头看异常告警,发现在每一波告警的时间段内,基本上都是同一个容器IP所产生。

这个时候基本上已经有80%的概率是GC的问题了。查询告警时间段内的容器CPU负载正常。再看JVM的内存和GC情况,发现整个内存使用曲线是像下面这样:

Heap

Old Gen

MySQL连接池引起的FullGC问题分析

从上图可以发现内存中存在长时间被引用,无法被YongGC所回收的对象,并且对象大小一直在增长。直到Old Gen被堆满之后触发Full GC后对象才会回收。

临时措施

现在问题已经找到了,到目前为止只是3台实例触发了FullGC,但是在查看其它实例内存使用情况时,发现基本上所有的实例Old Gen都快到达临界点了。

所以临时解决方案是保留一台实例现场,滚动重启其它所有的实例,避免大量的实例同时进行FullGC。否则很可能导致服务雪崩。

原本服务是有设置jvm监控告警的,理论上来说当内存使用率达到一定值时会有告警通知,但是由于一次服务迁移导致告警配置失效,没有提前发现问题。

问题分析

什么对象没有被回收?

目前了解到的情况:内存无法被YoungGC回收,且无限增加,只有FullGC才能够回收这批对象

jmap -histo:live pid
MySQL连接池引起的FullGC问题分析

先简单在线上观察了一波,排第2的HashMap$Node看起来比较异常,但是看不出更详细的情况了。最好的办法还是将内存快照dump出来,使用MAT分析一波

jmap -dump:format=b,file=filename pid 
MySQL连接池引起的FullGC问题分析

使用MAT打开之后,可以发现很明显的问题:

class com.mysql.cj.jdbc.AbandonedConnectionCleanupThread

这个类占用了80%以上的内存,那么这个类是干嘛的呢?看类名就知道,应该是MySQL Driver中用来清理过期连接的一个线程。让我们看一下源码:

MySQL连接池引起的FullGC问题分析

这个类是一个单例,会且仅会开一个线程,用来清理那些没有被显式的关闭的数据库连接。

可以看到这个类里面维护了一个Set

private static final Set<ConnectionFinalizerPhantomReference> connectionFinalizerPhantomRefs = ConcurrentHashMap.newKeySet();

对应我们上面看到的内存占用率排第二的HashMap$Node,基本上可以确定大概率是这里存在内存泄露了。在MAT上使用list_object确认一发:

MySQL连接池引起的FullGC问题分析

果然没错,罪魁祸首找到了!那么它里面存的是啥东西呢?

为什么一直增长且无法被YoungGC回收?

看名字ConnectionFinalizerPhantomReference 我们可以猜到它里面保存的应该是数据库连接的phantom引用

什么是phantom reference? 当一个对象只有phantom reference引用时,则会在虚拟机GC时被回收,同时会将phantom reference的对象放入一个referenceQueue中。

让我们来跟踪源码确认一下

MySQL连接池引起的FullGC问题分析
MySQL连接池引起的FullGC问题分析

果然是PhantomReference,里面存放的是创建的MySQL连接,看一下是在哪里被放进来的:

MySQL连接池引起的FullGC问题分析
MySQL连接池引起的FullGC问题分析

可以看到,每次创建一个新的数据库连接时,都会将创建的连接包装成PhantomReference后放入connectionFinalizerPhantomRefs中,然后这个清理线程会在一个无限循环中,获取referenceQueue中的连接并关闭

只有在 connection对象 没有其它的引用,仅存在phantom reference时,才能够被GC,并且放入referenceQueue中

为什么Connection会无限增长?

现在问题找到了,数据库连接被创建之后,则会放入connectionFinalizerPhantomRefs中,但是由于某种原因,连接前期正常使用,经过了多次minor GC都没有被回收,晋升到了老年代。但是一段时间过后,由于某种原因连接失效,导致连接池又新建了连接。

我们项目用的数据库连接池是Druid,以下为连接池配置:

MySQL连接池引起的FullGC问题分析

可以看到是设置了keepAlive,且minEvictableIdleTimeMillis设置的是5分钟,连接初始化之后,在DB请求数没有频繁的波动时,连接池应该都是维护着最小的30个连接,且会在连接空闲时间超过5分钟时进行一次keepAlive操作:

MySQL连接池引起的FullGC问题分析
MySQL连接池引起的FullGC问题分析

理论上来说,连接池是不会频繁的创建连接的,除非有活跃连接很少,且存在波动,并且keepAlive操作没有生效,在连接池进行keepAlive操作时,MySQL连接就已经失效,那么则会丢弃这个无效连接,下次再重建。

下面就是验证这个猜想,我们首先查看我们的活跃连接数,发现在大部分时候,单实例的数据库的活跃连接数都在3~20个左右波动,并且业务上还存在定时任务,每隔30分钟~1个小时会有大量的DB请求。

Druid既然有每隔5分钟有心跳行为,那为什么连接还会失效?最大的可能是MySQL服务端的操作,MySQL默认服务端的wait_timeout是8小时,难道是有变更对应的配置?

show global variables like '%timeout%'
MySQL连接池引起的FullGC问题分析

果然,数据库的超时时间被设置成了5分钟!那么问题就很明显了

结论

  • 空闲连接依赖于Druid的keepAlive定时任务来进行心跳检测和keepAlive,定时任务默认每60秒检测一次,并且只有当连接的空闲时间大于minEvictableIdleTimeMillis时才会进行心跳检测。

  • 由于minEvictableIdleTimeMillis被设置为了5分钟,理论上空闲连接会在5分钟±60秒的时间区间内进行心跳检测。但是由于MySQL服务端的超时时间只有5分钟,所以大概率当Druid进行keepAlive操作时连接已经失效了。

  • 由于数据库的活跃连接是波动的,且min-idle设置的是30,活跃连接处于波峰时,需要创建大量的连接,并且维护在连接池中。但是当活跃降到低谷时,大量的连接由于keepAlive失败,从连接池中被移除。周而复始。

  • 每次创建连接时,又会将Connection对象放入connectionFinalizerPhantomRefs中,并且由于创建完之后连接是处于活跃状态,短时间内不会被miniorGC所回收,直至晋升到老年代。导致这个SET越来越大。

解决

知道问题的产生原因,要解决就很简单了,将minEvictableIdleTimeMillis设置为3分钟,保证keepAlive的有效性,避免一直重建连接即可。

源于:https://juejin.im/post/6844904201156296718


          
            
            
          
MySQL连接池引起的FullGC问题分析
给个[在看],是对IT老哥最大的支持


MySQL连接池引起的FullGC问题分析
IT老哥 发起了一个读者讨论 欢迎留言 精选讨论内容