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

方法2:
触摸屏输入为字符型数据时,PLC直接用指令LEN检测该字符串位多少位,再相应补字符'0'或者补空格,用CONCAT指令连接字符。
楼主留言:
大神,牛啊。我照你说的挨个指令试试,好多指令都没用过。第一种觉得可行,第二种有点小麻烦,输入123,1到最低位去了。