求救:DMC-2143与HMI(SERVER)的数据通讯 点击:901 | 回复:7



zealfor

    
  • 精华:0帖
  • 求助:2帖
  • 帖子:2帖 | 18回
  • 年度积分:0
  • 历史总积分:111
  • 注册:2001年7月02日
发表于:2011-12-07 15:29:36
楼主
求助帖5分-已结帖

想采用MODBUS TCP实现DMC-2143与HMI(SERVER)的数据通讯, 下面是个例子:

COUNTER =1

DM A【10】

#LOOP

MG "Connection established to ",ip0{F3.0},ip1,ip2,ip3

MBa=,6,0,COUNTER     ;‘SET REGISTER 40001

MBa=,4,0,1,A【】            ;‘READ REGISTER 30001

MG "HMI READ= ",A【0】, ", COUNTER = ", COUNTER

WT1000

COUNTER = COUNTER + 1

JP#LOOP,COUNTER<20

提示系统已经连上了,但HMI(SERVER)上没有数据更新或无法设置数据。我采用调试工具PC作为CLIENT调试HMI是没有问题的。

高手帮我分析哪里出问题了?




刘岩利

  • [版主]
  • 精华:2帖
  • 求助:0帖
  • 帖子:16帖 | 8239回
  • 年度积分:397
  • 历史总积分:28760
  • 注册:2005年3月09日
发表于:2011-12-08 03:19:48
1楼

没看到完整程序,不知道问题在哪里。比如IH、比如WM、比如CF是如何设置的,TH的反馈是什么等等。

zealfor

  • 精华:0帖
  • 求助:2帖
  • 帖子:2帖 | 18回
  • 年度积分:0
  • 历史总积分:111
  • 注册:2001年7月02日
发表于:2011-12-14 08:40:00
2楼
192.168.214.90, DMC2142sJ6a, 47274, IHC IHB

:TH

CONTROLLER IP ADDRESS 192,168,214,90 ETHERNET ADDRESS 00-50-4C-00-B8-AA

IHA TCP PORT 1030 TO IP ADDRESS 192,168,214,91 PORT 502

IHB UDP PORT 60007 TO IP ADDRESS 192,168,214,9 PORT 1331

IHC TCP PORT 23 TO IP ADDRESS 192,168,214,9 PORT 1330

IHD AVAILABLE

IHE AVAILABLE

IHF AVAILABLE

IHG AVAILABLE

IHH AVAILABLE

zealfor

  • 精华:0帖
  • 求助:2帖
  • 帖子:2帖 | 18回
  • 年度积分:0
  • 历史总积分:111
  • 注册:2001年7月02日
发表于:2011-12-14 08:43:36
3楼
 MW1 ;‘TURN MODBUS WAITING ON

IHA=>-2

WT100 ;‘ENSURE HANDLE IS NOT IN USEBGA

IHA = 192,168,214,91<502>2 ;‘HMI HANDLE(HMI IP ADDRESS),

WT100

 

COUNTER =1

DM A【10】

#LOOP

MBa=1,16,1,1,COUNTER ;‘SET REGISTER 40001 ON HMI 4x0001,

MBa=1,4,0,1,A【】 ;‘READ REGISTER 30001 ON HMI 3x10000,

MG "HMI READ= ",A【0】, ", COUNTER = ", COUNTER

WT1000 ;‘WAIT 1S

COUNTER = COUNTER + 1

JP#LOOP,COUNTER<200 ;‘REPEAT 200 TIMES

zealfor

  • 精华:0帖
  • 求助:2帖
  • 帖子:2帖 | 18回
  • 年度积分:0
  • 历史总积分:111
  • 注册:2001年7月02日
发表于:2011-12-14 08:44:39
4楼
另外, CF A做了配置. 

zealfor

  • 精华:0帖
  • 求助:2帖
  • 帖子:2帖 | 18回
  • 年度积分:0
  • 历史总积分:111
  • 注册:2001年7月02日
发表于:2011-12-14 11:07:55
5楼

我参考的是#5488的例子:

例子中400001对应GALIL的0写地址(function code 6), 300001对应GALIL的0读地址(function code 4); 

但一般的是40001 和 30001, 这里有啥讲究?? 我的应用中是40001 和30001 开始的地址.

zealfor

  • 精华:0帖
  • 求助:2帖
  • 帖子:2帖 | 18回
  • 年度积分:0
  • 历史总积分:111
  • 注册:2001年7月02日
发表于:2011-12-15 09:41:58
6楼
请提供建议或帮助, 不要做广告!

刘岩利

  • [版主]
  • 精华:2帖
  • 求助:0帖
  • 帖子:16帖 | 8239回
  • 年度积分:397
  • 历史总积分:28760
  • 注册:2005年3月09日
发表于:2011-12-15 10:59:39
7楼

看来,句柄A是连接HMI的,句柄BC是连接PC的。那么CF就不要设置为A了,设置为B吧。这样您程序的错误信息就会反馈到您的PC上了。

所有的MB指令后面的小写字母改成大写A。句柄号要用大写字母的。


热门招聘
相关主题

官方公众号

智造工程师