台达屏与S7-300连接的输入区域设置问题 点击:1728 | 回复:18



haiyaya

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 12回
  • 年度积分:0
  • 历史总积分:20
  • 注册:2008年10月17日
发表于:2008-10-17 13:54:56
楼主

最近研究台达触摸屏,选用型号是DOP-A57GSTD,打算与S7-300系列的CPU314通过RS485通讯(without PC adapter)。

在设置输入区域的时候想到了这个问题:

选中“输入”,生成输入区域,点击输入区域,在属性栏选择“写入储存器地址”后,弹出一个设置界面。

那么【连线】里选择“base port”,【形式】就是“PLC元件”。在【元件种类】里选好“DBW”,【地址】设为30。

那么,我们都知道S7-300可以建立很多DB块,而刚刚设好的DBW30是保存在那个DB块里了呢?

还有,在台达的“系统控制区”,也需要设置“DBW0”“DBW20”这两个地址,那么这两个控制用的地址是在那个DB块里呢?

?

由于现在是在控制系统的初步设计阶段,没有实际硬件来试验,所以想请各位有这方面经验的大侠具体的解释和指点一下,先谢谢了。

PS:这里怎么不好上传图片啊,有个图片来看就知道是什么意思了,不知道我在上面啰嗦的这么多大家看懂了没有?主要是关于这个设置里的DBW对应的是哪个DB块~~而这个设置选项中还可以选择DB的,晕鸟~~




aibi

  • 精华:1帖
  • 求助:0帖
  • 帖子:7帖 | 1027回
  • 年度积分:0
  • 历史总积分:1975
  • 注册:2008年6月03日
发表于:2008-10-17 19:38:14
1楼

目前台达人机和S7-300连 如果显示的是字的话就是默认显示DB10里面的数值的 所以plc程序必须要open一下db10

haiyaya

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 12回
  • 年度积分:0
  • 历史总积分:20
  • 注册:2008年10月17日
发表于:2008-10-18 08:13:17
2楼
谢谢,到时试验下,不懂的再请教!

aibi

  • 精华:1帖
  • 求助:0帖
  • 帖子:7帖 | 1027回
  • 年度积分:0
  • 历史总积分:1975
  • 注册:2008年6月03日
发表于:2008-10-18 10:51:25
3楼

没有问题 呵呵???????

haiyaya

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 12回
  • 年度积分:0
  • 历史总积分:20
  • 注册:2008年10月17日
发表于:2008-10-20 10:20:09
4楼

aibi 兄在否?

现在又发现一个问题了。关于配方。

在台达屏里,配方地址可以设定为内部地址或者外部地址。

那么,如果设定为内部地址了,那个【配方控制寄存器】RECR的BIT1还有什么用呢?触发它的话,是不是就是将选定了RCPNO的一组配方值读取到RCP中?

要是设定为外部地址,那么这个倒是很好理解的,就是HMI和PLC的相互读取和写入。

这样理解对吗?

================================================================================================

另外,这个RCP地址对应的都是HMI的内部地址吧,实际上我想修改这个数的时候是要对PLC的寄存器值进行修改啊,那么这个要怎么处理呢?我怎么设置,才能实现修改了RCP地址的数值,PLC里的值也马上跟着变化呢?

是不是,我对RCP修改后,必须要将这组新的值保存到RCPNO对应的配方里;然后,具体的PLC控制,需要将这个RCPNO对应的地址的值读出来,才能实现将RCP的值应用到程序控制上?

要是这样的话,将配方地址设定为内部地址还有什么用呢?因为这样无论怎么搞,屏里的配方数据都无法传到PLC中啊!

我的理解有什么错误的地方,请指出o!

haiyaya

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 12回
  • 年度积分:0
  • 历史总积分:20
  • 注册:2008年10月17日
发表于:2008-10-20 15:52:54
5楼

控制上是不是这样的:

我将配方定义为外部地址,DB块内的一个区域,如分为4组,DBW30~~DBW34,DBW35~~DBW39,DBW40~~DBW44,DBW45~~DBW49。

然后在HMI上进行设置的时候,要编辑一个页面,将每组配方读出,修改后再保存,这样DBW30~~DBW50里就成了修改完的值。

