DP从站开发难题 点击:1127 | 回复:16



laolv0680

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 22回
  • 年度积分:0
  • 历史总积分:32
  • 注册:2007年8月06日
发表于:2007-08-24 16:42:00
楼主
求救!SPC的用户RAM区的各个缓冲器内的数据是怎样的?或者说从第一个到最后一个字节分别表示什么



wincc123

  • 精华:4帖
  • 求助:0帖
  • 帖子:41帖 | 765回
  • 年度积分:1
  • 历史总积分:1067
  • 注册:2003年10月13日
发表于:2007-08-25 22:59:00
1楼
spc3内部1.5K双口RAM,分192个段,每段8BYTES,
因此,00-16H包含处理器参数,组织参数,用户RAM区。。。。
我也在研究SPC3,现在主要遇到了SAP服务存取的问题,估计在过20天就基本透了。。。欢迎讨论

laolv0680

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 22回
  • 年度积分:0
  • 历史总积分:32
  • 注册:2007年8月06日
发表于:2007-09-06 09:04:00
2楼
现在要把我们公司的PLC以从站的形式连接到DP总线上,我们现在用的是MODBus协议,所以除了要了解SPC3芯片以外,还要知道。PLC的通信行规(3.002),不知道去哪里搞到这个东西,还是对这个东西用途理解有错误。

wincc123

  • 精华:4帖
  • 求助:0帖
  • 帖子:41帖 | 765回
  • 年度积分:1
  • 历史总积分:1067
  • 注册:2003年10月13日
发表于:2007-09-06 12:35:00
3楼
用途理解有误:
如果你们有PLC,想利用DP挂到DP系统中去,那么你们不应该去做
Profibus----MODBUS的转换桥,而应该使用MCU+SPC3和PLC的内部总线通讯,这样,你们的PLC支持的DP从占才有速度。从长远来看,你们这样做是错误的,方向上是错误的。

laolv0680

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 22回
  • 年度积分:0
  • 历史总积分:32
  • 注册:2007年8月06日
发表于:2007-09-07 15:25:00
4楼
谢谢楼上的指点,看来我自己的理解是有问题的,不过我对这个东西还是有些想法的,不知道这样能不能实现:利用SPC3和MCU实现诊断\组态\参数设置等一系列工作后,然后将DP总线上传来的数据转化成MODBUS协议下的数据,再传给我们的PLC(我们PLC是支持MODBUS协议的),反过来也是一样的.不知道它们的相互转化是不是还需要DP协议的PLC之间的通信行规.请您多多指点.

wincc123

  • 精华:4帖
  • 求助:0帖
  • 帖子:41帖 | 765回
  • 年度积分:1
  • 历史总积分:1067
  • 注册:2003年10月13日
发表于:2007-09-07 15:55:00
5楼
DP从站你如果一定要和PLC,将会遇到MODBUS通讯的速率限制,这对于一个PLC的DP智能从站而言是不合理的。
事实上SPC3就是负责处理DP主站过来的一系列报文,你大可以使用这些解析的数据直接去到PLC的并行总线,这样,才是完美的方案。

因此,你的DP应该分作两个部分。一部分负责这些主站的报文并解析之。你能够把这部分做好,就完成了DP的绝大部分工作
一部分负者和PLC的并行总线通讯,而不是串行通讯。需要PLC的协调工作

laolv0680

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 22回
  • 年度积分:0
  • 历史总积分:32
  • 注册:2007年8月06日
发表于:2007-09-10 15:35:00
6楼
哦.是这样啊.太感谢了。我也是这样想的,现在的问题是SPC3中用于和从站交互的数据缓冲区的数据结构(我说的主站和从站交互时的通信数据,不是诊断\参数\配置数据)是怎么样的,PROFIBUS协议标准只是提到这些数据是是否要应答\肯定回答\主动的\被动的\,而根本没有提到具体的读写和读写缓冲区(寄存器)地址,而MODBUS里面这方面的数据却给解释的很详细.
我个人认为PROFIBUS协议下这些交互的数据应该有个具体的规约,起码要和MODBUS协议规约类似的规定吧.而这些规约是不是PROFIBUS协议标准里提到的PLC之间的通信行规呢?好糊涂.

laolv0680

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 22回
  • 年度积分:0
  • 历史总积分:32
  • 注册:2007年8月06日
发表于:2007-09-10 15:42:00
7楼
其实我的意思是说,所有的通信说到底就是对一些特定地址上数据的读写而已,既然是对一些特定地址上数据的读写,那么PROFIBUS就为什么就没有这一类的规定呢。如果连这些主从之间交互数据的是要读(写)哪个地址上的数据都不知道,又怎么做把他们与MODBUS协议数据相互转化呢?你看我问的对不对啊?谢谢您的指教.你比我们经理厉害多了,呵呵

wincc123

  • 精华:4帖
  • 求助:0帖
  • 帖子:41帖 | 765回
  • 年度积分:1
  • 历史总积分:1067
  • 注册:2003年10月13日
发表于:2007-09-10 23:08:00
8楼
SPC3总共有1.5K的双口RAM,相对地址从000-014H都是有定义的,基本上可以分为处理器参数,组织参数等。
处理器参数主要和MCU交互,完成从站的设置,中断的安排,控制U/D/N缓冲区的数据交换工作等等。
而组织参数主要是DP接口,SPC3利用这些组织参数从主站接受数据,或将数据从从站发到主站,主要包含一些缓冲区的首址指针,长度。
而这些缓冲区在SPC3中有着特定的含义。SAP服务主要由这些缓冲区完成,而控制必须依赖处理器参数。

