- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PLC通过逐次逼近法实现工件同轴固定应用
PLC通过逐次逼近法实现工件同轴固定应用
【摘 要】在实际工程中,常需要将两段或多段圆筒状工件进行焊接。以焊接大型油罐为例,为了保证焊缝平整,必须在焊接前将工件同轴固定,即需要对工件进行“校圆”。对于小尺寸工件,很容易通过观察测量实现;对于大直径工件,通过测量两油罐边缘距离差,结合逐次逼近法是一个有效途径。
【关键词】同轴固定;校圆;逐次逼近法;油罐焊接
PLC是一种专门为在工业环境下应用而设计的数字运算操作的电子装置。它采用可以编制程序的存储器,用来在其内部存储执行逻辑运算、顺序运算、计时、计数和算术运算等操作的指令,并能通过数字式或模拟式的输入和输出,控制各种类型的机械或生产过程。逐次逼近法通过按照一定规则,可以使得结果无限接近于某一已知数值。下面详细介绍PLC使用逐次逼近法在油罐同轴固定、焊接中的应用。
1 测量工艺
两油罐在焊接前的空间结构示意如图1所示:左、右侧油罐通过下方工装支撑(图示中未画出),下方工装可以对油罐位置进行三维调整。图2为欲通过逐次逼近法实现工件同轴固定的施工图。其中,中间圆环机构用于安装电感式距离传感器,64个传感器在左右筒上方均对称安装,且左右侧传感器安装起点与间隔均相同。在初始位置时,左右侧传感器所测距离差值为零。
为了更加清楚了解传感器的安装及测量过程,下面给出详细的二维图。图3为剖视图,可以看到传感器被顺序编号;图3为任一编号对应的A、B两个传感器的详细安装与测量图,A侧传感器测量值为XA,B侧传感器测量值为XB,故A、B所测距离差值为δ=XA-XB。
2 测量原理及流程图
本例拟通过测量距离差来实现两油罐的同轴固定,故先假定左侧为“标准圆”,右侧为“待移动圆”,只需移动右侧圆与左侧圆重合即可。为了尽可能高精度的实现圆的同轴性,这里采用逐次逼近法,即通过每次移动将最高距离差缩小为原来的1/10,直到所有距离差缩小到设定的范围或是移动设定的次数。当然,这里的“移动”并非真实地对右侧圆进行空间移动,只是程序内部按照假定的移动进行计算而已。由于64对距离传感器在空间圆周上均匀分布,故每个传感器所测点在圆上的角度α均可求出;又油罐的半径R和距离偏差δ已知,故可计算出待移动圆上64个测量点的坐标及角度。任一“待移动圆”上的点距“标准圆”圆心的长度为L=R+δ,进而求得该点的X坐标为:[L*cos(α), L*sin(α)]。
下面给出程序的流程图,如图5所示:
图5
3 PLC中关键部分程序段
下面介绍PLC中程序的主要过程功能块,以西门子S7-1200为例。
a)64对传感器安装角度的初始化部分:
#Pi := 3.1415926;
FOR #cnt_angle := 0 TO 63 DO
#cnt_angle_r := INT_TO_REAL(#cnt_angle);
10.XY .angle[#cnt_angle] := #cnt_angle_r * 2.0 * #Pi / 64.0;
END_FOR;
b)为了将“待移动圆”与“标准圆”距离差降到设定值,需要将“待移动圆”移动多次,此处采用 WHILE…DO 语句,反复执行直至不满足循环条件退出。
WHILE #step 10.XY.E_con DO
c)找出距离差最大值,并通过移动将此最大值降低为原来的1/10。每一次移动的偏移量以最大值为参考,通过最大值对应点的角度可将移动量分解为X分量与Y分量。下面为部分参考程序:
10.XY.delt := 10.XY.delt_max * 10.XY.delt_rate;
10.XY.deltXYS_X[#step] := -10.XY.delt * COS(10.XY.angle_1[#cnt_max]);
10.XY.deltXYS_Y[#step] := -10.XY.delt * SIN(10.XY.angle_1[#cnt_max]);
d)随着X与Y坐标的移动,64个点相应的角度也发生变化。相应地,这儿需要求出移动后的新角度。下面为部分参考程序:
//若移动点在第一象限
IF 10.XY.XYS_X[#cnt_3] 0 AND 10.XY.XYS_Y[#cnt_3] 0 THEN
10.XY.angle_1[#cnt_3] := ASIN(10.XY.XYS_Y[#cnt_3] / SQRT(10.XY.XYS_X[#cnt_3] * 10.XY.XYS_X[#cnt_3] + 10.XY.XYS_Y[#cnt_3] * 10.XY.XYS_Y[#cnt_3]));
//若移动点在第二象限
ELSIF
文档评论(0)