您现在所在的是:

欧姆龙OMRON

回帖:6个,阅读:1586 [上一页] [1] [下一页]
* 帖子主题:

CP1H转换指令

1123
963063376
文章数:77
年度积分:50
历史总积分:1123
注册时间:2014/11/11
发站内信
发表于:2016/7/2 6:09:55
#0楼
各位前辈,有谁用过,把DINT数据转换为INT的指令,请老师们指点
rongbing
37234
cvlsam 版主
文章数:12401
年度积分:1586
历史总积分:37234
注册时间:2001/12/22
发站内信
2018论坛贡献奖
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011论坛贡献奖
2011国庆活动
2010论坛杰出贡献奖
发表于:2016/7/2 7:49:21
#1楼
以下是引用9630633762016/7/2 6:09:55的发言:
各位前辈,有谁用过,把DINT数据转换为INT的指令,请老师们指点

所有的PLC对于DINT转INT处理时的步骤是这样的:
第一步:判断DINT中的数据是否大于32767,如果是,那么直接转换为32767,否则,判断是否小于-32768,如果是,则直接输出-32768.
第二步:如果介于32767~-32768之间,那么判断DINT的符号,正数的话,直接读取低字,如果是负数的话,读取低字的同时给INT的最高位置1.

至于低字在前还是在后,取决于所使用的PLC所采取的存储方式。

Good Luck~
20183
高雅的雅
文章数:15777
年度积分:-205
历史总积分:20183
注册时间:2015/5/12
发站内信
2018论坛解答高手
发表于:2016/7/2 8:27:27
#2楼
双字转换字指令,这个在大于单字范围时,一直未能理解
那一瞬间忽然不再想你,因为去一趟漠河,走了一趟西藏,逛了一趟天涯海角,泡了一会栖谷温泉,回来就是:一切随他去吧,该咋过咋过!!车祸不死感言
37234
cvlsam 版主
文章数:12401
年度积分:1586
历史总积分:37234
注册时间:2001/12/22
发站内信
2018论坛贡献奖
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011论坛贡献奖
2011国庆活动
2010论坛杰出贡献奖
发表于:2016/7/2 8:41:50
#3楼
以下是引用高雅的雅2016/7/2 8:27:27的发言:
双字转换字指令,这个在大于单字范围时,一直未能理解

踏踏实实的论坛里多学习几年,你会理解为什么的。
1123
963063376
文章数:77
年度积分:50
历史总积分:1123
注册时间:2014/11/11
发站内信
发表于:2016/7/2 21:11:59
#4楼
谢谢,欧姆龙CP1H有这样的指令吗
rongbing
37234
cvlsam 版主
文章数:12401
年度积分:1586
历史总积分:37234
注册时间:2001/12/22
发站内信
2018论坛贡献奖
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011论坛贡献奖
2011国庆活动
2010论坛杰出贡献奖
发表于:2016/7/3 8:07:17
#5楼
以下是引用9630633762016/7/2 21:11:59的发言:
谢谢,欧姆龙CP1H有这样的指令吗

没有直接的指令,你可以按照上述的回帖自己编写一段用于转换。

你也可以建立功能块,将DINT数据用于输入,输出为INT数据;
在功能块中,如果你选用梯形图方式,那么你仍然需要上述的转换方式,如果你使用ST语言方式,那么你可以写如下程序进行转换:

     INT_DATA := DINT_TO_INT(DINT_DATA);

Good Luck~
1123
963063376
文章数:77
年度积分:50
历史总积分:1123
注册时间:2014/11/11
发站内信
发表于:2016/7/3 21:11:20
#6楼
谢谢您的解答
rongbing

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

46.8003