[西门子] c=√(a^2+b^2 )博途1200/1500PLC怎么编程?a、b取值范围有什么要...

[复制链接]
查看50215 | 回复0 | 2024-4-2 08:41:12 | 显示全部楼层 |阅读模式
各位同仁:大家好



      这个式子用博途1200/1500PLC编程怎么编?a、b的取值范围注意什么?

说明:a=MW0、b=MW2、c=MD50,a与b都是有符号数、c是浮点数。

这是博途1200/1500PLC编程实操培训课堂上,在学习转换指令时的一个实操案例。

      
下面编写程序:

第一步:点新建创建项目,给项目取个名字。

第二步:添加新设备:



第三步:添加新的变量表



第四步:添加监控表



第五步:编写程序







      在编写程序的过程中,第一段为什么不用平方指令,而是用两个a或b相乘。第二段平方和相加之和,为什么不直接用开方指令,直接开方。第三段为什么要把平方和转换成浮点数?等等这些对于初学者都是会这么问的。所以通过这个案例让学员建立一种编程思维,不是你想怎么编程,而是是否有这个指令?如果没有这个指令怎么办?如果没有这个指令就要变通,或者通过转换指令转换到满足相关指令为止。

第六步:编译、保存、下载,注意编译、下载时一定选中站点编译、选中站点下载,否则就会导致不完全编译或不完全下载。



PLC编程、编译、下载、调试每个细节都有严格要求,必须谨慎操作,必须知道什么是规范的、什么是正确的、不能随心所欲,否则就容易经常出错,即使错了也不知道怎么错了,其实都是操作不严谨造成的。

第七步:在线调试





这种情况正是这个案例要关注的地方,很多人用特征数验证没问题,比如用3的平方+4的平方再开方=5.0,都是正确的,为什么300的平方+400的平方再开方不等于500.0呢?

要回答什么的问题,必须先搞清楚数据类型的计数范围:

例如:二进制数I0.0(BOOL) 数据范围是:0-1

字节(byte),有符号数数据范围是:-128-+127

                   无符号数:0-255

字(int)、有符号数数据范围是:-32768-+32767

                  无符号数:0-65535

双字(Dint),有符号数数据范围是:-2147483648-+2147483647

                  无符号数是:0-4294967295

因为300的平方是90000,400的平方是160000,远远超出了int的-32768-+32768的就是范围,所以这时显示的数据已经超出范围,所以是错误的。这一点告诉我们,将来在工程方面使用数据时(字节)(字)一定要注意数据范围,否则很容易超范围,造成计数结果失真或报错。

每个数据类型的运算,表面上的加减乘除,都要考虑数据类型转换、只有同类型的数据才可以加减乘除,比方说字节,一般PLC都不支持字节的加减乘除,所以必须把字节转换成字或双字或浮点数格式。还有平方开方运算,一般有符号数的字节、字、双字都不支持平方、开方,所以遇到这些类型都要进行数据类型的转换。数据转换指令在数据运算方面使用频率很高,要有这方面的思维。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则