登录
首页
PLC论坛
信捷XINJE
回帖
发帖
正文
主题:求助一段计算算法
点击:400 回复:8
楼主
编辑
引用
管理
憨憨小白
如图
是一台电阻仪的通讯数据,提取的是ASCII码的十六进制数据,通讯方式是RS232,结果值是当前电阻
PLC是信捷的XD5-48T-E,支持C函数
24-08-16 11:14
1楼
编辑
引用
管理
YXBK
先用HEX指令把对应数字的寄存器转换成数字,然后乘以相应倍数后再加在一起
正负的判断,负号的十进制是45,可以用比较指令,如果D600等于45,就用0减去
如果有小数点的,可以把相加的结果转换成浮点后再除以倍率
比如12.345,先把12345转成单个数字,然后1*10000+2*1000+3*100+4*10+5=12345
转成浮点后再除以1000,就是12.345了
如果需要更详细的解答,请上传通讯协议,或者告知实际测量的数值与PLC监控到得ASCII数据(就是你截图的内容)
24-08-16 12:07
2楼
编辑
引用
管理
憨憨小白
D602处的小数点是不变的,主要问题在于2个正负和10的次方,不考虑10的﹣次方的话我写了,C函数我也是初学所以写的比较烂
最后修改:
2024/8/16 12:42:50
24-08-16 12:38
3楼
编辑
引用
管理
憨憨小白
附件:
[
本地下载
]
至于具体的协议是
最后修改:
2024/8/16 12:54:47
24-08-16 12:49
4楼
编辑
引用
管理
YXBK
提到函数,我就靠边了
不知道用死办法行不行,先把D601-D608整理出来成小数
然后再算次方那里,比如次方那里是3,你就乘以1000,如果是-2就除以100
最后再根据D600判断整个数据的正负
我只鞥想出这个办法了,不知行不行
期待高手解答
24-08-16 15:17
5楼
编辑
引用
管理
憨憨小白
感谢大佬,我回来教作业了。
24-08-17 13:26
6楼
编辑
引用
管理
jiashijiang
最后修改:
2024/8/17 20:07:08
24-08-17 15:06
7楼
编辑
引用
管理
蛇会大学
这些是16进制的数据,每位除了0至9以外,还有A至F
你的程序直接减H30还原的数据会不会出错?
24-08-18 18:39
8楼
编辑
引用
管理
憨憨小白
这段程序只是为了处理提取电阻通讯后的参数,我只针对数字位进行提取的16进制转换成10进制,用肯定没问题啊,但是通用肯定不行。
24-08-20 10:25
工控新闻
倍福 | EP 和 EPP 系列 EtherCAT 端子盒和 EtherCAT P 端子盒
填补国产锂电级PVDF缺口,中控技术成功中标东阳光氟树脂智能制造一期项目
持续扎根中国,哪些自动化外企加大对华投资与布局?
倍福 | EtherCAT 多功能端子模块的应用范围再次被拓宽
尼得科驱动(CT)推出五年质保服务
工业机器人市占率反转, “第五大家族”会在中国出现吗?
新主题、新产品、新技术!2024大湾区工博会精彩来袭!
倍福 | CX7000嵌入式控制器产品系列再添“新成员”
更多新闻资讯