从接收缓冲区对应的DB块里的DBBX字节里,用CONV转换到MWXX里,老是不能转换成数值;而直接用实际的字符在CONV指令里就可以转换为实际的数值,请帮看下是哪里设置不对?见附件图片
问题补充:
这个我已经试了两天了,重新组态新的程序架构,直接赋值到DB块里,然后用转换指令还是不行。我的DB块数据类型是string,输出为IW或MW均没有返回数据,都为0。还有什么可以解释的吗?要不你们有例程,发我邮箱,我再试下:13710698576@163.com。麻烦各位了
图片说明:
最佳答案
使用转换指令没问题,如图1
你的IW10显示零,应该是你的IW10另有赋值的地方,改成未使用的地址就好;
''''''''$00''''''''是字符串转换为0是对的,你改成‘$10’就会转换为16;
‘1’转换49是正常执行的。
补充:
DB内变量是单字节,CHAR型可以;或者把你的STRING型的多字符拆成单字符,再用char转INT;
字符串的换,应用S_CONV指令 ,用于将数字字符串转换成数值或将数值转换成数字字符串
图片说明:
提问者对于答案的评价:
刚跟400沟通过,原来是CONV指令不支持从字符串里提取的字符进行转换,直接把DB块的数据类型转换为ARRAY [0...100] of CHAR类型,再用CONV指令转换就随便转了,感谢大家们的帮助!希望也为后来人不走弯路提供点借鉴!
专家置评
字符串的转换,使用S_CONV;字符的转换,使用CONV。不要直接从字符串中提取字符再进行转换。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc189623.html