登录
首页
PLC论坛
信捷XINJE
回帖
发帖
正文
主题:求助一段计算算法
点击:357 回复: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楼
编辑
引用
管理
憨憨小白
附件:
1_1_2_TH2516B.pdf
[
本地下载
]
至于具体的协议是
最后修改:
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
工控新闻
三菱电机加入日本“30%俱乐部”,支持增加女性企业高管
工博会 | 创新加速,CC-Link协会即将开启5G无线新征程
喜报丨珞石机器人入选工信部《首台(套)重大技术装备推广应用指导目录》
CC-Link|上海工博会,5G 新样机Soft-motion 重磅首秀
十万个“魏”什么 | 工业物联网——智能制造的“魔法引擎”
中秋佳节 | 图尔克福利派送进行中!
2024工博会:华龙讯达携国产大型PLC在6.1号馆主通道等您!
重磅官宣:上能电气北美服务中心开业,全球化战略再升级
更多新闻资讯