新手,谁知道西门子300plc,温度采集的程序怎么写??

新手,谁知道西门子300plc,温度采集的程序怎么写??,第1张

因为300中,实际温度与采集的数字量之间有除以10得到实际温度值得关系,所以:

L

PIW256

//7KF02模块的温度通道地址

ITD

//转换为浮点数

DTR

L

10.0

/R

T

MD10

//MD中就是实际温度值。

1、SET   //将RLO(逻辑运算结果保存位)位置1;

2、SAVE     //将RLO结果保存到BR位,以保证下面的程序可以执行;

3、=    L      0.1  //将RLO位保存到L0.1临时存储区位;

4、L    #IN3     //装载#IN3这个变量到ACC1;

5、SAVE      //将RLO结果保存到BR位,以保证下面的程序可以执行;

6、ITD     //将ACC 1中的数值转换为双整数;

7、DTR     //将ACC1的双整数转为浮点数,最终#IN3变成了浮点数,保存在了ACC1;

8、SAVE   //将RLO结果保存到BR位;

9、L    1.000000e+001    //装载10.0到ACC2;

10、/R      //ACC2除以ACC1,也就是10.0除以#IN3变量,结果保存在ACC1;

11、JO   M001    //如果有溢出那么跳转到M001;

12、JU   M002    //如果没有溢出那么跳转到M002;

13、M001: CLR      //清除RLO位;

14、=    L      0.1//RLO结果暂存到L0.1临时存储区;

15、M002: T    #IO9    //将ACC1的数据传送给#IO9变量;

16、CLR     //清除RLO位;

17、A    #STAT65   //检查#STAT65是否为1;

18、NOT   //对RLO取反;

19、A    #IN0   //检查#IN0是否为1;

20、JCN  M003    //如果以上逻辑运算结果为0跳转到M003;

21、L    #IO9      //如果逻辑运算结果为1,那么装载#IO9;

22、T    #STAT66     //将#IO9传送给#STAT66;

23、L    #IO9     //装载#IO9;

24、T    #IO10    //将#IO9传送给#IO10;

25、L    0.000000e+000   //装载0.0;

26、T    #STAT67        //创送0.0给#STAT67;

27、M003: CLR            //清零RLO。

L #IN0//将变量#IN0的值送入累加器ACCU1中

ITD//将ACCU1的数据转换为DINT类型

DTR //将ACCU1的数据转换为REAL类型,即浮点数,西门子规定,INT转换为REAL,必须使用ITD,DTR这两个步骤。

L 1.000000e+001 //将浮点数10.0装入ACCU1中,原先ACCU1的数据送入ACCU2中

/R//ACCU2的数据除以ACCU1,结果送入ACCU1中,ACCU1原先数据送入ACCU2中,/R为浮点数除法,要求除数被除数均为REAL类型。

T #OUT1//将ACCU1的数据送入变量#OUT1中。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11815935.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存