数控车床的特点及功能
* h0 m3 O. Z7 ?! E: @数控车床的工艺装备
- k$ h9 t1 E) b5 i4 o/ r6 o3 i零件图纸的数据处理
, U+ K1 u; ~/ O1 ^' ~3 p$ r数控车削加工工艺处理+ t' a; W O( b9 D9 ?+ t% _: r3 x
数控车削加工程序编制 ) p8 z/ p; t. V+ @: \0 f
数控车床的分类与结构特点9 E# S$ B4 x. }8 ?; e; o+ h' d
数控机床的分类3 A& K) ^! N8 _3 b+ g! J/ Q
按车床主轴位置分类8 D' I& |3 j; }( H# }
卧式数控车床
+ d/ E, F n, n 立式数控车床
: ?! O2 ?6 E& s6 o( w对刀具的要求
( J1 M& y1 E- u( ^- }! m 数控车床能兼作粗、精加工。为使粗加工能以较大切削深度、较大进给速度地加工,要求粗车刀具强度高、耐用度好。精车首先是保证加工精度,所以要求刀具的精度高、耐用度好。为减少换刀时间和方便对刀,应可能多地采用机夹刀。
% V h* Q8 r! @8 I- i2 t5 G2 X 数控车床还要求刀片耐用度的一致性好,以便于使用刀具寿命管理功能。在使用刀具寿命管理时,刀片耐用度的设定原则是以该批刀片中耐用度最低的刀片作为依据的。在这种情况下,刀片耐用度的一致性甚至比其平均寿命更重要。( Y! d1 ~3 U' ?3 d; \! b
刀片可分为正型和负型两种基本类型。正型刀片:对于内轮廓加工,小型机床加工,工艺系统刚性较差和工件结构形状较复杂应优先选择正型刀片。负型刀片:对于外圆加工,金属切除率高和加工条件较差时应优先选择负型刀片
. U! b3 Z! V, G8 ^切削用量的确定' f2 f2 h. @; L! A
切削用量包括主轴转速(切削速度)、背吃刀量和进给量。对于不同的加工方法,需要选择不同的切削用量,并应编入程序单内。" u/ ]8 ]; S' a4 H5 f1 O3 l
合理选择切削用量的原则是,粗加工时,一般以提高生产率为主,但也应考虑经济性和加工成本,通常选择较大的背吃刀量和进给量,采用较低的切削速度;半精加工和精加工时,应在保证加工质量的前提下,兼顾切削效率、经济性和加工成本,通常选择较小的背吃刀量和进给量,并选用切削性能高的刀具材料和合理的几何参数,以尽可能提高切削速度。具体数值应根据机床说明书、切削用量手册并结合经验而定。- n/ O0 U' z% @ r
(1) 背吃刀量阿ap (mm),亦称切削深度。主要根据机床、夹具、刀具和工件的刚度来决定。在刚度允许的情况下,应以最少的进给次数切除加工余量,最好一次切除余量,以便提高生产效率。精加工时,则应着重考虑如何保证加工质量,并在此基础上尽量提高生产率。在数控机床上,精加工余量可小于普通机床,一般取(0.2~0.5) mm
* _/ I+ z% n0 Q- ?式中:: C' @1 f ^* g3 e: J
vc————切削速度,由刀具的耐用度决定;: U! |) k' B3 b5 l
D——工件或刀具直径(mm)。
: l- M5 [- {' Q1 Q$ D 主轴转速n要根据计算值在机床说明书中选取标准值,并填入程序单中。
% @# p7 _/ e7 ]' {(3) 进给量(进给速度)f(mm/min或mm/r)是数控机床切削用量中的重要参数,主要根据零件的加工精度和表面粗糙度要求以及刀具、工件材料性质选取。最大进给量则受机床刚度和进给系统的性能限制并与脉冲当量有关。
) f5 g9 m9 A1 U$ p 当加工精度、表面粗糙度要求高时,进给速度(进给量)应选小些,一般在20~50 mm/min范围内选取。粗加工时,为缩短切削时间,一般进给量就取得大些。工件材料较软时,可选用较大的进给量;反之,应选较小的进给量。1 c2 e, l4 g4 ? I
车、铣、钻等加工方式下的切削用量可参考下表选取。
2 V0 J) R0 w1 ~. V3 ~/ F* {6 U8 {加工坐标系. p7 ^. P2 p0 |$ A4 p% Y+ G
直径编程方式
. G6 T% b+ o' \5 Z% g 进刀和退刀方式 , W4 l2 s! q1 g) W: }- G% Y
数控车削加工包括内外圆柱面的车削加工、端面车削加工、钻孔加工、螺纹加工、复杂外形轮廓回转面的车削加工等,在分析了数控车床工艺装备和数控车床编程特点的基础上,下面将结合FANUC-0T数控系统讨论数控车床基本编程方法。
+ q% D( A* r! J- ?F功能指令用于控制切削进给量。在程序中,有两种使用方法* o g/ h, @0 r) }2 o
每转进给量
6 D; V6 X. C$ W6 B# e/ b" g 编程格式 G95 F~ / M0 H( p* W- S: Y3 @ y
F后面的数字表示的是主轴每转进给量,单位为mm/r
$ Z, N5 Y+ k5 ~# l9 B 例:G95 F0.2 表示进给量为0.2 mm/r
h8 X% t! S" ?9 ^3 z. _ / ^; j& y$ w. x: K4 X
每分钟进给量7 Z$ }; z3 S1 u0 {
编程格式G94 F~
+ K u. v$ Y% `6 V, e/ a) `& s1 `7 ] F后面的数字表示的是每分钟进给量,单位为mm/min
6 ~4 H t" C8 L 例:G94 F100 表示进给量S功能指令用于控制主轴转速
4 N g7 X' j1 N3 J4 A7 }8 n S后面的数字表示主轴转速,单位为r/min。在具有恒线速功能的机床上,S功能指令还有如下作用:
- |5 g3 x/ }* R6 E( c 最高转速限制 m& [* E0 d' ^+ J2 N7 M0 W
编程格式 G50 S~
3 D0 b/ T0 K' s7 j* L0 r% z S后面的数字表示的是最高转速:r/min! z$ r9 a c3 G% |2 ? G. C
例:G50 S3000 表示最高转速限制为3000r/min/ z v/ V2 g E9 y
恒线速控制
* O7 S, v$ G. i) c. a, @0 P 编程格式 G96 S~7 O2 j: T' U v8 n& N1 h Z
S后面的数字表示的是恒定的线速度:m/min。; ]( E2 X0 s( Y2 m( l1 {
例:G96 S150 表示切削线速度控制在150 m/min。7 J7 ]9 m2 v" L" G# e
恒线速取消
. P5 W, i% c3 W& [ 编程格式 G97 S~
9 b. ]- A0 C8 N4 H7 F) J6 V0 K; c S后面的数字表示恒线速度控制取消后的主轴转速,如S未指定,将保留G96的最终值。" d3 {2 X' ~) e" r8 Q# V% \1 ?
例:G97 S3000 表示恒线速控制取消后主轴转速3000 r/min为100mm/min 8 w: p& X" W r, w% ?
T功能指令用于选择加工所用刀具。
( j4 a7 Z6 V8 M, V 编程格式 T~
) U/ s6 k* `" N5 g T后面通常有两位数表示所选择的刀具号码。但也有T后面用四位数字,前两位是刀具号,后两位是刀具长度补偿号,又是刀尖圆弧半径补偿号。 例:T03031 d6 [6 M9 P8 M0 G
表示选用3号刀及3号刀具长度补偿值和刀尖圆弧半径辅助功能字由M地址符及随后的两位数字组成,所以也称为M功能或M指令。它用来指令数控机床的辅助动作及其状态。 0 `, q/ w0 f7 q" e' A" ]
常用的M功能有:5 Z& Q+ c) ^& x. f, ~
M00: 程序暂停,可用NC启动命令(CYCLE START)使 程序继续运行; M01:计划暂停,与M00作用相似,但M01可以用机床“任选停止按钮”选择是否有效; M03:主轴顺时针旋转; M04:主轴逆时针旋转; M05:主轴停止;8 g4 r: [9 a7 ?& D
M06:换刀 M08:冷却液开; M09:冷却液关; M30:程序停止,程序复位到起始位置。
0 ?- U6 |' } N% N补偿值。T0300 表示取消刀具补偿。 / A3 X2 S5 I; k6 Q' s) `* v: T
, ?' a4 i( i, t
编程格式 G50 X~ Z~ 式中X、Z的值是起刀点相对于加工原点的位置,G50使用方法与G92类似。& M! z% o$ c: n
例:如图所示设置加工坐标的程序段如下:G50 X128.7 Z375.1
0 K/ f" e4 I2 {9 Y/ kG00指令命令机床以最快速度运动到下一个目标位置,运动过程中有加速和减速,该指令对运动轨迹没有要求。
{6 Y$ L$ m: b1 e6 R( B 其指令格式:7 n7 U. V0 c6 y
G00 X(U)____ Z(W)____ : S. T! @' \8 A5 ]
因为X轴和Z轴的进给速率不同,因此机床执行快速运动指令时两轴的合成运动轨迹不一定是直线,因此在使用G00指令时,一定要注意避免刀具和工件及夹具发生碰撞。7 [: y, E! U% S6 P% [( P( Z
如所示的定位指令如下:
9 t# M( d. }5 f- @1 T G50 X200.0 Z263.05 s+ m' f" e! i% q8 R- u( R* p
G00 X40.0 Z212.05 L" g* c, K$ C
或G00 U-160.0 W-51.0 G00指令命令机床以最快速度运动到下一个目标位置,运动过程中有加速和减速,该指令对运动轨迹没有要求。
! ]/ c% a) H9 W, {4 X0 n 其指令格式:
& F" m" `: x; Q0 z G00 X(U)____ Z(W)____
1 L) p8 u; W% ?- u 因为X轴和Z轴的进给速率不同,因此机床执行快速运动指令时两轴的合成运动轨迹不一定是直线,因此在使用G00指令时,一定要注意避免刀具和工件及夹具发生碰撞。
9 ?- n' s+ e" d* R 如所示的定位指令如下:
5 m0 ?! p& u6 q3 @3 k+ j0 s0 z' \ G50 X200.0 Z263.0
% t3 C9 S! N) K p* [8 m" v, p! V+ v6 x G00 X40.0 Z212.0- [% \0 o, O* W" j4 X7 U5 R Q1 M6 |5 p A
或G00 U-160.0 W-51.0 G01指令命令机床刀具以一定的进给速度从当前所在位置沿直线移动到指令给出的目标位置。
- u3 Z6 \4 r6 @9 B; ?- |9 ?7 a7 J 指令格式:
2 O- {1 A/ U3 ^" t/ R G01 X(U)__Z(W)__F ;- w" v$ C7 i# u- c/ F
使用G01指令时可以采用绝对坐标编程,也可采用相对坐标编程。当采用绝对坐编程时,数控系统在接受G01指令后,刀具将移至坐标值为X、Z的点上;当采用相对坐编程时,刀具移至距当前点距离为U、W值的点上。如图所示的直线运动指令如下:
& L' H, I1 u* r, C \7 _5 t G01 X40.0 Z20. F0.2;7 u2 @, ~$ L: D0 a# [
绝对值指令编程
* \% t* U% z j' u% t) m G01 U20.0 W-25.9 F0.2;( F% ^/ f* h( s" d
相对值指令编程; g& d Z7 ?5 k2 L( h8 o
圆弧插补指令命令刀具在指定平面内按给定的F进给速度作圆弧插补运动,用于加工圆弧轮廓。圆弧插补命令分为顺时针圆弧插补指令G02和逆时针圆弧插补指令G03两种。其指令格式如下:
; E. [& B) U/ w" V0 v9 \; S 顺时针圆弧插补的指令格式: L$ `5 I6 e$ j8 I: W
G02 X(U)____Z(W)____I____K____F____;
+ w9 f& j7 ]2 ?6 ?/ y M. Y G02 X(U)____Z(W)___R___ F____;! \! { }1 n) u+ R+ `
逆时针圆弧插补的指令格式:. u1 S' V$ u6 A4 Z' Z
G03 X(U)____Z(W)____ I____K____F____;;
0 }4 S5 |: a; r- C+ k G03 X(U)____Z(W)___R___ F____;
6 ?' X, b) A/ _1 _$ x# H 使用圆弧插补指令,可以用绝对坐标编程,也可以用相对坐标编程。绝对坐标编程时,X、Z是圆弧终点坐标值;增量编程时,U、W是终点相对始点的距离。圆心位置的指定可以用R,也可以用I、K,R为圆弧半径值;I、K为圆心在X轴和Z轴上相对于圆弧起点的坐标增量; F为沿圆弧切线方向的进给率或进给速度。: X9 O8 y3 @- D& ]
规定圆心角α≤180°时,用“+R”表示;α> 180°时,用“-R”。+ Y0 z% N) s& z9 Y5 m6 W
注意:R编程只适于非整圆的圆弧插补的情况,不适于整圆加工 / D6 G" b/ x: _2 D$ K1 A
如图所示的圆弧从起点到终点为顺时针方向,其走刀指令可编写如下:
* U5 D: L/ R3 d- w/ Q+ L: _ G02 X50.0 Z30.0 I25.0 F0.3;
5 `" t; V+ K& \& p" y7 W" } 绝对坐标,直径编程,切削进给率0.3mm/r" U d8 N! [" n' s
G02 U20.0 W-20.0 I25.0 F0.3;& R1 [" F: t' d' B% J0 h! U$ A
相对坐标,直径编程,切削进给率0.3mm/r" l3 g) n/ ?9 {" Q! ^
G02 X 50. 0 Z30.0 R25.0 F0.3;5 _$ Z N- z( L1 \7 N% L7 y/ l2 V) n
绝对坐标,直径编程,切削进给率0.3mm/r7 z3 H1 S, C7 p9 o
G02 U20.0 W-20.0 R25.0 F0.3;" [& M% \7 d4 m+ C8 A
相对坐标,直径编程,切削进给率0.3mm/r G04指令用于暂停进给。6 F& b2 b& h( m$ N t! R6 @3 _3 v, [
其指令格式是:, o' g+ `, O. e6 F% i; c
G04 P____或G04 X(U)____8 @2 ]" V9 {# ?9 T2 v7 J5 C
暂停时间的长短可以通过地址X(U)或P来指定。其中P后面的数字为整数,单位是ms;X(U)后面的数字为带小数点的数,单位为s。有些机床,X(U)后面的数字表示刀具或工件空转的圈数。
: }5 @6 C5 |' j9 a: ~) d- i 该指令可以使刀具作短时间的无进给光整加工,在车槽、钻镗孔时使用,也可用于拐角轨迹控制。例如,在车削环槽时,若进给结束立即退刀,其环槽外形为螺旋面,用暂停指令G04可以使工件空转几秒钟,即能将环形槽外形光整圆,例如欲空转2.5s时其程序段为:
; @6 ^) _2 i0 n4 E, |/ m! y: \/ Z G04 X2.5或G04 U2.5或G04 P2500; . V+ l/ W; K( E3 h3 I5 g- G% n
G20表示英制输入
; w" p4 \. O3 f6 b& x5 ~; m& s G21表示米制输入% T2 G& M3 K! Z j3 p
G20和G21是两个可以互相取代的代码
' g K# \& D0 X+ w! P2 G 机床出厂前一般设定为G21状态,机床的各项参数均
' ~, \% H/ x0 [( T$ U) G; [以米制单位设定。
7 o* p0 R; S4 a o3 L 如果一个程序开始用G20指令,则表示程序中相关的1 b5 D+ f! K/ B# Z
一些数据均为英制(单位为英寸)。( b+ ^( n0 `( @# n& L2 _9 x) |
如果程序用G21指令,则表示程序中相关的一些数据7 \, X* _3 [% ]
均为米制(单位为mm)。* m- b2 g3 L$ o
在一个程序内,不能同时使用G20或G21指令,且必
: I0 [8 c9 p1 j- M b须在坐标系确定前指定。
" Y( V- M5 \) r# s: @8 {8 J G20或G21指令断电前后一致,即停电前使用G20或
. h) m6 t+ v1 d8 l! q; [( cG21指令,在下次后仍有效,除非重新设定。 * X% x% M5 E" ]* K0 j. W6 @; _
在数控车削中有两种切削进给模式设置方法,即进给率(每转进给模式)和进给速度(每分钟进给模式)。
+ R2 ^6 |4 a7 C& R( ?1 w 2.6.1 刀具的几何补偿和磨损补偿9 ~* s5 h3 _- I/ H/ K8 P% \0 b& P
如图所示,刀具几何补偿是补偿刀具形状和刀具安装位置与编程时理想刀具或基准刀具的偏移的;刀具磨损补偿则是用于补偿当刀具使用磨损后刀具头部与原始尺寸的误差的。这些补偿数据通常是通过对刀后采集到的,而且必须将这些数据准确地储存到刀具数据库中,然后通过程序中的刀补代码来提取并执行。
6 B, ?# o3 {; S/ z& B刀补指令用T代码表示。常用T代码格式为:T xx xx,即T后可跟4位数,其中前2位表示刀具号,后两位表示刀具补偿号。当补偿号为0或00时,表示不进行补偿或取消刀具补偿。有些系统 T代码格式为: T xx ,即T后可跟2位数,2位数既表示刀具号,同时表示刀具补偿号。7 O8 G7 M0 R6 e& P. J8 c! n6 d) @' d. g
若设定刀具几何补偿和磨损补偿同时有效时,刀补量是两者的矢量和。若使用基准刀具,则其几何补偿位置补偿为零,刀补只有磨损补偿。在图示按基准刀尖编程的情况下,若还没有磨损补偿时,则只有几何位置补偿,?X=?Xj、?Z=?Zj;批量加工过程中出现刀具磨损后,则:?X=?Xj+?Xm、?Z=?Zj+?Zm;而当以刀架中心作参照点编程时,每把刀具的几何补偿便是其刀尖相对于刀架中心的偏置量。因而,第一把车刀:?X=?X1、?Z=?Z1;第二把车刀:?X=?X2、?Z=?Z3。
8 y. f& B7 O/ b数控系统对刀具的补偿或取消刀补都是通过拖板的移动来实现的。对带自动换刀的车床而言,执行T指令时,将先让刀架转位,按前2位数字指定的刀具号选择好刀具后,再按后2位数字对应的刀补地址中刀具位置补偿值的大小来调整刀架拖板位置,实施刀具几何位置补偿和磨损补偿。T代码指令可单独作一行书写,也可跟在移动程序指令的后部。当一个程序行中,同时含有刀补指令和刀具移动指令时,是先执行T代码指令,后执行刀具移动指令。
1 f& m0 P' B2 O" n6 x! q刀尖半径补偿7 T' A' D9 @ @ ^' C
虽然采用尖角车刀对加工及编程都很方便,但由于刀头越尖就越容易磨损,并且当刀具太尖而进给速度又较大时,可明显地感觉出一般的轮廓车削将产生车螺纹的效果,即使减小进给速度,也会影响到加工表面的粗糙度。为此,精车时常将车刀刀尖磨成圆弧过渡刃。采用这样的车刀车内、外圆和端面时,刀尖圆弧不影响加工尺寸和形状,但转角处的尖角肯定是无法车出的,并且在切削锥面或圆弧面时,会造成过切或少切,因此,有必要对此采用刀尖半径补偿来消除误差。3 }( k* C$ Q% }. Q( o* y& k' R' b
如图所示,有刀尖存在时,对刀尖按轮廓线编程加工,即可以得到理想轮廓,不需要考虑刀补;而用圆弧头车刀时,若还按假想刀尖编程加工而又不考虑刀补,则实际切削得到的轮廓将产生误差,只有考虑刀补(人工考虑刀补量进行编程,即以偏移理想轮廓一个刀具半径的轨迹线计算)编程加工后,方可保证切削得到理想轮廓线。当然也可以按照轮廓轨迹编程,再在程序中适当位置加上刀补代码,让机床自动进行刀补。3 x# G" i8 u7 z+ t( f1 j
利用机床自动进行刀尖半径补偿时,需要使用G40、G41、G42指令。# N0 K/ _& v& P( _) U
当系统执行到含T代码的程序指令时,仅仅是从中取得了刀具补偿的寄存器地址号(其中包括刀具几何位置补偿和刀具半径大小),此时并不会开始实施刀尖半径补偿。只有在程序中遇到G41、G42、G40指令时,才开始从刀库中提取数据并实施相应的刀径补偿。
( |4 }8 {* O5 A0 B2 x" J6 @% L G41——刀尖半径左补偿。沿着进给方向看,刀尖位置应在编程轨迹的左边。2 u8 T( M! `% G. D3 G$ ^
G42——刀尖半径右补偿。沿着进给方向看,刀尖位置应在编程轨迹的右边,如图2-41所示。* B$ n' g+ v% M/ [9 J
G40——取消刀尖半径补偿。刀尖运动轨迹与编程轨迹一致。 n! B3 R' R. {& a4 o* P# o
刀位点与刀尖方位
n1 L- O6 [. o' M, u 刀位点即是刀具上用于作为编程相对基准的参照点。当执行没有刀补的程序时,刀位点正好走在编程轨迹上;而有刀补时,刀位点将可能行走在偏离于编程轨迹的位置上。按照试切对刀的情况看,对刀所获得的坐标数据就是刀尖的坐标,采用对刀仪,也基本上是按刀尖对刀的。而事实上,对于圆弧头车刀而言,这个刀尖是不存在的,是一个假想的刀尖点(如图 (a)中A点)。当然,也可通过测出刀尖圆弧半径值来推测出刀尖圆弧中心点(图 (a) 中B点)。编程时,通常就是用这样两个参照点来作为刀位点的,刀尖半径补偿也就是围绕这两种情况进行的。
$ Z4 S: v) e3 k) q+ j6 t$ G事实上,当采用A点编程补偿方式时,系统内部只对锥面及圆弧面计算刀补,而对车端面与车外圆则不进行刀补。当采用B点编程刀补方式时,则无论什么样的轮廓线都需要进行刀补运算。当然,对有刀补功能的车床来说,无论用哪种补偿方式,我们都只需要按零件最终得到的轮廓线进行编程,至于怎么具体地实施刀补,则是数控系统内部要做的事情。但对于没有刀补功能的车床来说,考虑如何刀补则是编程者必须要考虑的问题,只有正确的刀补编程才能得到准确的轮廓轨迹。
1 I& b& H3 j; d; A- r& s虽然说只要采用刀径补偿,就可加工出准确的轨迹尺寸形状,但若使用了不合适的刀具,如左偏刀换成右偏刀,那么采用同样的刀补算法还能保证加工准确吗?肯定不行。为此,就引出了刀尖方位的概念。图 (b)所示为按假想刀尖方位以数字代码对应的各种刀具装夹放置的情况;如果以刀尖圆弧中心作为刀位点进行编程,则应选用0或9作为刀尖方位号,其他号都是以假想刀尖编程时采用的。只有在刀具数据库内按刀具实际放置情况设置相应的刀尖方位代码,才能保证对它进行正确的刀补;否则,将会出现不合要求的过切和少切现象。
9 h0 s& N6 v8 C. `; _+ v' H3 P3 r刀径补偿的引入(初次加载)7 H( Z! h/ X% S+ d
由没有设定刀径补偿的运动轨迹到首次执行含G41、G42的程序段,即是刀尖半径补偿的引入过程。见图2-43,编程时书写格式为:& K2 K, n6 G: v7 p: a/ R
...* O' E; ]* w( d* y0 E0 p9 o' u: Y
G40G00(G01) ... ;先取消以前可能加载的刀径补偿(如果
2 H8 B h, z3 w 以前未用过G41或G42,则可以不写这一行)
+ H6 a# t$ W8 Q+ G* j' E* TG41(G42) G01(G00) ...Dxx; 在要引入刀补的含坐标移
+ c. Q' m# a- u) B8 T 动的程序行前加上G41或G421 r `+ V# ~1 v+ R7 y
刀径补偿的取消(卸载)$ B: E8 }. \( F4 ~
执行过刀径补偿G41或G42的指令后,刀补将持续对每一编程轨迹有效;若要取消刀补,则需要在某一编程轨迹的程序行前加上G40指令,或单独将G40作一程序行书写。0 m6 S5 d: D0 f( U9 ~
注意:) S, _" v9 `3 F! a+ a" S! C4 V
(1) 刀径补偿的引入和卸载不应在G02、G03圆弧轨迹程序行上实施。
( e# X, m9 {! I5 I" p (2) 刀径补偿引入和卸载时,刀具位置的变化是一个渐变的过程。2 h" k! V i$ U9 ]7 [( b0 D2 d+ a% \
(3) 当输入刀补数据时给的是负值,则G41、G42互相转化。/ J5 _' K7 p# b( }& r
(4) G41、G42指令不要重复规定,否则会产生一种特殊的补偿。 J4 k3 c5 R- g' D' F: E% ?
4 |, v k k& q! r# R' S |