<?xml version="1.0" encoding="Shift_JIS"?>
<?xml-stylesheet type="text/xsl" href="../Fmethod_xsl/fmethod_he_c.xsl"?>

<root>
    <func>


        <!-- 関数名 -->
        <title>cnc_alarm</title>



        <!-- 関数宣言 -->
        <declare>
            <!-- Visual C++の宣言 -->
            <vc>
                <include>#include "fwlib32.h"</include>
                <prottype>FWLIBAPI short WINAPI cnc_alarm(unsigned short FlibHndl, ODBALM *alarm);</prottype>
            </vc>
        </declare>



        <!-- 解説 -->
        <doc>
            <cmn>
                <p>
                    CNC側がアラーム状態になっている時、その内容を読み出します。各種情報はODBALM内のdataに格納されます。
                </p>
                <p>
                    アプリケーションプログラムでCNC側のアラーム状態を監視し、保守情報の表示や解除の手順のガイダンスの表示などに使用します。 
                </p>
                <p>
                    CNCがシステムアラームの場合は、通信は一切不可能なため、アラームステータスの獲得は行えません。 
                </p>
                <p>
                    本関数では、Series 150i, 300iの全てのアラームステータスを読み出すことはできません。
                    Series 150i, 300iの全てのアラームステータスを読み出すには、
                    <a href="misc/cnc_alarm2.htm" target="_parent">cnc_alarm2</a>関数を使用して下さい。 
                </p>
            </cmn>
            <!-- 300is -->
            <is>
                <cmn>
                    <p>
                        CNC側がアラーム状態になっている時、その内容を読み出します。
                        各種情報はODBALM内のdataに格納されます。
                    </p>
                    <p>
                        アプリケーションプログラムでCNC側のアラーム状態を監視し、保守情報の表示や解除の手順のガイダンスの表示などに使用します。 
                    </p>
                    <p>
                        CNCがシステムアラームの場合は、通信は一切不可能なため、アラームステータスの獲得は行えません。 
                    </p>
                    <p>
                        本関数では、全てのアラームステータスを読み出すことはできません。
                        全てのアラームステータスを読み出すには、
                        <a href="misc/cnc_alarm2.htm" target="_parent">cnc_alarm2</a>関数を使用して下さい。 
                    </p>
                </cmn>
            </is>
        </doc>



        <!-- 引数 -->
        <argument>
            <common>
                <vc>
                    <item>
                        <name>FlibHndl</name>
                        <type>in</type>
                        <content>
                            <p>
                                ライブラリハンドルです。詳細は、「<a href="handle.htm" target="_parent">ライブラリハンドル</a>」を参照して下さい。
                            </p>
                        </content>
                    </item>
                    <item>
                        <name>alarm</name>
                        <type>out</type>
                        <content>
                            <p>
                                アラームステータス情報を返すODBALM構造体へのポインタです。
                            </p>
                            <p>
                                ODBALM構造体は次の通りです。
                            </p>