至于DP的具体报文协议,我们在开发SPC3的时候并不一定需要了解这些东西,当然,了解更好。

他不是MODBUS,MODBUS可以说软件完成,而SPC3更多是从硬件角度完成协议的控制等

laolv0680

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 22回
  • 年度积分:0
  • 历史总积分:32
  • 注册:2007年8月06日
发表于:2007-09-11 08:47:00
9楼
"至于DP的具体报文协议,我们在开发SPC3的时候并不一定需要了解这些东西"
天那!你又把我说糊涂了.你上面说的SPC3和MCU的合作交互工作过程,我都已经理解了,如果没有了解具体的报文协议,那我通过SPC3的I\O缓冲区得到的数据到底是什么数据,这些数据到底要做什么?这不就不知道了吗?而我要还要把这些DP协议下的数据转化成MODBUS协议下的数据,连它的含义都不知道还怎么转?谢谢老师的指点.

wincc123

  • 精华:4帖
  • 求助:0帖
  • 帖子:41帖 | 765回
  • 年度积分:1
  • 历史总积分:1067
  • 注册:2003年10月13日
发表于:2007-09-11 10:06:00
10楼
严格的讲,这个过程称为解析,主站过来的数据,会放到数据缓冲区1,2,3,(SPC3的RAM地址)。
至于那边过来数据是什么,而你这边要拿来干什么,完全在于你自己的定义。SPC3只是照搬而已,这个过程是由主站和SPC3完成的,这里面涉及的报文任务什么之类的,才是真正的DP协议,对于这点,我们无须知道,如果连这些报文都要搞清楚,那这个细节的工作量非常的大。
而MCU的任务,就在于将SPC3内部的N,D,U缓冲区进行交换。

而这个交换U,D,N的过程,就是我们的主要任务,不过,这个过程也很难,我也只不过看过一些SPC3的资料,大概得东西知道,具体的东西,我也不清楚了。

laolv0680

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 22回
  • 年度积分:0
  • 历史总积分:32
  • 注册:2007年8月06日
发表于:2007-09-11 14:52:00
11楼
非常感谢老师的点金指导!
如果DP协议根本不对数据具体含义进行规约的话,那我想这个协议转化就变的简单了,我现在的想法是:由于MODBUS协议非常的简洁,所以在把从站数据向主站发送时,直接把MODBUS协议数据放到SPC3的U缓冲器中,按照SPC3的工作方式传给主站数据,这样在DP总线上抓下来的数据帧就表现为:它的DATA_UNIT段实际就是SPC3先前的U缓冲器上的数据,说到底其实还是MODBUS协议数据.对吧?

wincc123

  • 精华:4帖
  • 求助:0帖
  • 帖子:41帖 | 765回
  • 年度积分:1
  • 历史总积分:1067
  • 注册:2003年10月13日
发表于:2007-09-11 21:04:00
12楼
正是如此,关键在于控制U,D,N这几个东西

laolv0680

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 22回
  • 年度积分:0
  • 历史总积分:32
  • 注册:2007年8月06日
发表于:2007-09-12 09:48:00
13楼
我倒是希望是这样的,这样可以省去我很多工作,如果用户数据是我自己的定义的,用怎么和人家的主站设备连接通信呢?毕竟我自己的定义的数据主战设备是不知道的,难道这和跟随我做的设备GSD文件有关系?也就是说我必须把我自定义数据含义的规约写到GSD文件里,这样组态软件在组态的时候根据我的GSD文件就可以知道我自定义数据的含义了,也就可以按照我自定义的规约进行通信了?这方面的说法从来没有在PROFIBUS协议标准里提到过,有点玄乎阿

远 方

  • 精华:1帖
  • 求助:0帖
  • 帖子:18帖 | 401回
  • 年度积分:0
  • 历史总积分:561
  • 注册:2002年1月29日
发表于:2007-09-12 12:57:00
14楼
回上貼,IO數據區裡的數據表示什麼意思,完全是由從站來決定的,從站決定好了IO數據後,在主站端,用戶可以通過PLC編程來實現對這些數據的編程控制,所以,主站是不關心IO數據表示的意義的,但使用主站的人要知道這些IO數據表示的意義,而決定這些IO數據表示的意義的,是從站。

laolv0680

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 22回
  • 年度积分:0
  • 历史总积分:32
  • 注册:2007年8月06日
发表于:2007-09-12 15:17:00
15楼
那就是说,在我们自己的PLC(只支持MODBUS协议)跟SIEMENS的主战连接时,我们还要对SIEMENS的主战上做工作?你说的“通過PLC編程來實現對這些數據的編程控制”具体要怎么做呢?用梯形图做可以吗?总不能把人家的东西拿来,把这方面程序烧到人家的主战芯片里把?太荒唐了

laolv0680

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 22回
  • 年度积分:0
  • 历史总积分:32
  • 注册:2007年8月06日
发表于:2007-09-13 10:30:00
16楼
这是一个MODBUS协议数据帧,请问转化成PROFIBUS协议下的数据是什么样子(只写DATA_UNIT部分)? [设备地址]+[0x02读]+[0x02两个字节]+[0xA1]+[0x5C],这样用具体的例子我就能理解了.

热门招聘
相关主题

官方公众号

智造工程师