//public int Fetch(_stCfgSocketPlcSiemens stCfg) public int ReadPlc(_stCfgSocketPlcSiemens stCfg) { byte[] pbyBuff = new byte[255]; int nR; m_stCfgRead = stCfg; pbyBuff[0] = (byte)'S'; pbyBuff[1] = (byte)'5'; pbyBuff[2] = (byte)16; pbyBuff[3] = (byte)1; pbyBuff[4] = (byte)3; pbyBuff[5] = (byte)5; pbyBuff[6] = (byte)3; pbyBuff[7] = (byte)8; pbyBuff[8] = (byte)m_stCfgRead.nORG; pbyBuff[9] = (byte)m_stCfgRead.nDBNR; pbyBuff[10] = (byte)((m_stCfgRead.nStart >> 8) & 0xFF); pbyBuff[11] = (byte)((m_stCfgRead.nStart >> 0) & 0xFF); pbyBuff[12] = (byte)((m_stCfgRead.nLen >> 8) & 0xFF); pbyBuff[13] = (byte)((m_stCfgRead.nLen >> 0) & 0xFF); pbyBuff[14] = 0xFF; pbyBuff[15] = (byte)2; // 2011.04.30 마cto ClearBuffer(); nR = Send(pbyBuff, 16, _RESPONSE_TIME); if (nR == 1) { // 2014.12.21 for (int i = 0; i < _RETRY_RECEIVE; i++) { nR = FetchResponse(_RESPONSE_TIME); if (nR == 0) { return(1); } // 2015.04.13 Thread.Sleep(_RESPONSE_DELAY); //AUtil.Delay(_RESPONSE_DELAY, true); } nR *= 10; } return(nR); }
//public int Write(_stCfgSocketPlcSiemens stCfg) public int WritePlc(_stCfgSocketPlcSiemens stCfg) { byte[] pbyBuff = new byte[2048 + 16]; int nLen, nR; m_stCfgWrite = stCfg; pbyBuff[0] = (byte)'S'; pbyBuff[1] = (byte)'5'; pbyBuff[2] = (byte)16; pbyBuff[3] = (byte)1; pbyBuff[4] = (byte)3; pbyBuff[5] = (byte)3; pbyBuff[6] = (byte)3; pbyBuff[7] = (byte)8; pbyBuff[8] = (byte)m_stCfgWrite.nORG; pbyBuff[9] = (byte)m_stCfgWrite.nDBNR; pbyBuff[10] = (byte)((m_stCfgWrite.nStart >> 8) & 0xFF); pbyBuff[11] = (byte)((m_stCfgWrite.nStart >> 0) & 0xFF); pbyBuff[12] = (byte)((m_stCfgWrite.nLen >> 8) & 0xFF); pbyBuff[13] = (byte)((m_stCfgWrite.nLen >> 0) & 0xFF); pbyBuff[14] = 0xFF; pbyBuff[15] = (byte)2; nLen = m_stCfgWrite.nLen; if (m_stCfgWrite.nORG != 1) { for (int i = 0; i < nLen; i++) { pbyBuff[i + 16] = (byte)m_pnDataWrite[i]; } } else { nLen *= 2; for (int i = 0; i < nLen; i += 2) { pbyBuff[i + 16 + 0] = (byte)((m_pnDataWrite[i / 2] >> 8) & 0xFF); pbyBuff[i + 16 + 1] = (byte)((m_pnDataWrite[i / 2] >> 0) & 0xFF); } } // 2011.04.30 마cto ClearBuffer(); nR = Send(pbyBuff, 16 + nLen, _RESPONSE_TIME); if (nR == 1) { // 2014.12.21 for (int i = 0; i < _RETRY_RECEIVE; i++) { nR = WriteAcknowledgement(_RESPONSE_TIME); if (nR == 0) { return(1); } // 2015.04.13 Thread.Sleep(_RESPONSE_DELAY); //AUtil.Delay(_RESPONSE_DELAY, true); } nR *= 10; } return(nR); }