bkkman 发表于 2010-4-4 22:59:59

完整的FX2N监控命令解释

编写PLC例程,下载Oline=>Write to PLC,监控Oline=>Monitor=>Start Monitor;同时监听PC串口数据,把串口数据剪贴到Wordpad,这样得到约264MB的数据。
通过大量数据的分析归纳,得出了完整的监控命令解释。

下以其中一例程说明这问题。

左边是梯形图指令,右是下载到PLC的指令码。
http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_543723.jpg
(原文件名:完整的监控命令解释01.jpg)

http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_543724.jpg
(原文件名:完整的监控命令解释02.jpg)

点选Oline=>Monitor=>Start Monitor,GX先重复读取PLC版本号、PLC参数,然后再发出监控指令。
监控指令格式:
STX E101400 zz nn81 wwww XXXX XXXX ....... ETX CC

字1400是FX2N的上位机命令缓冲区首地址。

字节zz是后续的监控指令字节数,后续的数据是监控指令内容,需监控的寄存器元件和位元件地址,地址数据采小端模式,即字数据低字节在前,高字节在后。

字nn81,表示需监控的寄存器元件数,寄存器元件可为16位或32位。

字wwww表示需监控的位元件元件数。

字XXXX XXXX ....... 表示需监控的寄存器元件和位元件地址,排列是寄存器元件地址在前,位元件地址在后。

CC为校验和。

下表指令码序栏和nn对应;字序栏表示监控元件数据顺序,PLC回发的寄存器元件数据和这里的地址顺序对应;
值得注意的是,位元件栏,即监控指令里位元件地址顺序,表征PLC回发的元件数据从低到高的BIT位排列。



http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_543725.jpg
(原文件名:完整的监控命令解释03.jpg)

下图是PC读数据命令和PLC回发的元件数据。

PC读数据命令
STX E00 1790 zz ETX CC
zz是PLC回发的元件数据字节数,1790是读PLC数据首址。

PLC回发的元件数据
STX XXXX XXXX ....... ETX CC
寄存器元件数据顺序监控指令里地址顺序对应,16位占一个字,32位两个字,小端模式。
寄存器元件数据后面是位元件数据,每个位元件占一个BIT,其BIT排列顺序按监控指令里地址顺序从低到高排列,小端模式。


http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_543726.jpg
(原文件名:完整的监控命令解释04.jpg)

http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_543727.jpg
(原文件名:完整的监控命令解释05.jpg)

下表是据该例程运行时MONITOR,从中选出元件状态变化数据,以验证上面的分析。
http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_543728.jpg
(原文件名:完整的监控命令解释06.jpg)

下表是据MONITOR数据,分析出的FX2N监控命令所用的软元件地址,也是FX2N内存映象。
http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_543729.jpg
(原文件名:完整的监控命令解释07.jpg)

http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_543730.jpg
(原文件名:完整的监控命令解释08.jpg)

监控所用GX版本。
http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_543731.jpg
(原文件名:完整的监控命令解释09.jpg)


1、GX Monitor只读取FX2N当前屏障所监控显示软元件相关数据,当翻屏时重新发出写入1400缓冲区的E10指令。
   GX Monitor每组监控命令都要读三个寄存器值,但并不显示,它们是D8010当前扫描值(地址0E14),D8012最大扫描时间(地址0E18),D8003内存类型(地址0E06)。

2、在DEVICE BATCH MONITOR,GX读取数据量最大,其STX E10 。。。分两次发出,E10命令写入首址分别为1400、1440。E00命令读取首址也相应为1790、17D0。

3、DEVICE BATCH MONITOR当同时监控寄存器元件和位元件(如TIMER、COUNTER)时,读取相应位元件值,不用E10命令,而是用E00命令直接读取位元件内存数据,不经过1790缓冲区,采用位元件组字节地址。

   DEVICE BATCH MONITOR每组监控命令都要读位元件M8000值(位地址0E00),也并不显示。

4、GX Monitor监控E10命令里元件顺序并不安照屏幕显示顺序,PLC回发数据严格按E10命令里元件顺序排列,位元件数据按E10命令里位元件顺序,从低到高BIT位排列,可参见图“完整的监控命令解释04.jpg”、“完整的监控命令解释05.jpg”。

wisebaby 发表于 2010-4-5 09:42:36

支持.

songmengda 发表于 2010-4-5 11:08:26

支持,那是必须地

waking 发表于 2011-2-18 16:55:42

确实是好东西,厉害!

gpfrank 发表于 2011-3-6 17:22:18

mark

cqfeiyuxmj 发表于 2013-5-27 22:55:11

看不到图呀晕

ssywtt 发表于 2013-10-10 17:51:20

虽然看不到图,但也是很好的资料,学习了,谢谢楼主

ZHAOBO10375 发表于 2013-11-12 10:28:11

bkkman   你好,这个的WORD能不能上传一份

liguangqang 发表于 2013-11-12 10:37:39

好,辛苦了,要顶

ZHAOBO10375 发表于 2013-11-12 10:37:41

bkkman   你好,这个的Excel能不能上传一份发我一份也行,谢谢了 {:tongue:}

xjj123456789 发表于 2013-11-20 16:07:50

发上来大家参考一下,这个相当有价值。

CK345 发表于 2013-11-20 16:39:00

地址表{:lol:}

cjc83com 发表于 2013-11-21 09:37:16

好强, 都是自己分析的.
FX2N 和FX1N 有多大区别?

apolloj 发表于 2014-7-3 00:24:37

太谢谢楼主了,正在找这个问题的答案。

xjtyOnly51 发表于 2014-9-30 12:32:12

thanks, mark

ly1106cz 发表于 2014-11-5 10:31:39

楼主强悍啊!!!

wqiling 发表于 2014-12-2 14:05:30

这也太强悍了。。

cskl2015 发表于 2015-3-28 11:03:28

分析代码正好用到这个,非常感谢楼主!

Chris_gong 发表于 2015-10-25 21:46:17

MARK 完整的FX2N监控命令解释

wenchm2015 发表于 2022-6-8 10:34:09

再次收藏
页: [1]
查看完整版本: 完整的FX2N监控命令解释