宏指令运用问题 点击:449 | 回复:6



前进不止

    
  • 精华:0帖
  • 求助:3帖
  • 帖子:11帖 | 29回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2016-07-19 20:24:09
楼主

写了段宏指令

GetData(day[0], "MODBUS RTU", 4X, 25487, 18) 

SetData(day[0], "Local HMI" , RW, 70, 18)

发现只能传第一个数据,其他的都传不了。改成下面这样

GetData(day[0], "MODBUS RTU", 4X, 25487, 1) 

SetData(day[0], "Local HMI" , RW, 70, 1)

GetData(day[1], "MODBUS RTU", 4X, 2#25487, 17) 

SetData(day[1], "Local HMI" , RW, 71, 17)

发现下面那段完全没用。全部改成一对一传才可以。哪位高手可以指点下是什么问题?




runljz

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 159回
  • 年度积分:45
  • 历史总积分:4071
  • 注册:2009年7月13日
发表于:2016-07-20 14:23:07
1楼

1,应该是你的地址超范围了。

2,根据上下宏指令作对比,原本是不是想把18块MUDBUS设备的第25487个地址的值读取上来,若真是那样的话,那么就是你写的宏指令有问题,读每台设备的数据必须费开读,若是从某一台设备里面读18个数据的话,你才可以这么写,所以呢,最好说明你的意图还有下位机的地址,这样才能帮你分析问题哦。

前进不止

  • 精华:0帖
  • 求助:3帖
  • 帖子:11帖 | 29回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2016-07-21 08:44:18
2楼


回复内容:

对: runljz 1,应该是你的地址超范围了。2,根据上下宏指令作对比,... 内容的回复!

我这个是屏和18个仪表通讯,用宏指令读18个仪表第25487个地址的值。但是好像只能单个单的的读。有没有办法一起读

runljz

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 159回
  • 年度积分:45
  • 历史总积分:4071
  • 注册:2009年7月13日
发表于:2016-07-22 11:37:06
3楼


回复内容:

对: 前进不止 回复内容:对: runljz  1,应该是你的地址超范... 内容的回复!

你这样的话,只能一对一去读,若嫌麻烦,就用for循环:


var0=1

for i=0 to 17 step 1

    GetData(day[i], "MODBUS RTU", 4X, var0#25487, 1) 

        if var0>=18 then

           var0=1

        esle 

           var0=var0+1

        end if

next i

SetData(day[0], "Local HMI" , RW, 70, 18)

这个思路,具体问题你自己解决吧,主要是通讯#前面的VAR0的问题,VAR0你参考系统寄存器(具体地址记不得了),其中有一台通讯不上的话,有可能造成程序执行不下去了,这个你参考宏指令关于GetData与GetDataEx的区别,


前进不止

  • 精华:0帖
  • 求助:3帖
  • 帖子:11帖 | 29回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2016-07-25 08:39:05
4楼


回复内容:

对: runljz 回复内容:对: 前进不止  回复内容:对: runlj... 内容的回复!

谢谢  我试试看。不好意思由于我刚开始学威纶宏指令,不太清楚这段程序是什么意思

for i=0 to 17 step 1

    GetData(day[i], "MODBUS RTU", 4X, var0#25487, 1) 

        if var0>=18 then

           var0=1

        esle 

           var0=var0+1

        end if

在宏指令列表里面除了GetData其他几个没有没有找到

前进不止

  • 精华:0帖
  • 求助:3帖
  • 帖子:11帖 | 29回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2016-07-30 15:45:23
5楼


回复内容:

对: runljz 回复内容:对: 前进不止  回复内容:对: runlj... 内容的回复!

离线模拟没问题,怎么下到屏内就不行了?

runljz

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 159回
  • 年度积分:45
  • 历史总积分:4071
  • 注册:2009年7月13日
发表于:2016-08-02 07:39:10
6楼


回复内容:

对: 前进不止 回复内容:对: runljz  回复内容:对: 前进不... 内容的回复!

主要是这个变量(var0)应该与一个系统寄存器联系在一起,


热门招聘
相关主题

官方公众号

智造工程师