您现在所在的是:

三菱Mitsubishi

回帖:8个,阅读:1472 [上一页] [1] [下一页]
* 帖子主题:

FX1N 地址如何换算

918
snake_she
文章数:7
年度积分:50
历史总积分:918
注册时间:2007/12/23
发站内信
发表于:2007/12/27 11:43:00
#0楼
哪位高人帮我, PLC是FX1N-24MR

我现在要用DELPHI通过串口(串口到FX1N圆形编程口)将D1,和D10两个寄存器赋1值和0值,

参照了一下 FX的通讯协议,还是搞不懂地址换算:

发送代码如下:

procedure TForm1.Button2Click(Sender: TObject);
var s:string;
begin

 //  s:=#2'01FA004'#03'7F'; //返回 0000000083;
    S:=#02'010F604'#03'74';//读D123,D124的值,   返回  3412CDABD7

   comport1.WriteStr(s);
end;
#02 是STX
#03 报文结束符

我想向D1发送 '1'过去,S字串该是多少?
我想向D1发送 '0'过去,S字串该是多少?

我想向D10发送'1'过去S字串该是什么样?
我想向D10发送'0'过去S字串该是什么样?

我刚接触PLC,完全不懂,请高人指点,不胜感激.


10454
xlian
文章数:3232
年度积分:94
历史总积分:10454
注册时间:2002/5/7
发站内信
2018论坛热心网友
西门子PLC体验(二)
发表于:2007/12/27 12:39:00
#1楼
读D区格式是:STX 0 address bytes ETX SUM

address=addr*2+0x1000再换成ASCII码
D0D1 address=(0*2)+0x1000=0x1000 ASCII 31 30 30 30
D100 address=(0x64*2)+0x1000=0x10C8 ASCII 31 30 43 38
bytes 字节数(FX1N是16位,一个D就是2个字节,2个D就是4个字节)
SUM 校验码自STX后到ETX包括ETX的和的低2位的ASC码
读D0D1的字符串是 STX 0 1000 04 ETX 88
918
snake_she
文章数:7
年度积分:50
历史总积分:918
注册时间:2007/12/23
发站内信
发表于:2007/12/27 13:34:00
#2楼
感谢!
我试试看,不明白再麻烦您!
918
snake_she
文章数:7
年度积分:50
历史总积分:918
注册时间:2007/12/23
发站内信
发表于:2007/12/27 14:26:00
#3楼
按照公式计算

Adress=Adress*2+1000H

D1的地址是为 (1*2)+1000H=1002   ASCII  31H 30H 30H 32H
D10的地址是 (10*2)+1000H=1020 ACSII  31H 30H 31H 34H

这样子算的对吗?

给D1寄存器赋值 1 则是
STX     W           Address               Byte     DATA     ETX     SUM
02H    31H     31H,30H,30H,32H      31H      31H      03H      59H


这样子对不对?
2826
流客
文章数:794
年度积分:50
历史总积分:2826
注册时间:2005/8/28
发站内信
发表于:2007/12/27 20:50:00
#4楼
楼上的,您地址算的没错。
但是给D1赋1发送的字符您写错了。D1是一个十六进制寄存器,应该是两个字节,所以byte应该是2,而DATA也应该用两个字节来表示!

2楼说读D0D1发送的字符校验和算错了
918
snake_she
文章数:7
年度积分:50
历史总积分:918
注册时间:2007/12/23
发站内信
发表于:2007/12/27 23:00:00
#5楼
那应该是这样:

STX     W           Address               Byte     DATA     ETX     SUM
02H    31H     31H,30H,30H,32H      32H      31H      03H      5AH

那么S字串为:
   #02'1100221'#03'5A'

但是我测试还是不行,d1值更本就未改变
2826
流客
文章数:794
年度积分:50
历史总积分:2826
注册时间:2005/8/28
发站内信
发表于:2007/12/28 9:02:00
#6楼
S字串为:
   #02'11002020100'#03'1A'
918
snake_she
文章数:7
年度积分:50
历史总积分:918
注册时间:2007/12/23
发站内信
发表于:2007/12/28 13:41:00
#7楼
感谢流客先生!,现在对D1赋1和0值都可以了,但是读D10值可以了,写D10值就不行,怪事,还得忙烦指点一下

d10 = 31H 30H 31H 34H

S:= #02'11014020100'#03'43' 但是不会改变D10的值

我读D10的值时
 S:=#02'0100202'#03'58';  就可读出D10值了,还请师傅点明!谢谢!



918
snake_she
文章数:7
年度积分:50
历史总积分:918
注册时间:2007/12/23
发站内信
发表于:2007/12/28 13:43:00
#8楼
不好意思,刚才复制错了
读D10的值是:

S:=#02'0101402'#03'5B'; 可读出D10的值

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

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

62.4004