PLC电力载波问答 --- 集中器初始化和发送数据
[复制链接]
http://www.deyisupport.com/question_answer/w/faq/474.plc.aspx
问:PLC电力载波 请教集中器初始化和发送数据 问者 Fei Chen1 我想问一下 如果我用自己的MCU板和集中器的PLC核心板(AM1808)进行通信数据交互的时候,应该怎么初始化和收发数据?有没有相关例程?
回复: by Jones Chen
您好!如果是Prime标准的话,请根据附件中的文档进行编写2678.TI_prime_dc_iec_61334_4_32_api_spec.pdf
回复: by Jones Chen
如果是G3的话,请到下面这个网址下载相关文档 上面的网站是TI PLC的所有方案的官方网站,请索取相关文档。 谢谢! 另外,在本论坛的博客区有我写的关于PLC的相关文章,供参考,谢谢!
回复: by Fei Chen1
我们用的是prime 协议,集中器有两个接口一个是管理接口 一个是数据接口,我还想问一下当我们的MCU对集中器的核心板(AM1808)操作的时候是只用操作集中器的数据接口还是管理接口?
回复: by deyisupport
先附上博客链接供您参考一下: http://www.deyisupport.com/blog/b/smartgrid/default.aspx
回复: by Fei Chen1
陈工: 你好,在《TI_plcSUITE_prime_dc_iec_61334_4_32_api_spec》关于发送请求部分中,不知道DC_API_TLV_TYPE_TRX_HNDL中变量32 bit request handle怎么设?DSAP和DADDR的一一对应信息是否通过管理接口获得,还是通过别的方式知道?发送和接收数据前除了要绑定SAP外还需要其它前期准备工作吗,整个流程是什么?绑定SAP时是指定一个还是任意一个?如果是任意一个SAP,那表端如何知道?为什么SAP只有0 – 191? 谢谢!
回复: by Richard Ma
楼主请参考附件中的序列。
基本操作就是先Bind SAP,然后就可以通过Data Request发送数据了。
DADDR应该在attach时候就知道了,可以通过管理接口获得。DSAP实际上可以任意设置,然后在表端进行判断就可以了。
SAP中191-255算是保留值,如果不指定的话可以自动分配到这里。
3603.PRIME dc_sequence.pdf
回复: by Fei Chen1
图片中的标号都是什么意思?具体怎么用?哪些对收发数据有用?如果没用的信息能否在PRIME_SHOW_ACTIVE_NODES中不回复?DC_API_TLV_TYPE_TRX_HNDL具体怎么设(附件中无具体说明)?DC的ADDR恒为零吗,否则为多少?
表端能否设置成一样的SAP?能和DC的一样吗?表端之间能否实现通信?DC怎么实现群发功能?表端能否实现实时上报功能?如何实现?
谢谢!
回复: by deyisupport
您好, 图片没有显示出来, 麻烦您以附件形式在上传一下.谢谢!
回复: by ninghui guo
推荐答案: 答者 Richard Ma你好,中继功能是自动完成的,无法调用。
当网络组好之后,给某个地址的信息会被自动送达到该地址。
回复: by ninghui guo 也就说 ti 的电力线开发套件 开发具体应用 中继程序怎么少写进具体的板子里~TI有自动中继算法库?
回复: by Richard Ma
楼主说的自动中继算法实际应该是指PRIME或者G3的组网功能 要使用现有套件中PRIME或G3的自动中继,必须有数据集中器(data concentrator - DC),在DSP中烧录PRIME或G3固件,通过串口命令其组网即可。或者可以通过修改DSP中程序(请参考附件中的例子)实现。
回复: by ninghui guo 烧录PRIME或者G3固件TI能提供吧。数据集中器必须用TI的么?。现在电力线载波的主要问题是中继问题。部分公司的中继是固定中继,市场迫切需要自动中继的电力线载波产品。希望您能写篇具体文章介绍下tiplc的自动中继的特点和应用方案。
回复: by Richard Ma
PRIME和G3都可以提供直接烧录的固件,数据集中器必须使用符合G3或者PRIME标准的集中器,TI也有相应方案 自动中继功能是符合PRIME和G3的自动中继的要求的,楼主可以参考PRIME和G3的文档。里面有详细说明。 简单说PRIME是树形网络,G3是类似Zigbee的mesh网络。
楼主说的应用方案是指什么内容?
回复: by Jason Chen3
我也想问一下,我们学校想购买TI的PLC产品做研究用途,我也看了TI网站上的产品介绍,说有提供成套软件,不知道这软件是以什么样的形式提供,比如上面所说的中继算法,自组网的程序,我们买到以后,拿来能够修改学习吗?或者说是开源的吗?
回复: by Richard Ma
软件是以烧录固件的形式提供的。但也以lib的形式开放了底层PHY的API,MAC层的API,可以基于PHY层API开始设计自己的自组网程序。
回复: by lei zhou
DSP是指的c2000不?例子程序的中注册和连接是不是MAC层做的工作? 假如现在利用外围接口(430)来完成外围设备和PLC的通信过程,有没有相关程序(完成注册和连接)
回复: by Richard Ma
DSP指的就是C2000系列芯片。注册和连接是DSP网络层的工作。 现在没有示例程序,不过楼上可以参考附件中的示例报文,程序其实很简单。
1882.PRIME meter_bootup_sequence.pdf
回复: by lei zhou 嗯,现在我们是利用430(或者M3)这个外围设备进行注册和登记,程序是比较简单,这个报文应该还有一个数据传输(data transfer)吧?这个数据传输的报文是固定的吗? http://www.deyisupport.com/blog/b/smartgrid/archive/2012/11/26/jones-chen-plc-plc.aspx 就像这个链接上所说的
回复: by Richard Ma
是的,会有一个data_transfer。
这个报文的结构是一样的,但每个报文会根据数据的长度,在帧头的长度、CRC信息部分发生变化。所以需要根据要发送的数据进行组帧。
回复: by Richard Ma
另外组帧时候可以参考附件中的说明文档。(2.1节以及Page11)
在文档的最末附录中有CRC16的实现代码,楼主无需自行计算CRC。
3124.PRIME_Host_Message_Specifications.pdf
回复: by lei zhou ATTACH confirm 中的BASE address :00 00 是不是值的是DC的地址
回复: by Richard Ma
是DC的地址。
回复: by lei zhou
那DLSAP和SLSAP怎么得到?
回复: by Richard Ma
SAP是一个4-32协议中的概念,类似于TCP协议中的端口(socket)。即收发一定会通过一个SAP(socket),而端口本身是应用层指定的(自选)。
在DC端,可以通过BindSAP来申请一个SAP_A,发送时候指定接收端的SAP_B。在接收时,表端会收到数据显示是从DC的SAP_A发来的,发给SAP_B的,这时候表端就可以根据需要自行处理了。
回复: by lei zhou
如果我要计算MsgHeaderCRC16的值,是不是就是计算前4位数据就行了,然后MsgBodyCRC16是计算消息负载
回复: by lei zhou
data_transfer是从host到plc的,那么我在发送这个data的时候怎么去知道这么DLSAP呢,在注册的过程中,消息格式中也没有带上DLSAP和SLSAP,我要怎样才能从消息中获得这个SAP呢?全部置 0x00 吗? 而且,Jones Chen在他的文章上这么说"数据的传输一定是由DC端发起的"。那么数据那要是我的电表被偷电了,我要主动上报,这种情况的数据肯定不是从DC过来的吧,这种情况下,应该怎么办?
回复: by Richard Ma
是的 Header的CRC值由Header的前4个Byte计算获得。 Body部分的CRC由整个message payload计算获得。
回复: by Richard Ma
在DC第一次发消息时候就可以知道DC从哪个SAP发送给SN的。而SN使用哪个SAP是表端自己选择的。 DC的SAP选好后,需要调用BindSAP来绑定该SAP。
回复: by Richard Ma
不好意思,更正一下,之前说的有误,PRIME是可以支持主动上报的。
回复: by lei zhou
请教一下,我在看7167.PRIME_Host_Message_Specifications.pdf和2425.TI_plcSUITE_prime_dc_host_msg.pdf,看到两边都有SAP,DC端是SSAP和DSAP,表端是SLSAP和DLSAP,我想问一下,这两个边的SAP意义是否一样,是不是DC端的SSAP=表端的DLSAP?还有这个L代表什么意思?
回复: by Richard Ma
我的理解是,两边的SAP是一个概念。 DSAP和SSAP要看数据方向: [DC -> Meter] 对于DC (data request):DSAP - 表端的SAP,SSAP - DC的SAP 对于Meter (data indication):DLSAP - 表端的SAP,SLSAP - DC的SAP
[Meter -> DC] 对于Meter (data request):DLSAP - DC的SAP,SLSAP - 表端的SAP 对于DC (data indication):DSAP - DC的SAP,SSAP - 表端的SAP
回复: by Jeanne Yi
Lei, 你好! 表端在发送data request数据包时不能用ATTACH confirm 中"BASE address "地址作为“Destination Address”,而要用ATTACH confirm 中的Source Address,否则DC端是收不到数据的。 Thanks! Jeanne
回复: by lei zhou
嗯,我也是这么理解的,但是DC端的DSAP和SSAP是占两个字节,而meter端的DLSAP和SLSAP是占1个字节,这个是怎么回事,现在是想得到DLSAP和SLSAP来重组帧
回复: by lei zhou
哦,好的,明白了,谢谢。那,DSLAP和SLSAP怎么得到?我对集中器DC和表端模块通信的理解的是,外部应用向DC发送一个绑定本地SAP的消息,然后DC确认绑定,接着外部向DC进行数据请求,这个请求到达表端,这个请求帧里面有SSAP和DSAP,我取出这两个地址,把SDU给电表,电表给回复,也就是data request的data数据域,然后在430里面组帧data request,这样的理解对不对?前提是完成了注册和连接。
回复: by Jeanne Yi
SPEC中描述的DC端DSAP和SSAP是占两个字节,但实际在使用中只用到了低8位,该参数的取值范围为0~191,所以在Meter端的一个字节的DLSAP和SLSAP其实就是和DC端的低字节对应。
回复: by lei zhou
嗯,那不是之前说一个DC下能挂1000多个电表的吗?那现在一个字节的话不就只能挂几百个电表了吗? 还有刚刚我说的通信流程是否正确啊?
回复: by Jeanne Yi
表端只要从data indication数据包中取出SSAP作为自己的DLSAP就可以了,data indication中的DSAP可以不用管。
回复: by Jeanne Yi
1000多个表的地址是靠IEC-432的地址(即12 bit 的Destination Address)来寻址的,不是用SAP,SAP只是本地的Service access point,本地可以用这个作为索引来分出多组数据。
回复: by lei zhou
那也就说,假如我有两个电表,是不是可以是相同的SAP,但是EUI是不一样的?
回复: by lei zhou
如果我不去管DSAP的话,我在430里面做数据转发的时候,有个host向PLC的数据请求,8510.Host Message Sequence.pdf之前Richard Ma说430(host)data_request要组帧,这个帧里面的SLSAP该通过什么方式去得到,就算是系统自动分的话,我在写请求帧的时候也要组进去的。不管的话,置0吗? 430(host MCU)在发数据请求帧的时候也是要遵循附件主机消息协议的帧的格式的吧? 您能不能讲一下430(host MCU)数据转发是怎么做的?现在有点绕了。
回复: by Jeanne Yi
lei zhou
那也就说,假如我有两个电表,是不是可以是相同的SAP,但是EUI是不一样的?
是的,如果把每个表看做一个函数,SAP可以认为是这个函数里面的局部变量。
回复: by Jeanne Yi
lei zhou
如果我不去管DSAP的话,我在430里面做数据转发的时候,有个host向PLC的数据请求,8510.Host Message Sequence.pdf之前Richard Ma说430(host)data_request要组帧,这个帧里面的SLSAP该通过什么方式去得到,就算是系统自动分的话,我在写请求帧的时候也要组进去的。不管的话,置0吗?
430(host MCU)在发数据请求帧的时候也是要遵循附件主机消息协议的帧的格式的吧?
您能不能讲一下430(host MCU)数据转发是怎么做的?现在有点绕了。
我个人理解,SLSAP相当于数据索引。比如你的数据源分几组,那就用这个SLSAP来作为每组数据源的索引,举例来说:有一组是控制数据,一组是信息数据,那么可以分配SLSAP=0的数据帧来传送控制数据,而SLSAP=1的数据帧来传送信息数据。如果不需要分组,那就都用0。 希望能帮到您! 谢谢!
回复: by lei zhou
谢谢您的帮助,我结合您的意思再看看文档。
回复: by lei zhou
3858.数据集中器系统解决方案.pdf你好,我想问一下这个文档里面的这个板子的原理图你们有没有?主要是想知道哪几个串口是用在OMAPL138上面的,是不是两个串口都有用?
回复: by ninghui guo
您好 ti的载波论坛说以lib的形式开放了底层PHY的API,MAC层的API,可以基于PHY层API开始设计自己的自组网程序。请问您API设计自己的自组网程序具体怎么设计 有没有例程步骤。
回复: by Richard Ma
另外Zigbee也是一种典型的自组网协议,也可以参考下其实现方式:
|