那么在实际应用时,根据选择的组别号,将每组【DBW30~~DBW34,DBW35~~DBW39,DBW40~~DBW44,DBW45~~DBW49】的数值放到我要用的MW寄存器里,再读取MW的值就可以了?

==============================================================================================

配方是不是这么用啊,感觉这样麻烦了一步。。。原来的想象,是在HMI中编辑一个画面,定义好它对应的PLC中的地址,然后选取组别号之后,把每组的配方内的数值对应读出,这时PLC内的数值也变过来了。这样就不用再在PLC中编程了。

汗!

aibi

  • 精华:1帖
  • 求助:0帖
  • 帖子:7帖 | 1027回
  • 年度积分:0
  • 历史总积分:1975
  • 注册:2008年6月03日
发表于:2008-10-20 16:20:52
6楼

那么,如果设定为内部地址了,那个【配方控制寄存器】RECR的BIT1还有什么用呢?触发它的话,是不是就是将选定了RCPNO的一组配方值读取到RCP中?

? 如果设定为内部地址($100),哪么ReCR的BIT1就是把$100连续个配方长度的数值送入配方当前值里,BIT2就是把配方当前值放入以$100开始的配方长度的寄存器里面,配方控制寄存器他就是一个和配方交换数据的存储区

第2个问题是 配方当前值只和配方当前值有直接数据交换关系,只有当你对rcp修改后,把需要和plc交换的数值放在当前值 ,通过控制区的位才可以和plc相互读取

haiyaya

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 12回
  • 年度积分:0
  • 历史总积分:20
  • 注册:2008年10月17日
发表于:2008-10-20 16:51:36
7楼

我通过模拟来推敲的这个功能。

我的理解是,对RCP修改后,通过置ON控制区的位BIT2,就把配方里的数值改过来了。

那么我在用PLC读取数据的时候,读的并不是配方当前值,而是某一组配方(因为配方数据是可以存在PLC中的)。???? 这样理解对吧?

有没有直接读取配方当前值(就是配方缓冲区)的功能?这样的话我的配方数据可以直接存在HMI中,等要读取到PLC时,把它调到配方缓冲区就可以了啊。

haiyaya

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 12回
  • 年度积分:0
  • 历史总积分:20
  • 注册:2008年10月17日
发表于:2008-10-20 17:00:35
8楼

有点不对~~汗!
看你关于第二个问题的解释,就应该是配方缓冲区的数值跟PLC相互交换的。

但是,例如我配置了4组长度为5的配方,那么缓冲区的地址就是RCP0、RCP1、RCP2、RCP3、RCP4,这5个地址对应的PLC的地址是什么呢?这是无法设定的啊。

莫非就是在【配方设置】里设定的那个【地址】开始的连续的5个地址?这样,问题又回来了,要是这个【地址】用的是内部地址,应该怎么跟PLC相互读取?

haiyaya

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 12回
  • 年度积分:0
  • 历史总积分:20
  • 注册:2008年10月17日
发表于:2008-10-20 17:50:57
9楼

另外,在模拟的时候,发现只要把RCPNO的值改成1、2……那么相应的配方的数据就直接读出了,不用置位Bit1这个控制字。

haiyaya

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 12回
  • 年度积分:0
  • 历史总积分:20
  • 注册:2008年10月17日
发表于:2008-10-20 18:12:03
10楼

是这样吗:

所有的HMI和PLC之间的通讯,都是【配方缓冲区】里的数据跟设置的【PLC地址】直接的相互读取。

输入RCPNO的时候,会把对应的配方数据调入【配方缓冲区】,然后如果置位BIT1会将配方缓冲区的数据改为PLC地址内存储的数据,如果置位BIT2会将PLC地址内存储的数据改为配方缓冲区的数据。

配方是保存在RCPn+1开始的地址的。===》我以前以为配方是保存在【配方设置】里设置的那个地址。

aibi

  • 精华:1帖
  • 求助:0帖
  • 帖子:7帖 | 1027回
  • 年度积分:0
  • 历史总积分:1975
  • 注册:2008年6月03日
