写入S7300的时候,DB块怎么老是出错? 点击:1573 | 回复:8



一颗小白杨~

    
  • 精华:0帖
  • 求助:2帖
  • 帖子:3帖 | 29回
  • 年度积分:0
  • 历史总积分:5
  • 注册:2016年4月01日
发表于:2016-05-02 22:30:43
楼主

具体我在下面详细展开




pdengong

  • [版主]
  • 精华:20帖
  • 求助:71帖
  • 帖子:1936帖 | 3670回
  • 年度积分:936
  • 历史总积分:54944
  • 注册:2011年4月11日
发表于:2016-05-03 08:06:54
1楼

怎么没有下文了???

一颗小白杨~

  • 精华:0帖
  • 求助:2帖
  • 帖子:3帖 | 29回
  • 年度积分:0
  • 历史总积分:5
  • 注册:2016年4月01日
发表于:2016-05-03 17:19:49
2楼

情况是这样,触摸屏上连接着两台PLC,用触摸屏作为中介,PLC_A和PLC_B之间通信,将A的数据读取到触摸屏上,存在一个数组中,然后通过宏指令,将这个数组写入到B的制定DB块中,就算实现了通信。

一颗小白杨~

  • 精华:0帖
  • 求助:2帖
  • 帖子:3帖 | 29回
  • 年度积分:0
  • 历史总积分:5
  • 注册:2016年4月01日
发表于:2016-05-03 17:22:28
3楼

但是情况蹊跷的是这样,我通过数值框,写入DBDn,00030000,选择32bit float没有问题,正常。但是通过宏指令写入SetDataEx(test[0], "Siemens S7-300/ET200S (Ethernet)", DB3, 0, 1),就会出现乱码。

一颗小白杨~

  • 精华:0帖
  • 求助:2帖
  • 帖子:3帖 | 29回
  • 年度积分:0
  • 历史总积分:5
  • 注册:2016年4月01日
发表于:2016-05-03 17:29:31
4楼

图片的宏指令,我编译没错。功能是实现,读取地址0的数据,写入到地址8。地址0的数据我通过触摸屏的数值块输入,然后通过宏指令读取,再写入,这样一切都OK。

但是我在宏指令里面自定义一个变量,无论如何都没办法正确写入给PLC。这是为什么?


一颗小白杨~

  • 精华:0帖
  • 求助:2帖
  • 帖子:3帖 | 29回
  • 年度积分:0
  • 历史总积分:5
  • 注册:2016年4月01日
发表于:2016-05-03 17:29:49
5楼


回复内容:

对: pdengong 怎么没有下文了??? 内容的回复!

昨天加班,今天补上了

一颗小白杨~

  • 精华:0帖
  • 求助:2帖
  • 帖子:3帖 | 29回
  • 年度积分:0
  • 历史总积分:5
  • 注册:2016年4月01日
发表于:2016-05-03 17:30:38
6楼

macro_command main()

short test_short=12345.1

int test_int=12345

float test_float=12.1

float test[4]


GetDataEx(test[0], "Siemens S7-300/ET200S (Ethernet)", DB3, 0, 1)//test

SetDataEx(test[0], "Siemens S7-300/ET200S (Ethernet)", DB3, 8, 1)//test


SetData(test_short, "Siemens S7-300/ET200S (Ethernet)", DB3, 12, 1)//test

SetData(test_int, "Siemens S7-300/ET200S (Ethernet)", DB3, 16, 1)//test

SetData(test_float, "Siemens S7-300/ET200S (Ethernet)", DB3, 20, 1)//test

end macro_command

宏指令如上

一颗小白杨~

  • 精华:0帖
  • 求助:2帖
  • 帖子:3帖 | 29回
  • 年度积分:0
  • 历史总积分:5
  • 注册:2016年4月01日
发表于:2016-05-03 17:34:59
7楼

我的想法是这样,既然我可以读取一个数,然后正确的将它写入给PLC,(读取DBD0.0,然后写入DBD8.0)说明我的宏指令没有错,难道是变量定义上出了问题?

一颗小白杨~

  • 精华:0帖
  • 求助:2帖
  • 帖子:3帖 | 29回
  • 年度积分:0
  • 历史总积分:5
  • 注册:2016年4月01日
发表于:2016-05-03 17:36:15
8楼

我又测试了一下,读取DBD0.0到test[1],然后test[1]+1.2。再将test[1]写入给PLC,就立马出现故障,这是为什么啊??????


热门招聘
相关主题

官方公众号

智造工程师