在PLC的ST语言中atan2(y,x)函数的实现

本文介绍了在PLC编程中如何解决atan(x)函数的局限性,通过atan2(y,x)计算角度并处理大于90度的情况,给出了相应的状态判断和函数实现代码。
摘要由CSDN通过智能技术生成

        在plc中传统的atan(x)函数所得出的角度范围是[-pi/2,pi/2],而在我们的算法中需要得出大于九十度的值时就会出现错误。所以需要用到atan2(y,x)这个函数。atan2(y,x)所计算出来的结果范围是[2*pi,pi]。我将其写为ST中的function,其具体代码如下:

        变量声明:

FUNCTION atan2 : lREAL
VAR_INPUT
	
y:LREAL;		//  y
x:LREAL;		//  x
END_VAR
VAR
	state:INT;

	a1: LREAL;
	mid:lreal;
END_VAR

        内部逻辑:


IF (y>0 AND x>0) THEN
	state:=1;
END_IF

IF (y>0 AND x<0) THEN
	state:=2;
END_IF
IF (y<0 AND x<0) THEN
	state:=3;
END_IF
IF (y<0 AND x>0) THEN
	state:=4;
END_IF



CASE state OF
	1:
		atan2:=ATAN(y/x);
	2:
		mid:=ABS(y/x);
		atan2:=pi-ATAN(mid);
	3:
		mid:=ABS(y/x);
		atan2:=-pi+ATAN(mid);	
	4:
		mid:=ABS(y/x);
		atan2:=ATAN(mid);
END_CASE

  • 8
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值