예제 #1
0
        public static ReadDataServiceRequest BuildLogixReadDataRequestFragment(string tagAddress, ushort number, out int requestSize)
        {
            byte[] newIOI = Ioi.BuildIOI(tagAddress);

            int pathLen = newIOI.Length;// IOI.BuildIOI(null, tagAddress);
            ReadDataServiceRequest request = new ReadDataServiceRequest();

            request.Service  = (byte)ControlNetService.CipReadDataFragmented;
            request.PathSize = (byte)(pathLen / 2);
            byte[] path = new byte[pathLen];
            Buffer.BlockCopy(newIOI, 0, path, 0, newIOI.Length);
            //IOI.BuildIOI(path, tagAddress);
            request.Path     = path;
            request.Elements = number;

            requestSize = request.Size;

            return(request);
        }
예제 #2
0
        public static WriteDataServiceRequest BuildLogixWriteDataRequest(string tagAddress, ushort dataType, ushort elementCount, byte[] data, ushort structHandle = 0x0000)
#endif
        {
            byte[] newIOI = Ioi.BuildIOI(tagAddress);

            int pathLen = newIOI.Length;
            WriteDataServiceRequest request = new WriteDataServiceRequest();

            request.Service  = (byte)ControlNetService.CipWriteData;
            request.PathSize = (byte)(pathLen / 2);
            byte[] path = new byte[pathLen];
            Buffer.BlockCopy(newIOI, 0, path, 0, newIOI.Length);
            request.Path         = path;
            request.Elements     = elementCount;
            request.DataType     = dataType;
            request.StructHandle = structHandle;
            request.Data         = data;

            return(request);
        }
예제 #3
0
        public static ReadDataServiceRequest BuildShortReadDataRequest(uint tagInstance, ushort number, ushort size, out int requestSize)
        {
            byte[] newIOI = Ioi.BuildIOI(tagInstance);

            int pathLen = newIOI.Length;
            ReadDataServiceRequest request = new ReadDataServiceRequest();

            request.Service  = 0x4E;// (byte)ControlNetService.CIP_ReadData;
            request.PathSize = 0x03;
            byte[] path = new byte[] { 0x20, 0xB2, 0x25, 0x00, 0x21, 0x00 };
            request.Path     = path;
            request.Elements = number;

            byte[] addData = new byte[10 + newIOI.Length];
            addData[0] = 0x02; addData[1] = 0x00; addData[2] = 0x01; addData[3] = 0x01; addData[4] = 0x01;
            addData[5] = (byte)(size & 0xFF); addData[6] = (byte)((size & 0xFF00) >> 8);
            addData[7] = 0x03; addData[8] = 0x20; addData[9] = 0x6B;
            Buffer.BlockCopy(newIOI, 0, addData, 10, newIOI.Length);
            request.AddtlData = addData;

            requestSize = request.Size;

            return(request);
        }