发表于:2008-10-21 10:26:32
11楼
“所有的HMI和PLC之间的通讯,都是【配方缓冲区】里的数据跟设置的【PLC地址】直接的相互读取。

输入RCPNO的时候,会把对应的配方数据调入【配方缓冲区】,然后如果置位BIT1会将配方缓冲区的数据改为PLC地址内存储的数据,如果置位BIT2会将PLC地址内存储的数据改为配方缓冲区的数据 ”
? 这样理解就对了 呵呵

haiyaya

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 12回
  • 年度积分:0
  • 历史总积分:20
  • 注册:2008年10月17日
发表于:2008-10-21 15:37:25
12楼

谢谢aibi兄不厌其烦的指导,触摸屏的程序和PLC的程序已经编完了,硬件到位后上试验!呵呵

haiyaya

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 12回
  • 年度积分:0
  • 历史总积分:20
  • 注册:2008年10月17日
发表于:2008-11-07 13:31:11
13楼

控制方面已经没有问题了。

但是在一开始试的时候,我把HMI配方写入PLC的按钮定义为DBX10.1,读取PLC的按钮定义为DBX10.2,但是实际上置位这两个点是不能实现通讯的。

没办法只好将它们定义为HMI内部的$5.1、$5.2,才能够写入、读出。

而且在通讯的时候HMI上有时候出现读取未知数据的警告,不知道为什么。

aibi

  • 精华:1帖
  • 求助:0帖
  • 帖子:7帖 | 1027回
  • 年度积分:0
  • 历史总积分:1975
  • 注册:2008年6月03日
发表于:2008-11-07 23:30:41
14楼

选择这两个按钮的时候一定要注意到控制区的起始地址,还有DBX10.1是DB?里面的位?

wanghuhong

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 7回
  • 年度积分:0
  • 历史总积分:48
  • 注册:2008年6月27日
发表于:2008-11-08 09:20:05
15楼
好文章哦,要帮主加个精才是呀!

haiyaya

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 12回
  • 年度积分:0
  • 历史总积分:20
  • 注册:2008年10月17日
发表于:2008-11-09 14:58:10
16楼

aibi兄又来了啊。

已经很注意控制区的起始地址了,一开始系统控制区地址设定为2@DBW0,系统状态区地址设定为2@DBW20,这样设定的时候,对应的这两个控制位应该就是DBX10.1和DBX10.2 。

而且,我把配方地址号设定为RCPNO,另外做了一个数值显示设置为DBW12,这两个地址内的数值是可以同时改变的,就是说我修改了RCPNO之后,DBW12内的数据也跟着变化过来了。

其他的所有直接对应DB地址将其修改数据也都没有问题。

但就是想用PLC内的地址来控制写入、读取的时候发现这两个按钮设为DBX10.1和DBX10.2 不能正确的传输参数。

没办法,最后将系统控制区地址设定为内部的$0,然后把写入和读取的按钮定义为内部的$5.1、$5.2就可以了。

以上所有的控制区都是指DB10里面的位。

==========================================================

那么,难道是要我在PLC的控制程序中把DBX10.1和DBX10.2置ON来实现数据的写入和读出?而不能把这两个位用HMI来控制?奇哉怪也。

aibi

  • 精华:1帖
  • 求助:0帖
  • 帖子:7帖 | 1027回
  • 年度积分:0
  • 历史总积分:1975
  • 注册:2008年6月03日
发表于:2008-11-09 22:50:49
17楼

To: haiyaya

   老大,西门子的数据格式是前面为高8位,后面是低8位,所以控制配方读写的位应该是DBX11.1和DBX11.2才对, 呵呵

 DBX10.1已经相当于16位模式的第9位,  呵呵

haiyaya

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 12回
  • 年度积分:0
  • 历史总积分:20
  • 注册:2008年10月17日
发表于:2008-11-10 08:09:29
18楼

O(∩_∩)O

哦,呵呵。对知识掌握的太不扎实了,原来是这样。

那我也不试了,按照aibi兄的指导和说明书的说法,换作DBX11.1和DBX11.2肯定是没有问题的。

看来今后还要努力的学习啊!再次多谢了!


热门招聘
相关主题

官方公众号

智造工程师