<pre>
typedef struct odbalm {
     short  dummy[2] ;      /* 未使用 */
     short  data ;          /* アラームステータス */
} ODBALM ;
</pre>
                        <dt>dummy</dt>
                            <dd>未使用</dd>
                        <dt>data</dt>
                            <dd>アラームステータス</dd>
                            <dd>各ビットの意味は次の通りです。<br/>
                                <ul>
                                    <li>Series 150/150i</li>
                                        <table class="dd">
                                                <tr><td>#00</td> <td>:</td> <td>バックグラウンド用P/S</td>               <td>(BG)</td></tr>
                                                <tr><td>#01</td> <td>:</td> <td>フォアグラウンド用P/S</td>               <td>(PS)</td></tr>
                                                <tr><td>#02</td> <td>:</td> <td>オーバーヒート(Series 150のみ)</td>      <td>(OH)</td></tr>
                                                <tr><td>#03</td> <td>:</td> <td>サブCPUエラー(Series 150のみ)</td>       <td>(SB)</td></tr>
                                                <tr><td>#04</td> <td>:</td> <td>同期誤差過大エラー</td>                  <td>(SN)</td></tr>
                                                <tr><td>#05</td> <td>:</td> <td>パラメータ書込みスイッチオン</td>        <td>(SW)</td></tr>
                                                <tr><td>#06</td> <td>:</td> <td>オーバトラベル/外部データ入力エラー</td> <td>(OT)</td></tr>
                                                <tr><td>#07</td> <td>:</td> <td>PMCエラー</td>                           <td>(PC)</td></tr>
                                                <tr><td>#08</td> <td>:</td> <td>外部アラームメッセージ (1)</td>          <td>(EX)</td></tr>
                                                <tr><td>#09</td> <td>:</td> <td>(未使用) </td>                           <td></td>    </tr>
                                                <tr><td>#10</td> <td>:</td> <td>重症のP/S</td>                           <td>(SR)</td></tr>
                                                <tr><td>#11</td> <td>:</td> <td>(未使用)</td>                            <td></td>    </tr>
                                                <tr><td>#12</td> <td>:</td> <td>サーボアラーム</td>                      <td>(SV)</td></tr>
                                                <tr><td>#13</td> <td>:</td> <td>I/Oエラー</td>                           <td>(IO)</td></tr>
                                                <tr><td>#14</td> <td>:</td> <td>電源断が必要なパラメータの入力</td>      <td>(PW)</td></tr>
                                                <tr><td>#15</td> <td>:</td> <td>システムアラーム(Series 150iのみ)</td>   <td>(SY)</td></tr>
                                        </table>
                                    <li>Series 160/180/210, 160i/180i/210i, 0i, Power Mate i</li>
                                        <table class="dd">
                                                <tr><td>#00</td> <td>:</td> <td>P/S100</td>                            </tr>
                                                <tr><td>#01</td> <td>:</td> <td>P/S000</td>                            </tr>
                                                <tr><td>#02</td> <td>:</td> <td>P/S101</td>                            </tr>
                                                <tr><td>#03</td> <td>:</td> <td>P/Sその他</td>                         </tr>
                                                <tr><td>#04</td> <td>:</td> <td>オーバトラベルアラーム</td>            </tr>
                                                <tr><td>#05</td> <td>:</td> <td>オーバヒートアラーム</td>              </tr>
                                                <tr><td>#06</td> <td>:</td> <td>サーボアラーム</td>                    </tr>
                                                <tr><td>#07</td> <td>:</td> <td>システムアラーム</td>                  </tr>
                                                <tr><td>#08</td> <td>:</td> <td>APCアラーム</td>                       </tr>
                                                <tr><td>#09</td> <td>:</td> <td>スピンドルアラーム</td>                </tr>
                                                <tr><td>#10</td> <td>:</td> <td>P/S5000番台、パンチプレスアラーム</td> </tr>
                                                <tr><td>#11</td> <td>:</td> <td>レーザアラーム</td>                    </tr>
                                                <tr><td>#12</td> <td>:</td> <td>(未使用) </td>                         </tr>
                                                <tr><td>#13</td> <td>:</td> <td>リジッドタップアラーム</td>            </tr>
                                                <tr><td>#14</td> <td>:</td> <td>(未使用)</td>                          </tr>
                                                <tr><td>#15</td> <td>:</td> <td>外部アラームメッセージ</td>            </tr>
                                        </table>
                                    <li>Series 160i/180i-W </li>
                                        <table class="dd">
                                                <tr><td>#00</td> <td>:</td> <td>Ｐ/Ｓアラーム</td>          </tr>
                                                <tr><td>#01</td> <td>:</td> <td>オーバトラベルアラーム</td> </tr>
                                                <tr><td>#02</td> <td>:</td> <td>サーボアラーム</td>         </tr>
                                                <tr><td>#03</td> <td>:</td> <td>(未使用)</td>               </tr>
                                                <tr><td>#04</td> <td>:</td> <td>オーバトラベルアラーム</td> </tr>
                                                <tr><td>#05</td> <td>:</td> <td>ストロークリミット１</td>   </tr>
                                                <tr><td>#06</td> <td>:</td> <td>ストロークリミット２</td>   </tr>
                                                <tr><td>#07</td> <td>:</td> <td>編集アラーム</td>           </tr>
                                                <tr><td>#08</td> <td>:</td> <td>ＡＰＣアラーム</td>         </tr>
                                                <tr><td>#09</td> <td>:</td> <td>(未使用)</td>               </tr>
                                                <tr><td>#10</td> <td>:</td> <td>P/S 5000番台アラーム</td>   </tr>
                                                <tr><td>#11</td> <td>:</td> <td>(未使用)</td>               </tr>
                                                <tr><td>#12</td> <td>:</td> <td>(未使用) </td>              </tr>
                                                <tr><td>#13</td> <td>:</td> <td>(未使用)</td>               </tr>
                                                <tr><td>#14</td> <td>:</td> <td>外部アラームメッセージ</td> </tr>
                                                <tr><td>#15</td> <td>:</td> <td>後退アラーム</td>           </tr>
                                        </table>
                                    <li>Series 300i</li>
                                        <table class="dd">
                                                <tr><td>#00</td> <td>:</td> <td>パラメータ書込みスイッチオン</td>        <td>(SW)</td></tr>
                                                <tr><td>#01</td> <td>:</td> <td>電源断が必要なパラメータの入力</td>      <td>(PW)</td></tr>
                                                <tr><td>#02</td> <td>:</td> <td>I/Oエラー</td>                           <td>(IO)</td></tr>
                                                <tr><td>#03</td> <td>:</td> <td>フォアグラウンド用P/S</td>               <td>(PS)</td></tr>
                                                <tr><td>#04</td> <td>:</td> <td>オーバトラベル/外部データ入力エラー</td> <td>(OT)</td></tr>
                                                <tr><td>#05</td> <td>:</td> <td>オーバーヒート</td>                      <td>(OH)</td></tr>
                                                <tr><td>#06</td> <td>:</td> <td>サーボアラーム</td>                      <td>(SV)</td></tr>
                                                <tr><td>#07</td> <td>:</td> <td>データ入出力のエラー</td>                <td>(SR)</td></tr>
                                                <tr><td>#08</td> <td>:</td> <td>マクロアラーム</td>                      <td>(MC)</td></tr>
                                                <tr><td>#09</td> <td>:</td> <td>スピンドルアラーム</td>                  <td>(SP)</td></tr>
                                                <tr><td>#10</td> <td>:</td> <td>その他のアラーム(DS)</td>                <td>(DS)</td></tr>
                                                <tr><td>#11</td> <td>:</td> <td>誤動作防止機能に関するアラーム</td>      <td>(IE)</td></tr>
                                                <tr><td>#12</td> <td>:</td> <td>バックグラウンド用P/S</td>               <td>(BG)</td></tr>
                                                <tr><td>#13</td> <td>:</td> <td>同期誤差過大エラー</td>                  <td>(SN)</td></tr>
                                                <tr><td>#14</td> <td>:</td> <td>予約</td>                                <td>    </td></tr>
                                                <tr><td>#15</td> <td>:</td> <td>外部アラームメッセージ</td>              <td>(EX)</td></tr>

                                        </table>
                                </ul>
                            </dd>
                        </content>
                    </item>
                </vc>
            </common>

            <!-- 300is -->
            <is>
                <hssb>
                    <vc>
                        <item>
                            <name>FlibHndl</name>
                            <type>in</type>
                            <content>
                                <p>
                                    ライブラリハンドルです。
                                    詳細は、「<a href="handle.htm" target="_parent">ライブラリハンドル</a>」を参照して下さい。
                                </p>
                            </content>
                        </item>

                        <item>
                            <name>alarm</name>
                            <type>out</type>
                            <content>
                                <p>
                                    アラームステータス情報を返すODBALM構造体へのポインタです。
                                </p>
                                <p>
                                    ODBALM構造体は次の通りです。
                                </p>
