Beispiel #1
0
        //Function-5 写1路开关量输出
        private byte[] createRespondMessage_5()
        {
            var respondMessage = _messageReceived;

            var startAddress = (_messageReceived[2] << 8) | _messageReceived[3];

            startAddress = startAddress - 2048;

            var keyStatus = (_messageReceived[4] << 8) | _messageReceived[5];

            if (keyStatus == 0)
            {
                string CellNAme = "M" + (startAddress);

                _xmlM.Modify(CellNAme, "0");
            }
            else
            {
                string CellNAme = "M" + (startAddress);

                _xmlM.Modify(CellNAme, "1");
            }

            return(respondMessage);
        }
Beispiel #2
0
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

        private int fnCMPAndCompute(string[] pCOMMAND, cla_stPLCcs.stPLC_OBJ[] pPLC_OBJ, ref int piStackDepth)
        {
            var iCmpIndex1 = GetNumberKDTC(pCOMMAND[1]);

            var iCmpIndex2 = GetNumberKDTC(pCOMMAND[2]);

            var iObjIndex = GetNumber(pCOMMAND[3]);

            switch (pCOMMAND[3][0])
            {
            case 'Y':

                if (pPLC_OBJ[piStackDepth - 1].status)
                {
                    thePLCCore.pOutPut[iObjIndex].status = false;
                }
                break;

            case 'M':
                ClaXmlM xmlM = new ClaXmlM();

                xmlM.Modify(pCOMMAND[3], "0");

                xmlM.Modify(pCOMMAND[3][0] + (iObjIndex + 1).ToString(CultureInfo.InvariantCulture), "0");

                xmlM.Modify(pCOMMAND[3][0] + (iObjIndex + 2).ToString(CultureInfo.InvariantCulture), "0");

                if (iCmpIndex1 == iCmpIndex2)
                {
                    xmlM.Modify(pCOMMAND[3][0] + (iObjIndex + 1).ToString(CultureInfo.InvariantCulture), "1");
                }
                else if (iCmpIndex1 > iCmpIndex2)
                {
                    xmlM.Modify(pCOMMAND[3], "1");
                }
                else if (iCmpIndex1 < iCmpIndex2)
                {
                    xmlM.Modify(pCOMMAND[3][0] + (iObjIndex + 2).ToString(CultureInfo.InvariantCulture), "1");
                }
                break;

            case 'S':
                if (pPLC_OBJ[piStackDepth - 1].status)
                {
                    thePLCCore.pSTATUS[iObjIndex].status = false;
                }

                break;

            default:
                return(-1);
            }
            return(0);
        }