您现在所在的是:

串口通信

回帖:4个,阅读:54 [上一页] [1] [下一页]
515
喜忧安危勿介于心
文章数:31
年度积分:46
历史总积分:515
注册时间:2016/9/12
发站内信
发表于:2025/9/7 21:40:48
#0楼
有个小项目,一期用的西门子、二期被客户指定为施耐德M241了,现在分别要和一个称重仪表通信
称重显示仪定时发送数据,PLC接收
协议格式是这样的:
附件 微信图片_20250907213833.jpg
报文具体含义如下所示:
STX:报文开始,为STX的ASCII码,即就是16进制02,占用1个字节;
正负符号位:字符“+”对应正数、字符“-”对应负数,两个字符对应的ASCII码分别是16进制2B和2D,占用1个字节;
称重原始数据:依次为个位、十位、百位、千位、万位、十万位,字符范围为“0”~“9”,对应的ASCII码为16进制30~39,占用6个字节;
小数点位数:实际称重数据最多6个小数位,所以字符范围为“0”~“6”,对应的ASCII码为16进制30~36,占用1个字节;
异或校验:为第2个字节~第9字节数据的异或校验的ASCII码,占用2个字节;
ETX :报文结束,为ETX的ASCII码,即就是16进制03,占用1个字节。
可知数据1的符号位为-,原始数据为9152,小数位为2,所以称重实际值为-91.52;
   可知数据2的符号位为+,原始数据为123456,小数位为3,所以称重实际值为+123.456。

请问PLC程序如何编写呢?请教各位大神。
[此贴子已经被jint于2025/9/9 9:33:44编辑过]
10分悬赏
44248
YXBK 版主
文章数:20281
年度积分:1627
历史总积分:44248
注册时间:2007/4/14
发站内信
2015论坛优秀版主
2015春节活动
2013论坛优秀版主
2012论坛优秀版主
发表于:2025/9/8 10:52:47
#1楼
先把ASCII码转换成数字,然后对应的数字乘以倍率后加在一起

假设转换的数字分别放在D10 D12 D14 D16 D18 D20 里面

就是D10*100000+D12*10000+D14*1000+D16*100+D18*10+D20

结果转换成浮点后,再根据小数点位做除法,假设等于2就除以100,等于1就除以10

最后再根据符号位,判断正负数

如果是三菱或者信捷,我可以给你程序参考,但是施耐德从来没接触过
大家一起学习
28602
guanyumou 版主
文章数:10636
年度积分:580
历史总积分:28602
注册时间:2008/7/13
发站内信
2018论坛优秀版主
2018春节活动(三)
2017论坛优秀版主
2017国庆活动(二)
2017春节活动(三)
发表于:2025/9/8 16:54:10
#2楼
西门子S7-1200Receive_P2P指令实时接收,接收到的数据做一个帧头和帧尾的判断,然后使用Chars_To_Strg指令和STRG_VAL指令,最后根据小数位数做一下浮点数除法就可以了。
基于各种组态软件\触摸屏\PLC\单片机\变频器Modbus TCP\RTU\ASCII通信编程服务,需要请直接
联系!腾讯扣扣149034219
28602
guanyumou 版主
文章数:10636
年度积分:580
历史总积分:28602
注册时间:2008/7/13
发站内信
2018论坛优秀版主
2018春节活动(三)
2017论坛优秀版主
2017国庆活动(二)
2017春节活动(三)
发表于:2025/9/8 21:34:46
#3楼
施耐德M241用SEND_RECV_MSG指令和ADDM指令,接收到数据也是做一个帧头和帧尾的判断,判断基本数据格式是正确的,然后处理数据用MID和STRING_TO_REAL指令,最后根据小数位数做除法运算就可以了。
基于各种组态软件\触摸屏\PLC\单片机\变频器Modbus TCP\RTU\ASCII通信编程服务,需要请直接
联系!腾讯扣扣149034219
360
LY-刘
文章数:567
年度积分:360
历史总积分:360
注册时间:2020/4/29
发站内信
发表于:2025/9/9 10:01:02
#4楼
回复 #2楼 guanyumou
专用指令更方便

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

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

46.8003