设为首页
收藏本站
PLC技术网
开启辅助访问
切换到宽版
登录
注册哦
只需一步,快速开始
微信扫码登录
门户
Portal
论坛
BBS
导读
Guide
排行榜
Ranklist
搜索
搜索
本版
文章
帖子
用户
PLC论坛-全力打造可编程控制器专业技术论坛
»
论坛
›
工控技术交流区
›
『国外:三菱/西门子/欧姆龙/松下』
›
c=√(a^2+b^2 )博途1200/1500PLC怎么编程?a、b取值范围 ...
返回列表
发新帖
[西门子]
c=√(a^2+b^2 )博途1200/1500PLC怎么编程?a、b取值范围有什么要...
[复制链接]
50214
|
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
回复
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册哦
本版积分规则
发表回复
回帖后跳转到最后一页
博图TIA
回复楼主
返回列表
『国外:三菱/西门子/欧姆龙/松下』
『国产:台达/汇川/信捷产品交流区』