1.深圳104总召发的是双点
// 发送总召唤数据(YX/YC)函数
WORD Rtu_IEC104_Send_AllXC( BYTE byHostNo,BYTE byFlagCH )
{
if(byQOI==20) //总召
{
if(CONST_SIGNAL_YX_DP ==ptDataCtrl->wSendKind)
{ // 发送双点遥信
wMsgLen = Rtu_IEC104_Send003_DP( byHostNo, byFlagCH, byQOI );
if( wMsgLen==0 )
{// 下次开始发送单点遥信数据
ptDataCtrl->wOffsetYX = 0;
ptDataCtrl->wSendKind = CONST_SIGNAL_YX_SP;
}
}
}
1.总召发数据:
WORD Rtu_IEC104_Send_AllXC( BYTE byHostNo,BYTE byFlagCH )
{
if(CONST_SIGNAL_YX_DP ==ptDataCtrl->wSendKind)
}
2.ptDataCtrl->wSendKind的定义://先双点,再单点,再遥测!
用来控制发送流程::先发wSendKind = CONST_SIGNAL_YX_DP;-->CONST_SIGNAL_YX_SP-->CONST_SIGNAL_YC.
if(byQOI==20) //总召
{
if(CONST_SIGNAL_YX_DP ==ptDataCtrl->wSendKind)
{ // 发送双点遥信
wMsgLen = Rtu_IEC104_Send003_DP( byHostNo, byFlagCH, byQOI );
if( wMsgLen==0 )
{// 下次开始发送单点遥信数据
ptDataCtrl->wOffsetYX = 0;
ptDataCtrl->wSendKind = CONST_SIGNAL_YX_SP;
}
}
if((wMsgLen==0)&&(CONST_SIGNAL_YX_SP ==ptDataCtrl->wSendKind))
{ // 发送单点遥信
if(ptParam104->byIGIYxType)
{
wMsgLen = Rtu_IEC104_Send020_SP( byHostNo, byFlagCH, byQOI );
}
else wMsgLen = Rtu_IEC104_Send001_SP( byHostNo, byFlagCH, byQOI );
if( wMsgLen==0 )
{// 下次开始发送遥测数据
ptDataCtrl->wSendKind = CONST_SIGNAL_YC;
}
}
if((wMsgLen==0)&&(CONST_SIGNAL_YC ==ptDataCtrl->wSendKind))
{ // 发送遥测
wMsgLen = Rtu_IEC104_Send000_YC( byHostNo, byFlagCH, byQOI );
if( 0==wMsgLen )
{ // 数据发送完毕,发送总召唤结束报文
wMsgLen = Rtu_IEC104_Send100_IgiXC( byHostNo, byFlagCH, 0, 0x14 );
}
}
3.总召的类型:--发单点时,总召类型选择,可选择发双点:
if((wMsgLen==0)&&(CONST_SIGNAL_YX_SP ==ptDataCtrl->wSendKind))
{ // 发送单点遥信
if(ptParam104->byIGIYxType)
{
wMsgLen = Rtu_IEC104_Send020_SP( byHostNo, byFlagCH, byQOI ); //发双点;
}
else wMsgLen = Rtu_IEC104_Send001_SP( byHostNo, byFlagCH, byQOI );//发单点。
if( wMsgLen==0 )
{// 下次开始发送遥测数据
ptDataCtrl->wSendKind = CONST_SIGNAL_YC;
}
}
现场问题原因:数据库版本不对v3.5以上,解析错误。