// 2015.02.25 //public int GetWordOldDI(int nAddress) { return m_pnOldDI[nAddress]; } public int SetBitDO(int nAddress, int n, bool bVal) { int nR = -1; int nTemp; lock (m_AClientSocketPlcSiemensWrite) { // 2014.10.09 nTemp = m_pnOldDO[nAddress]; m_pnOldDO[nAddress] = m_pnDO[nAddress]; if (bVal == true) { m_pnDO[nAddress] |= (1 << n); } else { m_pnDO[nAddress] &= (0xFFFF ^ (1 << n)); } AClientSocketPlcSiemens._stCfgSocketPlcSiemens stCfg; stCfg = new AClientSocketPlcSiemens._stCfgSocketPlcSiemens(); stCfg.nORG = 1; stCfg.nDBNR = m_stWriteAddress.nDB; stCfg.nStart = m_stWriteAddress.nDW * 2 + nAddress * 2; stCfg.nLen = 1; m_AClientSocketPlcSiemensWrite.m_pnDataWrite[0] = m_pnDO[nAddress]; // 2011.04.28 for (int i = 0; i < _RETRY; i++) { nR = m_AClientSocketPlcSiemensWrite.WritePlc(stCfg); if (nR == 1) { break; } } } if (nR == 1) { AUtil.PostMessage(m_hParent, _WM_SOCKET_WRITE_OK, 0, m_nID); /* 2015.02.25 * if (m_pnOldDO[nAddress] != m_pnDO[nAddress]) * { * AUtil.PostMessage(m_hParent, ASDef._WM_CHANGE_DO + m_nID, nAddress, m_pnDO[nAddress]); * } */ } else { m_pnDO[nAddress] = m_pnOldDO[nAddress]; m_pnOldDO[nAddress] = nTemp; AUtil.PostMessage(m_hParent, _WM_SOCKET_WRITE_NG, nR, m_nID); } return(nR); }
public int SetWordDOLen(int nStartAddress, int nLen, int[] pnVal) { int nR = -1; lock (m_AClientSocketPlcSiemensWrite) { // 2014.10.09 AClientSocketPlcSiemens._stCfgSocketPlcSiemens stCfg; stCfg = new AClientSocketPlcSiemens._stCfgSocketPlcSiemens(); stCfg.nORG = 1; stCfg.nDBNR = m_stWriteAddress.nDB; stCfg.nStart = m_stWriteAddress.nDW * 2 + nStartAddress * 2; stCfg.nLen = nLen; for (int i = 0; i < nLen; i++) { m_pnOldDO[nStartAddress + i] = m_pnDO[nStartAddress + i]; m_pnDO[nStartAddress + i] = pnVal[i]; m_AClientSocketPlcSiemensWrite.m_pnDataWrite[i] = m_pnDO[nStartAddress + i]; } // 2011.04.28 for (int i = 0; i < _RETRY; i++) { nR = m_AClientSocketPlcSiemensWrite.WritePlc(stCfg); if (nR == 1) { break; } } } if (nR == 1) { AUtil.PostMessage(m_hParent, _WM_SOCKET_WRITE_OK, 0, m_nID); } else { AUtil.PostMessage(m_hParent, _WM_SOCKET_WRITE_NG, nR, m_nID); } /* 2015.02.25 * for (int i = 0; i < nLen; i++) * { * if (m_pnOldDO[nStartAddress + i] != m_pnDO[nStartAddress + i]) * { * AUtil.PostMessage(m_hParent, ASDef._WM_CHANGE_DO + m_nID, nStartAddress + i, m_pnDO[nStartAddress + i]); * } * } */ return(nR); }
public int SetWordDBDW(int nDB, int nDW, int nVal) { int nR = -1; lock (m_AClientSocketPlcSiemensWrite) { // 2014.10.09 AClientSocketPlcSiemens._stCfgSocketPlcSiemens stCfg; stCfg = new AClientSocketPlcSiemens._stCfgSocketPlcSiemens(); stCfg.nORG = 1; stCfg.nDBNR = nDB; stCfg.nStart = nDW * 2; stCfg.nLen = 1; m_AClientSocketPlcSiemensWrite.m_pnDataWrite[0] = nVal; // 2011.04.28 for (int i = 0; i < _RETRY; i++) { nR = m_AClientSocketPlcSiemensWrite.WritePlc(stCfg); if (nR == 1) { break; } } } if (nR == 1) { AUtil.PostMessage(m_hParent, _WM_SOCKET_WRITE_OK, 0, m_nID); } else { AUtil.PostMessage(m_hParent, _WM_SOCKET_WRITE_NG, nR, m_nID); } return(nR); }
public void Run() { int nR = 0; AClientSocketPlcSiemens._stCfgSocketPlcSiemens stCfg; stCfg = new AClientSocketPlcSiemens._stCfgSocketPlcSiemens(); stCfg.nORG = 1; //DB stCfg.nDBNR = m_stReadAddress.nDB; //DB stCfg.nStart = m_stReadAddress.nDW * 2; //DW stCfg.nLen = ASDef._MAX_PLC_DI; // 2011.07.18 #if _USE_PC_RUN int nPcRun = 0; #endif while (!m_bStop) { try { // 2014.08.10 if (m_bReConnecting == true) { // 2015.04.13 Thread.Sleep(1000); //AUtil.Delay(1000, true); continue; } lock (m_AClientSocketPlcSiemensFetch) { // 2014.11.12 for (int j = 0; j < _RETRY; j++) { nR = m_AClientSocketPlcSiemensFetch.ReadPlc(stCfg); if (nR == 1) { for (int i = 0; i < ASDef._MAX_PLC_DI; i++) { // 2015.02.25 //m_pnOldDI[i] = m_pnDI[i]; m_pnDI[i] = m_AClientSocketPlcSiemensFetch.m_pnDataRead[i]; } // 2015.03.01 if (++m_nReadCount > 9999) { m_nReadCount = 0; } break; } } } if (nR == 1) { AUtil.PostMessage(m_hParent, _WM_SOCKET_FETCH_OK, 0, m_nID); /* 2015.02.25 * for (int i = 0; i < ASDef._MAX_PLC_DI; i++) * { * if (m_pnOldDI[i] != m_pnDI[i]) * { * //AUtil.SendMessage(m_hParent, ASDef._WM_CHANGE_DI + m_nID, i, m_pnDI[i]); * AUtil.PostMessage(m_hParent, ASDef._WM_CHANGE_DI + m_nID, i, m_pnDI[i]); * } * } */ #if _USE_PC_RUN if (AVisionProBuild.Auto) { if (nPcRun > 4) { nPcRun = 0; if (((GetWordDO(ASDef._DO_PC_RUN) >> ASDef._DO_BIT_PC_RUN) & 0x01) == 0x01) { // 2014.07.17 if (SetBitDO(Convert.ToInt32(ASDef._DO_PC_RUN), Convert.ToInt32(ASDef._DO_BIT_PC_RUN), false) == 1) { // 2015.02.11 AVisionProBuild.WriteLogFile("O_Off:PC Run", ".PcRun.txt"); } } else { // 2014.07.17 if (SetBitDO(Convert.ToInt32(ASDef._DO_PC_RUN), Convert.ToInt32(ASDef._DO_BIT_PC_RUN), true) == 1) { // 2015.02.11 AVisionProBuild.WriteLogFile("O:PC Run", ".PcRun.txt"); } } } else { nPcRun++; } } #endif } else { AUtil.PostMessage(m_hParent, _WM_SOCKET_FETCH_NG, nR, m_nID); } } catch { } // 2015.04.13 Thread.Sleep(m_nDelayTime); //AUtil.Delay(m_nDelayTime, true); } }