张工学plc
三菱FX3U 信捷XD/XL 台达 西门子1200
级别: 探索解密
精华主题: 0
发帖数量: 11 个
工控威望: 111 点
下载积分: 111 分
在线时间: 13(小时)
注册时间: 2024-04-30
最后登录: 2024-10-20
查看张工学plc的 主题 / 回贴
楼主  发表于: 9天前
图片:
想问下超过33怎么转化啊
阳春节拍
级别: 探索解密
精华主题: 0
发帖数量: 103 个
工控威望: 162 点
下载积分: 654 分
在线时间: 38(小时)
注册时间: 2022-03-24
最后登录: 2024-10-21
查看阳春节拍的 主题 / 回贴
1楼  发表于: 6天前
信捷的四则运算的结果占用空间会翻倍,所以不可能出现溢出错误。
但是连续计算怎么搞呢?
比如前级计算结果超出乘数的字节数,或者计算结果干脆是负数
翻了下手册,没找到信捷双字整数转单字整数的指令,这应该是很基本的指令吧
阳春节拍
级别: 探索解密
精华主题: 0
发帖数量: 103 个
工控威望: 162 点
下载积分: 654 分
在线时间: 38(小时)
注册时间: 2022-03-24
最后登录: 2024-10-21
查看阳春节拍的 主题 / 回贴
2楼  发表于: 6天前
引用
引用第8楼工控小c于2024-10-17 09:49发表的  :

双字内容要是超过了单字的范围,怎么转单字?

转不了就不操作并置报警位呗,其他品牌plc都这样做的呀。
双字转单字是刚需,自己转的话,要同时做值是否超出单字,是否是负数的判断,负数的双字转单字有点麻烦,程序有点复杂。应该是直接提供指令,毕竟单字转双字那么简单都有指令
阳春节拍
级别: 探索解密
精华主题: 0
发帖数量: 103 个
工控威望: 162 点
下载积分: 654 分
在线时间: 38(小时)
注册时间: 2022-03-24
最后登录: 2024-10-21
查看阳春节拍的 主题 / 回贴
3楼  发表于: 5天前
引用
引用第10楼工控小c于2024-10-17 10:46发表的  :

没遇到过需要双字转单字的刚需。。双字后续就全用32位指令就行了。。C语言里计算也不错。不过信捷的确简陋,没办法,其他编程软件动不动1个G以上了,和那些对比信捷缺的功能也不是一点半点

32位乘输出的是64位数据,后继全用32位指令也是有风险的。
C语言里16位乘积超限是怎么个处理方式?是报错停止运行,还是直接仅取低字,还是给出限值
阳春节拍
级别: 探索解密
精华主题: 0
发帖数量: 103 个
工控威望: 162 点
下载积分: 654 分
在线时间: 38(小时)
注册时间: 2022-03-24
最后登录: 2024-10-21
查看阳春节拍的 主题 / 回贴
4楼  发表于: 昨天
引用
引用第10楼工控小c于2024-10-17 10:46发表的  :

没遇到过需要双字转单字的刚需。。双字后续就全用32位指令就行了。。C语言里计算也不错。不过信捷的确简陋,没办法,其他编程软件动不动1个G以上了,和那些对比信捷缺的功能也不是一点半点


取二维表的某个地址,偏移量需要使用行号乘以总列数再加上列号,,,16位乘后变成了32位,你怎么加16位的列号?加完了,需要使用字偏移,你双字的偏移数怎么用?
在主程序中绝对不溢出时能直接将32位数绝对地址当16位数绝对地址用,你在pou梯形图里怎么办?pou里边绝对地址和变量是不能混用的,16位和32位混用更不可能

别家plc不但提供双字到字的转换,甚至西门子还提供有由指令来决定数据是字节、字还是双字的AC地址区(跟信捷的数值是字或双字由指令来决定一样)