13771165220
级别: 家园常客
精华主题: 0
发帖数量: 320 个
工控威望: 548 点
下载积分: 1588 分
在线时间: 83(小时)
注册时间: 2017-11-27
最后登录: 2024-03-21
查看13771165220的 主题 / 回贴
楼主  发表于: 2021-08-24 19:48
比如发送的数据是ASC码     #1,0,30000,1000,AB
比如这串数字意思是  
#:打头字母
1:站号
0:该站电机号
30000:电机定位地址
1000:电机定位速度
AB:校验码
其中的”,“是间隔符号也是一个ASC码
返回数据先不管。
现在有这样的问题,我需要在触摸屏控制定位地址和定位速度。
但是如果我速度输入3000的话就比原来的30000少一个ASC字符,这样包括后面发送的指令数据地址都相当于左移了一位而且和校验都不一样了。
个人感觉还需去判断输入的数据转为ASC后占几个字符,感觉处理起来后续就比较麻烦。就算让人家直接输入ASC当数据也是比较麻烦。有谁有这方面的经验分享一下,大概思路也可以。
万分感激。
菜鸟入行
级别: 论坛先锋

精华主题: 0
发帖数量: 1377 个
工控威望: 1553 点
下载积分: 3672 分
在线时间: 176(小时)
注册时间: 2017-09-01
最后登录: 2024-04-27
查看菜鸟入行的 主题 / 回贴
1楼  发表于: 2021-08-24 21:27
得做一个很复杂的指令,寻找不同的逗号,把逗号之间的数据提出来,再转换ASC码,感觉好难的样子。

你这个仪表能支持其他方式不,比如MODBUS,这样省事多了
打个酱油,懂的不多
水平有限,能帮则帮
互相帮助,共同进步
13771165220
级别: 家园常客
精华主题: 0
发帖数量: 320 个
工控威望: 548 点
下载积分: 1588 分
在线时间: 83(小时)
注册时间: 2017-11-27
最后登录: 2024-03-21
查看13771165220的 主题 / 回贴
2楼  发表于: 2021-08-24 21:40
引用
引用第1楼菜鸟入行于2021-08-24 21:27发表的  :
得做一个很复杂的指令,寻找不同的逗号,把逗号之间的数据提出来,再转换ASC码,感觉好难的样子。

你这个仪表能支持其他方式不,比如MODBUS,这样省事多了


主要是需要判断出输入数据的长度,然后在把后续的数据,放到发送对应的地址里去,倒腾起来比较费事。

项目是需要测试20路步进电机性能,需要输入脉冲数和速度。正反转等,电压还要36V以内。比较麻烦,网上就找到一款4路485通信板。就是没有通用协议的,只有它自己的协议格式。
目前只能无协议自己换算。

正在找MODBUS协议支持的相关产品。
感谢您的建议。
枫落云端
施主,脚抬一下
级别: 略有小成

精华主题: 0
发帖数量: 341 个
工控威望: 465 点
下载积分: 1590 分
在线时间: 408(小时)
注册时间: 2017-10-10
最后登录: 2024-04-24
查看枫落云端的 主题 / 回贴
3楼  发表于: 2021-08-25 13:02
方法1:
触摸屏输入为数字时,PLC把数字加一个很大的值,比如每次最大也就5位数,先把 数字+100000,之后再用DBINDA转为字符串,再用RIGHT截取5位字符串。(不管你输入的是几位,每次都可以保证截取到5位)

方法2:
触摸屏输入为字符型数据时,PLC直接用指令LEN检测该字符串位多少位,再相应补字符'0'或者补空格,用CONCAT指令连接字符。
楼主留言:
大神,牛啊。我照你说的挨个指令试试,好多指令都没用过。第一种觉得可行,第二种有点小麻烦,输入123,1到最低位去了。
aaaa华华
级别: 探索解密
精华主题: 0
发帖数量: 120 个
工控威望: 151 点
下载积分: 5393 分
在线时间: 14(小时)
注册时间: 2021-05-23
最后登录: 2023-12-18
查看aaaa华华的 主题 / 回贴
4楼  发表于: 2021-08-25 14:09
引用
引用第1楼菜鸟入行于2021-08-24 21:27发表的  :
得做一个很复杂的指令,寻找不同的逗号,把逗号之间的数据提出来,再转换ASC码,感觉好难的样子。

你这个仪表能支持其他方式不,比如MODBUS,这样省事多了

这位老哥说的对,看能不能MODBUS通讯,能MODBUS通讯要省事很多,再转ASC码很麻烦
楼主留言:
很难找到类似产品,主要是有电压要求。多数是24V的。
打个酱油,懂的不多
水平有限,能帮则帮
互相帮助,共同进步
gxtmdb82164
级别: 论坛先锋
精华主题: 0
发帖数量: 655 个
工控威望: 1033 点
下载积分: 120 分
在线时间: 531(小时)
注册时间: 2019-09-22
最后登录: 2024-04-29
查看gxtmdb82164的 主题 / 回贴
5楼  发表于: 2021-08-25 15:26
前导0不就行了,非字典化通信协议里面,字段定长是最基本的要求
楼主留言:
是的,用PC测试了一下,前导0可以的。现在思路固定发送8个字符当数据。不足前填0.