登录
首页 PLC论坛 三菱Mitsubishi
回帖 发帖
正文

主题:请教Q系列关于字符串处理的一些问题

点击:10140 回复:13

1、假设D100的字符串是AB,我要用它的ASCII码形式的数据,要先把这个字符串转化成ASCII的数据吗??
好像Q系列PLC没有字符串转化成ASCII的指令,
PLC会自己把字符串转化成16进制的ASCII码吧,直接拿来用就可以了吧???
2、传送字符串,$MOV ABCDEF D200,  那么D200存放AB,D201存放CD,D202存放EF,是这样的吗???
假设是的话,A是在D200的高8位吧???
14-11-12 13:04

引用 lujianmei12 在 2014/11/12 13:04:34 发言【内容省略】

1、字符串本身以16进制ASC方式存储,因此无需自行转换。
2、始终从低字节开始存储。所以D200存放的是AB,那么B在寄存器的高8位。
Regards
14-11-12 13:31
但用软件以ASCII码的显示格式监控,是AB,
二进制格式却是BA,为什么会这样呢???
14-11-12 21:18
二进制格式显示的是BA,
但用ASCII码格式显示的却是AB,为什么会这样呢?
是软件本身的原因吧?
不知别的品牌的会不会这样?
14-11-13 08:50

引用 lujianmei12 在 2014/11/13 8:50:37 发言【内容省略】

二进制显示BA是因为B存储在高字节中。
ASC显示是AB是因为字符串显示方式是从首字节地址开始的。
Regards
14-11-13 11:22
主要是ASC的显示形式不太明白,
现在明白了,谢谢东昌机电
14-11-13 13:01
附件 20.jpg
附件 21.jpg
从这两张图片来看,我可不可以这样理解,传送字符串,如果字符数量为奇数,那最高字节会存储00H,如果字符数量为偶数呢,会再占用一个字来存储00H吗???
$MOV  D10  D20,怎么确定传送字符的数量呢???
为什么D12也会传送过去呢?是不是字符串传送要加一个为零的D一起传送呢??
00H是空字符吗?  百度了一下,说空字符不占用内存,但00H 我可以理解为零,在PLC当中也是占用寄存器的。
没有好的Q系列资料,只有厚起脸皮来问这些基础知识了,请达人们解答一下,谢谢!
14-11-16 00:47
首先,如果您有C语言经验的话,C语言对于字符串是有结束标志定义的,如‘/0’.
即使您没有高级语言编程经验,那么对于字符串需要有一个结束标志,这一点也是很好理解的。
然后,我来回答您的问题:
1、对于三菱来说,其字符串需要有个结束标志,这样用户传送字符串的时候才不至于将整个内存地址传送出去。三菱甚至于其他厂牌的PLC对于字符串的结束标志为NULL,也就是ASC码表中的00H,因为三菱的数据区不支持字节访问模式,因此对于不支持字节访问模式的厂商来说,这个NULL标志就需要占用一个字的存储空间。这也就解释了图片中为何需要一个字来存放0000H这样的NULL标志。
2、三菱的字符串并不是标准的字符串STRING,IEC61131-3中定义的STRING的第二字节(不支持字节访问的就用字)为字符串长度,显然三菱的非结构编程的方式下,它是没有办法直接确认支付串长度的,仍然需要依靠字符串的结束标志NULL来决定字符串长度的。
3、低于D12也传送,仍然如上所述,需要字符串结束标志。
4、您需要百度一下字符串格式定义的实现或者百度一下字符串结束标志等相关内容。
Good Luck~
14-11-16 07:18
谢谢cvlsam!
再次问一下,空字符NULL会记入字符串长度当中吗??
14-11-17 21:27
能推荐简单入门一点的书了解这些知识吗?
14-11-17 21:28

上一页下一页

工控新闻

更多新闻资讯