您现在所在的是:

三菱Mitsubishi

回帖:13个,阅读:9635 [上一页] [1] [2] [下一页]
2574
lujianmei12
文章数:731
年度积分:50
历史总积分:2574
注册时间:2011/1/25
发站内信
发表于:2014/11/12 13:04:34
#0楼
1、假设D100的字符串是AB,我要用它的ASCII码形式的数据,要先把这个字符串转化成ASCII的数据吗??
好像Q系列PLC没有字符串转化成ASCII的指令,
PLC会自己把字符串转化成16进制的ASCII码吧,直接拿来用就可以了吧???

2、传送字符串,$MOV ABCDEF D200,  那么D200存放AB,D201存放CD,D202存放EF,是这样的吗???
假设是的话,A是在D200的高8位吧???



2284
东昌机电
文章数:643
年度积分:50
历史总积分:2284
注册时间:2013/9/13
发站内信
工控人谈电商
发表于:2014/11/12 13:31:04
#1楼
以下是引用lujianmei122014/11/12 13:04:34的发言:
1、假设D100的字符串是AB,我要用它的ASCII码形式的数据,要先把这个字符串转化成ASCII的数据吗??
好像Q系列PLC没有字符串转化成ASCII的指令,
PLC会自己把字符串转化成16进制的ASCII码吧,直接拿来用就可以了吧???

2、传送字符串,$MOV ABCDEF D200,  那么D200存放AB,D201存放CD,D202存放EF,是这样的吗???
假设是的话,A是在D200的高8位吧???



1、字符串本身以16进制ASC方式存储,因此无需自行转换。
2、始终从低字节开始存储。所以D200存放的是AB,那么B在寄存器的高8位。

Regards
SANKA电机
2574
lujianmei12
文章数:731
年度积分:50
历史总积分:2574
注册时间:2011/1/25
发站内信
发表于:2014/11/12 21:18:56
#2楼
但用软件以ASCII码的显示格式监控,是AB,
二进制格式却是BA,为什么会这样呢???
此帖发自手机工控论坛
2574
lujianmei12
文章数:731
年度积分:50
历史总积分:2574
注册时间:2011/1/25
发站内信
发表于:2014/11/13 8:50:37
#3楼
二进制格式显示的是BA,
但用ASCII码格式显示的却是AB,为什么会这样呢?
是软件本身的原因吧?
不知别的品牌的会不会这样?
此帖发自手机工控论坛
2284
东昌机电
文章数:643
年度积分:50
历史总积分:2284
注册时间:2013/9/13
发站内信
工控人谈电商
发表于:2014/11/13 11:22:38
#4楼
以下是引用lujianmei122014/11/13 8:50:37的发言:
二进制格式显示的是BA,
但用ASCII码格式显示的却是AB,为什么会这样呢?
是软件本身的原因吧?
不知别的品牌的会不会这样?

二进制显示BA是因为B存储在高字节中。

ASC显示是AB是因为字符串显示方式是从首字节地址开始的。

Regards
SANKA电机
2574
lujianmei12
文章数:731
年度积分:50
历史总积分:2574
注册时间:2011/1/25
发站内信
发表于:2014/11/13 13:01:24
#5楼
主要是ASC的显示形式不太明白,
现在明白了,谢谢东昌机电
此帖发自手机工控论坛
2574
lujianmei12
文章数:731
年度积分:50
历史总积分:2574
注册时间:2011/1/25
发站内信
发表于:2014/11/16 0:47:00
#6楼
附件 20.jpg

附件 21.jpg



从这两张图片来看,我可不可以这样理解,传送字符串,如果字符数量为奇数,那最高字节会存储00H,如果字符数量为偶数呢,会再占用一个字来存储00H吗???
$MOV  D10  D20,怎么确定传送字符的数量呢???
为什么D12也会传送过去呢?是不是字符串传送要加一个为零的D一起传送呢??
00H是空字符吗?  百度了一下,说空字符不占用内存,但00H 我可以理解为零,在PLC当中也是占用寄存器的。

没有好的Q系列资料,只有厚起脸皮来问这些基础知识了,请达人们解答一下,谢谢!
37246
cvlsam 版主
文章数:12401
年度积分:1598
历史总积分:37246
注册时间:2001/12/22
发站内信
2018论坛贡献奖
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011论坛贡献奖
2011国庆活动
2010论坛杰出贡献奖
发表于:2014/11/16 7:18:06
#7楼
首先,如果您有C语言经验的话,C语言对于字符串是有结束标志定义的,如‘/0’.

即使您没有高级语言编程经验,那么对于字符串需要有一个结束标志,这一点也是很好理解的。

然后,我来回答您的问题:
1、对于三菱来说,其字符串需要有个结束标志,这样用户传送字符串的时候才不至于将整个内存地址传送出去。三菱甚至于其他厂牌的PLC对于字符串的结束标志为NULL,也就是ASC码表中的00H,因为三菱的数据区不支持字节访问模式,因此对于不支持字节访问模式的厂商来说,这个NULL标志就需要占用一个字的存储空间。这也就解释了图片中为何需要一个字来存放0000H这样的NULL标志。
2、三菱的字符串并不是标准的字符串STRING,IEC61131-3中定义的STRING的第二字节(不支持字节访问的就用字)为字符串长度,显然三菱的非结构编程的方式下,它是没有办法直接确认支付串长度的,仍然需要依靠字符串的结束标志NULL来决定字符串长度的。
3、低于D12也传送,仍然如上所述,需要字符串结束标志。
4、您需要百度一下字符串格式定义的实现或者百度一下字符串结束标志等相关内容。

Good Luck~
2574
lujianmei12
文章数:731
年度积分:50
历史总积分:2574
注册时间:2011/1/25
发站内信
发表于:2014/11/17 21:27:19
#8楼
谢谢cvlsam!

再次问一下,空字符NULL会记入字符串长度当中吗??
2574
lujianmei12
文章数:731
年度积分:50
历史总积分:2574
注册时间:2011/1/25
发站内信
发表于:2014/11/17 21:28:29
#9楼
能推荐简单入门一点的书了解这些知识吗?

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

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

78.0005