<pre>
typedef struct odbalm {
     short  dummy[2] ;      /* 未使用 */
     short  data ;          /* アラームステータス */
} ODBALM ;
</pre>
                            <dt>dummy</dt>
                                <dd>未使用</dd>
                            <dt>data</dt>
                                <dd>アラームステータス</dd>
                                <dd>各ビットの意味は次の通りです。<br/><br/>
                                <table class="dd">
                                    <tr><td>#00</td> <td>:</td> <td>パラメータ書込みスイッチオン</td>        <td>(SW)</td> </tr>
                                    <tr><td>#01</td> <td>:</td> <td>電源断が必要なパラメータの入力</td>      <td>(PW)</td> </tr>
                                    <tr><td>#02</td> <td>:</td> <td>I/Oエラー</td>                           <td>(IO)</td> </tr>
                                    <tr><td>#03</td> <td>:</td> <td>フォアグラウンド用P/S</td>               <td>(PS)</td> </tr>
                                    <tr><td>#04</td> <td>:</td> <td>オーバトラベル/外部データ入力エラー</td> <td>(OT)</td> </tr>
                                    <tr><td>#05</td> <td>:</td> <td>オーバーヒート</td>                      <td>(OH)</td> </tr>
                                    <tr><td>#06</td> <td>:</td> <td>サーボアラーム</td>                      <td>(SV)</td> </tr>
                                    <tr><td>#07</td> <td>:</td> <td>データ入出力のエラー</td>                <td>(SR)</td> </tr>
                                    <tr><td>#08</td> <td>:</td> <td>マクロアラーム</td>                      <td>(MC)</td> </tr>
                                    <tr><td>#09</td> <td>:</td> <td>スピンドルアラーム</td>                  <td>(SP)</td> </tr>
                                    <tr><td>#10</td> <td>:</td> <td>PSアラームにならないOTアラーム(DS)</td>  <td>(DS)</td> </tr>
                                    <tr><td>#11</td> <td>:</td> <td>誤動作防止機能に関するアラーム</td>      <td>(IE)</td> </tr>
                                    <tr><td>#12</td> <td>:</td> <td>バックグラウンド用P/S</td>               <td>(BG)</td> </tr>
                                    <tr><td>#13</td> <td>:</td> <td>同期誤差過大エラー</td>                  <td>(SN)</td> </tr>
                                    <tr><td>#14</td> <td>:</td> <td>予約</td>                                <td>    </td> </tr>
                                    <tr><td>#15</td> <td>:</td> <td>外部アラームメッセージ</td>              <td>(EX)</td> </tr>
                                </table>
                                </dd>
                            </content>
                        </item>
                    </vc>
                </hssb>
            </is>
        </argument>



        <!-- 戻り値 -->
        <errcode>
            <item>
                <name>EW_PARAM<br/>(Series 150)</name>
                <content>ＣＮＣパラメータの誤り<p/>
                         <li>Series150の場合</li>
                         <dd>電源投入後、7613#0=0 のままです。</dd>
                         <dd>7613#0=1 に設定して下さい。</dd>
                         <dd>注) 7613#0を1→0に設定し直した場合、エラーにはなりませんが、データは無効です。</dd>
              </content>
            </item>
            <!-- 300is -->
            <is>
            </is>
        </errcode>



        <!-- CNCオプション -->
        <option>
            <hssb>拡張ドライバ/ライブラリ機能が必要です。</hssb>
            <ethr><p>イーサネット機能と拡張ドライバ/ライブラリ機能が必要です。</p>
                  <p>但し、Series 160i/180i/210i/0i MODEL B, 300i に関しては次のようになります。</p>
                  <p>組込みイーサネットを使用のとき、</p>
                  <dd>上記２つの機能は必要ありません。</dd>
                  <p>イーサネットボードを使用のとき、</p>
                  <dd>イーサネット機能のみ必要です。</dd>
            </ethr>
        </option>



        <!-- CNCパラメータ -->
        <parameter>
            <type>
                <ul>
                    <li>Series 150</li>
                       7613#0=1（必ず設定して下さい）
                </ul>
            </type>
        </parameter>
        <!-- 300is -->
        <is_parameter>
        </is_parameter>



        <!-- CNCモード -->
        <mode></mode>



        <!-- 対応機種 -->
        <support>
            <!-- M（ミリング） -->
            <m>
                <fs0ia>H</fs0ia>
                <fs0ib>O</fs0ib>
                <fs15>H</fs15>
                <fs15i>O</fs15i>
                <fs16>H</fs16>
                <fs18>H</fs18>
                <fs21>H</fs21>
                <fs16ia>O</fs16ia>
                <fs18ia>O</fs18ia>
                <fs21ia>O</fs21ia>
                <fs16ib>O</fs16ib>
                <fs18ib>O</fs18ib>
                <fs21ib>O</fs21ib>
                <fs30i>O</fs30i>
            </m>
            <!-- T（旋盤） -->
            <t>
                <fs0ia>H</fs0ia>
                <fs0ib>O</fs0ib>
                <fs15>H</fs15>
                <fs15i>X</fs15i>
                <fs16>H</fs16>
                <fs18>H</fs18>
                <fs21>H</fs21>
                <fs16ia>O</fs16ia>
                <fs18ia>O</fs18ia>
                <fs21ia>O</fs21ia>
                <fs16ib>O</fs16ib>
                <fs18ib>O</fs18ib>
                <fs21ib>O</fs21ib>
                <fs30i>O</fs30i>
            </t>
            <!-- LC（ローダ制御） -->
            <lc>
                <fs0ia>X</fs0ia>
                <fs0ib>X</fs0ib>
                <fs15>X</fs15>
                <fs15i>X</fs15i>
                <fs16>H</fs16>
                <fs18>H</fs18>
                <fs21>H</fs21>
                <fs16ia>H</fs16ia>
                <fs18ia>H</fs18ia>
                <fs21ia>H</fs21ia>
                <fs16ib>H</fs16ib>
                <fs18ib>H</fs18ib>
                <fs21ib>H</fs21ib>
                <fs30i>X</fs30i>
            </lc>
            <!-- P（パンチプレス） -->
            <p>
                <fs16i>O</fs16i>
                <fs18i>O</fs18i>
            </p>
            <!-- L（レーザ） -->
            <l>
                <fs16i>O</fs16i>
                <fs18i>X</fs18i>
            </l>
            <!-- W（ワイヤカット） -->
            <w>
                <fs16i>O</fs16i>
                <fs18i>O</fs18i>
            </w>
            <!-- PM（パワーメート） -->
            <pw>
                <d>O</d>
                <h>O</h>
            </pw>
            <!-- 300is -->
            <is>
                <!-- M（ミリング） -->
                <m>
                    <fs30is>O</fs30is>
                </m>
                <!-- T（旋盤） -->
                <t>
                    <fs30is>O</fs30is>
                </t>
            </is>
        </support>



        <!-- 参照 -->
        <reference>
            <item>
                <name>cnc_alarm2</name>
                <file>misc/cnc_alarm2.htm</file>
            </item>
            <item>
                <name>cnc_rdalminfo</name>
                <file>misc/cnc_rdalminfo.htm</file>
            </item>
            <item>
                <name>cnc_rdalmmsg</name>
                <file>misc/cnc_rdalmmsg.htm</file>
            </item>

            <is>
                <item>
                    <name>cnc_alarm2</name>
                    <file>misc/cnc_alarm2.htm</file>
                </item>
                <item>
                    <name>cnc_rdalminfo</name>
                    <file>misc/cnc_rdalminfo.htm</file>
                </item>
            </is>
        </reference>



        <!-- プログラム例 -->
        <example>
<vc><![CDATA[
以下のプログラムは発生中のアラームの種類を表示します。
(Series 160/180/210、160i/180i/210i、0i、Power Mate i用)

#include "fwlib32.h"

void example( void )
{
        char *almmsg[] = {
                "P/S 100 ALARM","P/S 000 ALARM",
                "P/S 101 ALARM","P/S ALARM (1-255)",
                "OT ALARM",     "OH ALARM",
                "SERVO ALARM",  "SYSTEM ALARM",
                "APC ALARM",    "SPINDLE ALARM",
                "P/S ALARM (5000-)"
        } ;
        ODBALM buf ;
        unsigned short idx ;
        cnc_alarm( h, &buf ) ;
        if ( buf.data == 0 )
                printf( "NO ALARM\n" ) ;
        else
                for ( idx = 0 ; idx < 11 ; idx++ ) {
                        if ( buf.data & 0x0001 )
                                printf( "%s\n", almmsg[idx] ) ;
                        buf.data >>= 1 ;
                }

}]]></vc>
        <!-- 300is -->
        <is></is>
    </example>



  </func>
</root>
