<p>IEC61850采用客户端/服务器模型的ACSI核心服务与MMS服务也有高度的相关性,但是IEC61850的ACSI服务和MMS服务之间也并非一一对应的关系。</p> <ol> <li>有的ACSI服务(如关联服务Associate)可以直接映射到一个MMS的Initiate服务 <li>有的ACSI服务需要分解并分别映射到多个MMS服务上才能实现最后需要的结果,如GetFile服务。 <li>还有更多的情况是多个ACSI服务映射到同个MMS服务上,最突出的就是MMS的读Read和写Write服务,MMS的Read和Write服务抽象级很高可以满足很多需求</li></ol> <p>IEC61850与MMS服务的映射关系如下表:</p> <table border="1" cellspacing="0" cellpadding="1" width="632"> <tbody> <tr> <td valign="top" width="48">编号</td> <td valign="top" width="225">IEC61850对象</td> <td valign="top" width="126">ACSI服务</td> <td valign="top" width="231">MMS服务</td></tr> <tr> <td valign="top" width="48">1</td> <td valign="top" width="225">服务器(Server)</td> <td valign="top" width="126">GetServerDirectory</td> <td valign="top" width="231">GetNamedList</td></tr> <tr> <td valign="top" width="48">2</td> <td valign="top" width="225">逻辑设备(LDevice)</td> <td valign="top" width="126">GetLogicalDeviceDirectory</td> <td valign="top" width="231">GetNamedList</td></tr> <tr> <td valign="top" width="48">3</td> <td valign="top" rowspan="2" width="225">逻辑节点(LNode)</td> <td valign="top" width="126">GetLogicalNodeDirectory</td> <td valign="top" width="231">GetNamedList</td></tr> <tr> <td valign="top" width="48">4</td> <td valign="top" width="126">GetAllDataValues</td> <td valign="top" width="231">Read</td></tr> <tr> <td valign="top" width="48">5</td> <td valign="top" rowspan="4" width="225">数据(Data)</td> <td valign="top" width="126">GetDataValues</td> <td valign="top" width="231">Read</td></tr> <tr> <td valign="top" width="48">6</td> <td valign="top" width="126">SetDataValues</td> <td valign="top" width="231">Write</td></tr> <tr> <td valign="top" width="48">7</td> <td valign="top" width="126">GetDataDirectory</td> <td valign="top" width="231">GetVariableAccessAttribute</td></tr> <tr> <td valign="top" width="48">8</td> <td valign="top" width="126">GetDataDefinition</td> <td valign="top" width="231">GetVariableAccessAttribute</td></tr> <tr> <td valign="top" width="48">9</td> <td valign="top" rowspan="5" width="225">数据集(DataSet)</td> <td valign="top" width="126">GetDataSetValues</td> <td valign="top" width="231">Read</td></tr> <tr> <td valign="top" width="48">10</td> <td valign="top" width="126">SetDataValues</td> <td valign="top" width="231">Write</td></tr> <tr> <td valign="top" width="48">11</td> <td valign="top" width="126">CreateDataSet</td> <td valign="top" width="231">DefineNamedVariableList</td></tr> <tr> <td valign="top" width="48">12</td> <td valign="top" width="126">DeleteDataSet</td> <td valign="top" width="231">DeleteNamedVariableList</td></tr> <tr> <td valign="top" width="48">13</td> <td valign="top" width="126">GetDataSetDirectory</td> <td valign="top" width="231">GetNamedVariableListAttribute</td></tr> <tr> <td valign="top" width="48">14</td> <td valign="top" rowspan="5" width="225">报告控制块(RCB)</td> <td valign="top" width="126">Report</td> <td valign="top" width="231">InformationReport</td></tr> <tr> <td valign="top" width="48">15</td> <td valign="top" width="126">GetBRCBValues</td> <td valign="top" width="231">Read</td></tr> <tr> <td valign="top" width="48">16</td> <td valign="top" width="126">SetBRCBValues</td> <td valign="top" width="231">Write</td></tr> <tr> <td valign="top" width="48">17</td> <td valign="top" width="126">GetURCBValues</td> <td valign="top" width="231">Read</td></tr> <tr> <td valign="top" width="48">18</td> <td valign="top" width="126">SetURCBValues</td> <td valign="top" width="231">Write</td></tr> <tr> <td valign="top" width="48">19</td> <td valign="top" rowspan="6" width="225">控制(Control)</td> <td valign="top" width="126">Select</td> <td valign="top" width="231">Read</td></tr> <tr> <td valign="top" width="48">20</td> <td valign="top" width="126">Select With Value</td> <td valign="top" width="231">Write</td></tr> <tr> <td valign="top" width="48">21</td> <td valign="top" width="126">Cancel</td> <td valign="top" width="231">Write</td></tr> <tr> <td valign="top" width="48">22</td> <td valign="top" width="126">Operate</td> <td valign="top" width="231">Write</td></tr> <tr> <td valign="top" width="48">23</td> <td valign="top" width="126">TimeActivatedOperate</td> <td valign="top" width="231">Write</td></tr> <tr> <td valign="top" width="48">24</td> <td valign="top" width="126">CommandTermination</td> <td valign="top" width="231">InformationReport</td></tr> <tr> <td valign="top" width="48">25</td> <td valign="top" rowspan="4" width="225">文件(File)</td> <td valign="top" width="126">GetFile</td> <td valign="top" width="231">FileOpen,FileRead,FileClose</td></tr> <tr> <td valign="top" width="48">26</td> <td valign="top" width="126">SetFile</td> <td valign="top" width="231">ObtainFile</td></tr> <tr> <td valign="top" width="48">27</td> <td valign="top" width="126">DeleteFile</td> <td valign="top" width="231">FileDelete</td></tr> <tr> <td valign="top" width="48">28</td> <td valign="top" width="126">GetFileAttributeValues</td> <td valign="top" width="231">Sequence of FileDirectory</td></tr> <tr> <td valign="top" width="48">29</td> <td valign="top" rowspan="6" width="225">定值组控制块(SGCB)</td> <td valign="top" width="126">SelectActiveSG</td> <td valign="top" width="231">Write</td></tr> <tr> <td valign="top" width="48">30</td> <td valign="top" width="126">SelectEditSG</td> <td valign="top" width="231">Write</td></tr> <tr> <td valign="top" width="48">31</td> <td valign="top" width="126">SetSGValues</td> <td valign="top" width="231">Write</td></tr> <tr> <td valign="top" width="48">32</td> <td valign="top" width="126">ConfirmEditSGValues</td> <td valign="top" width="231">Write</td></tr> <tr> <td valign="top" width="48">33</td> <td valign="top" width="126">GetSGValues</td> <td valign="top" width="231">Read</td></tr> <tr> <td valign="top" width="48">34</td> <td valign="top" width="126">GetSGCBValues</td> <td valign="top" width="231">Read</td></tr> <tr> <td valign="top" width="48">35</td> <td valign="top" rowspan="5" width="225">日志控制块(LCB)</td> <td valign="top" width="126">GetLCBValues</td> <td valign="top" width="231">Read</td></tr> <tr> <td valign="top" width="48">36</td> <td valign="top" width="126">SetLCBValues</td> <td valign="top" width="231">Write</td></tr> <tr> <td valign="top" width="48">37</td> <td valign="top" width="126">GetLogStatusValues</td> <td valign="top" width="231">Read</td></tr> <tr> <td valign="top" width="48">38</td> <td valign="top" width="126">QueryLogByTime</td> <td valign="top" width="231">ReadJournal</td></tr> <tr> <td valign="top" width="48">39</td> <td valign="top" width="126">QueryLogAfter</td> <td valign="top" width="231">ReadJournal</td></tr> <tr> <td valign="top" width="48">40</td> <td valign="top" rowspan="2" width="225">取代(Substitution)</td> <td valign="top" width="126">GetDataValues</td> <td valign="top" width="231">Read</td></tr> <tr> <td valign="top" width="48">41</td> <td valign="top" width="126">SetDataValues</td> <td valign="top" width="231">Write</td></tr> <tr> <td valign="top" width="48">42</td> <td valign="top" rowspan="2" width="225">GSE / GOOSE</td> <td valign="top" width="126">GetGoCBValues</td> <td valign="top" width="231">Read</td></tr> <tr> <td valign="top" width="48">43</td> <td valign="top" width="126">SetGoCBValues</td> <td valign="top" width="231">Write</td></tr> <tr> <td valign="top" width="48">44</td> <td valign="top" rowspan="2" width="225">GSE / GSSE</td> <td valign="top" width="126">GetGsCBValues</td> <td valign="top" width="231">Read</td></tr> <tr> <td valign="top" width="48">45</td> <td valign="top" width="126">SetGsCBValues</td> <td valign="top" width="231">Write</td></tr> <tr> <td valign="top" width="48">46</td> <td valign="top" width="225">关取(Associate)</td> <td valign="top" width="126">Associate</td> <td valign="top" width="231">Initiate</td></tr> <tr> <td valign="top" width="48">47</td> <td valign="top" width="225"> </td> <td valign="top" width="126">Abort</td> <td valign="top" width="231">Abort</td></tr> <tr> <td valign="top" width="48">48</td> <td valign="top" width="225"> </td> <td valign="top" width="126">Release</td> <td valign="top" width="231">Conclude</td></tr></tbody></table>