Exemplo n.º 1
0
        public void TestSetLDTAt(byte[] expected, int ticks)
        {
            var buffer = new byte[8];

            S7.SetLDTAt(buffer, 0, new DateTime(1970, 1, 1).AddTicks(ticks));
            buffer.ShouldBe(expected);
        }
Exemplo n.º 2
0
        public void TestSetDTLAt(byte[] expected)
        {
            var buffer = new byte[16];

            S7.SetDTLAt(buffer, 0, new DateTime(2570, 10, 10, 10, 10, 0));
            buffer.ShouldBe(expected);
        }
Exemplo n.º 3
0
        public void TestSetLTODAt(byte[] expected, int ticks)
        {
            var buffer = new byte[8];

            S7.SetLTODAt(buffer, 0, new DateTime(ticks));
            buffer.ShouldBe(expected);
        }
Exemplo n.º 4
0
        [Fact] public void TestSetBitAt()
        {
            var buffer = new byte[] { 1, 2, 3, 4 };

            S7.SetBitAt(ref buffer, 0, 1, true);
            buffer.ShouldBe(new byte[] { 3, 2, 3, 4 });
        }
Exemplo n.º 5
0
        public void TestSetByteAt()
        {
            var buffer = new byte[] { 1, 2, 3, 4 };

            S7.SetByteAt(buffer, 0, (byte)5);
            buffer.ShouldBe(new byte[] { 5, 2, 3, 4 });
        }
Exemplo n.º 6
0
        public void TestSetTODAt(byte[] expected, int milliseconds)
        {
            var buffer = new byte[4];

            S7.SetTODAt(buffer, 0, new DateTime(0).AddMilliseconds(milliseconds));
            buffer.ShouldBe(expected);
        }
Exemplo n.º 7
0
        private void ReadTransactionDB()
        {
            while (isConnected)
            {
                transactClient.DBRead(3100, 0, transactReadBuffer.Length, transactReadBuffer);
                readTransactionID = S7.GetByteAt(transactReadBuffer, 45);

                S7.SetByteAt(transactWriteBuffer, 94, 1);
                transactClient.DBWrite(3101, 0, transactWriteBuffer.Length, transactWriteBuffer);

                if (readTransactionID == 0 && !handshakeCleared)
                {
                    handshakeCleared = true;
                    if (isConnected)
                    {
                        S7.SetByteAt(transactWriteBuffer, 45, 1);
                        int result1 = transactClient.DBWrite(3101, 0, transactWriteBuffer.Length, transactWriteBuffer);
                        Console.WriteLine("-------------------------" + "\nTransaction ID : 1" +
                                          "\nWrite Result : " + result1 +
                                          "\n-------------------------");
                    }
                }

                if ((readTransactionID != oldReadTransactionID) && handshakeCleared)
                {
                    Console.WriteLine("Transaction ID IN : " + readTransactionID);
                    oSignalTransactEvent.Set();
                    oldReadTransactionID = readTransactionID;
                }

                Thread.Sleep(50);
            }
        }
Exemplo n.º 8
0
    public static void Main()
    {
        S7 vr1 = new S7(new S5(1, new S0(0)));

        System.Console.WriteLine(vr1.F0.F0);
        System.Console.WriteLine(vr1.F0.F1.F0.F1);
    }
Exemplo n.º 9
0
        private void Write1200()
        {
            for (int i = 0; i < 100; i++)
            {
                if (int_all_Byte_Q[i] != 0)
                {
                    //byte[] byteArray = System.Text.Encoding.Default.GetBytes(int_all_Byte_Q[i].ToString());
                    S7.SetByteAt(buffer_write_temp12, i, BitConverter.GetBytes(int_all_Byte_Q[i])[0]);
                    //S7.SetByteAt(buffer_write_temp12, 1, 49);
                }
                else
                {
                    buffer_write_temp12[i] = 0;
                }
            }
            // DB_write.DB_data1200 = 20;



            int DBNumber;
            int Size;
            int Result;

            DBNumber = 2001;
            Size     = 100;

            Result = Client1200.DBWrite(DBNumber, 800, Size, buffer_write_temp12); //执行写操作

            if (Result != 0)                                                       //结果为0,则表示执行结果ok
            {
                // MessageBox.Show("1200写入失败");
            }
        }
Exemplo n.º 10
0
 public void Echo()
 {
     client.DBRead(1021, 0, echoReadBuffer.Length, echoReadBuffer);
     heartBeat = S7.GetIntAt(echoReadBuffer, 0);
     S7.SetIntAt(echoWriteBuffer, 0, (short)heartBeat);
     int writeResult = client.DBWrite(1022, 0, echoWriteBuffer.Length, echoWriteBuffer);
 }
Exemplo n.º 11
0
        //20201120 读取字符串

        public string getChars(string plcIp, int Rack, int Slot, int DbNum, int Start, int Length)
        {
            byte[] Buffer = new byte[Length];
            Client.ConnectTo(plcIp, Rack, Slot);
            Client.DBRead(DbNum, Start, Length, Buffer);//读取DbwNum所对应的字的值
            return(S7.GetCharsAt(Buffer, 0, Length));
        }
Exemplo n.º 12
0
        public void WriteOutput(int startIndex, int offset, bool on)
        {
            try
            {
                S7Client client = new S7Client();

                int restultClient = client.ConnectTo("192.168.0.1", 0, 0);

                if (restultClient == 0)
                {
                    Console.WriteLine("Connected to PLC");
                }
                else
                {
                    Console.WriteLine(client.ErrorText(restultClient));
                    return;
                }

                byte[] writeBuffer = new byte[1];

                S7.SetBitAt(ref writeBuffer, 0, 1, on);

                int result = client.WriteArea(S7Consts.S7AreaDB, 1, startIndex * 8 + offset, 1, S7Consts.S7WLBit, writeBuffer);
                if (result != 0)
                {
                    Console.WriteLine("Error: " + client.ErrorText(result));
                }

                client.Disconnect();
            }
            catch (Exception ex)
            {
                Console.WriteLine("Write output: " + ex.Message);
            }
        }
Exemplo n.º 13
0
        public void WriteCableNok()
        {
            S7Client client = new S7Client();

            int restultClient = client.ConnectTo("192.168.0.1", 0, 0);

            if (restultClient == 0)
            {
                Console.WriteLine("Connected to PLC");
            }
            else
            {
                Console.WriteLine(client.ErrorText(restultClient));
                return;
            }

            byte[] writeBuffer = new byte[1];
            int    startIndex  = 32;

            S7.SetBitAt(ref writeBuffer, 0, 1, true);

            int result = client.WriteArea(S7Consts.S7AreaDB, 1, startIndex * 8 + 4, 1, S7Consts.S7WLBit, writeBuffer);

            if (result != 0)
            {
                Console.WriteLine("Error: " + client.ErrorText(result));
            }

            client.Disconnect();
        }
Exemplo n.º 14
0
        public void TestSetStringAt(string test, byte[] expected)
        {
            var buffer = new byte[200];

            S7.SetStringAt(buffer, 0, buffer.Length, test);
            buffer.Take(expected.Length).ToArray().ShouldBe(expected);
        }
Exemplo n.º 15
0
        public void TestSetCharsAt(string chars, byte[] expected)
        {
            var buffer = new byte[chars.Length];

            S7.SetCharsAt(buffer, 0, chars);
            buffer.ShouldBe(expected);
        }
Exemplo n.º 16
0
 public int readPlcDbwValue(string plcIp, int Rack, int Slot, int DbNum, int DbwNum)
 {
     Client.ConnectTo(plcIp, Rack, Slot);
     Client.DBRead(DbNum, DbwNum, 2, Buffer);//读取DbwNum所对应的字的值
     Client.Disconnect();
     return(S7.GetIntAt(Buffer, 0));
 }
Exemplo n.º 17
0
        public void CanLiftUserDefinedConversionOperator()
        {
            S7?a = new S7(42), b = null;

            Assert.AreEqual((double?)a, 42, "#1");
            Assert.IsNull((double?)b, "#2");
        }
Exemplo n.º 18
0
        public static void StateMotor(int numDB)
        {
            // Initialisation
            var res = -1;                    // Résultat de la fonction

            byte[] Buffer    = new byte[2];  // Buffer 2 bytes
            byte[] BufferBis = new byte[55]; // Buffer 10 bytes

            if (Main._statusConnection)
            {
                res = Main.Client.DBRead(numDB, 80, 2, Buffer);
            }

            BitArray arBits = new BitArray(Buffer); // Convert buffer bytes to array of bits

            for (int i = 0; i < 15; i++)
            {
                Main._arStateMotor.Add(arBits.Get(i)); // Fill the array
            }
            if (Main._statusConnection)
            {
                res = Main.Client.DBRead(numDB, 56, 55, BufferBis);
            }

            Main._dspdMotor  = S7.GetRealAt(BufferBis, 0);
            Main._dintMotor  = S7.GetIntAt(BufferBis, 6) / 10;
            Main._dspdFMotor = S7.GetDIntAt(BufferBis, 48) / 100;
        }
Exemplo n.º 19
0
        public void CanLiftUserDefinedBinaryOperator()
        {
            S7?a = new S7(42), b = new S7(32), c = null;

            Assert.AreEqual((a + b).Value.I, 74, "#1");
            Assert.IsNull((a + c), "#2");
        }
Exemplo n.º 20
0
        public void CanLiftUserDefinedUnaryOperator()
        {
            S7?a = new S7(42), b = null;

            Assert.AreEqual(-a.Value.I, -42, "#1");
            Assert.IsNull(-b, "#2");
        }
Exemplo n.º 21
0
 public void checkZustand()
 {
     try
     {
         if (verbindungsStatus)
         {
             Byte[] buffer = new Byte[1];
             client.DBRead(datenbaustein, dbByte, 8, buffer);
             runLast = run;
             run     = S7.GetBitAt(buffer, 0, dbBit);
         }
         else
         {
             verbindung = client.ConnectTo(ipAdresse, rack, slot);
             if (client.Connected)
             {
                 Byte[] buffer = new Byte[1];
                 client.DBRead(datenbaustein, dbByte, 8, buffer);
                 run = S7.GetBitAt(buffer, 0, dbBit);
             }
         }
     }
     catch (Exception ex)
     {
         MetroFramework.MetroMessageBox.Show(frame, ex.Message + "\n" + ex.StackTrace, "Fehler bei Aktualliserung", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
     }
 }
Exemplo n.º 22
0
        private void Write1200()
        {
            //  textBox3.Text = "sss";
            //byte[] byteArray = System.Text.Encoding.Default.GetBytes("123456");
            for (int i = 0; i < 30; i++)
            {
                //if (i == 3) { buffer_write_temp12[i]=byteArray}
                buffer_write_temp12[i] = 0;
            }
            DB_write.DB_data1200 = 20;
            // S7.SetWordAt(byteArray, 0, DB_write.DB_data1200);   //将十进制的20写入到Buffer1200[0]字节  //读取字时高字节在前低字节在后
            S7.SetByteAt(buffer_write_temp12, 0, 44);
            S7.SetByteAt(buffer_write_temp12, 1, 49);
            // Declaration separated from the code for readability
            int DBNumber;
            int Size;
            int Result;

            DBNumber = 6000;
            Size     = 20;
            //  Result = Client1200.DBWrite(DBNumber, D1200_index, Size, buffer_write_temp12);   //执行写操作
            Result = Client1200.DBWrite(DBNumber, 0, Size, buffer_write_temp12); //执行写操作
            ShowResult1200(Result);
            if (Result != 0)                                                     //结果为0,则表示执行结果ok
            {
                MessageBox.Show("1200写入失败");
            }
            //MessageBox.Show("1200读取失败");
        }
Exemplo n.º 23
0
        private bool WriteBit(int db, int bytePos, int bitInByte, bool value)
        {
            var inBuff      = new byte[1];
            var writeResult = -1;

            lock (_lockObject)
            {
                var readResult = _s7Plc.DBRead(db, bytePos, 1, inBuff);
                if (readResult > 0)
                {
                    PlcLastErrorMessage = _s7Plc.ErrorText(readResult);
                    RaiseError();
                    return(false);
                }

                S7.SetBitAt(ref inBuff, 0, bitInByte, value);

                writeResult = _s7Plc.DBWrite(db, bytePos, 1, inBuff);
                if (readResult > 0)
                {
                    PlcLastErrorMessage = _s7Plc.ErrorText(writeResult);
                    RaiseError();
                }
            }

            return(writeResult == 0);
        }
Exemplo n.º 24
0
        public bool SetSetPoint(int value)
        {
            var outBuffer   = new byte[2];
            var writeResult = -1;

            if (!IsPlcConnected())
            {
                return(false);
            }

            S7.SetIntAt(outBuffer, 0, (short)value);

            lock (_lockObject)
            {
                writeResult = _s7Plc.DBWrite(10, 2, 2, outBuffer);

                if (writeResult > 0)
                {
                    PlcLastErrorMessage = _s7Plc.ErrorText(writeResult);
                    RaiseError();
                }
            }

            return(writeResult > 0);
        }
Exemplo n.º 25
0
        public static double ReadWeldingCurrent(S7Client client)
        {
            result = client.DBRead(1024, 0, 8, ReadBuffer);
            double dbCurrent = S7.GetDIntAt(ReadBuffer, 4);

            return(dbCurrent);
        }
Exemplo n.º 26
0
 public void Parse(byte[] buffer, int start)
 {
     plcDateTime         = S7.GetDateTimeAt(buffer, start); start = start + 8;
     logEntryNumber      = S7.GetDIntAt(buffer, start);  start = start + 4;
     SRMNumber           = S7.GetIntAt(buffer, start);        start = start + 2;
     logEntryType        = S7.GetStringAt(buffer, start);        start = start + 52;
     logEntryDescription = S7.GetStringAt(buffer, start); start = start + 202;
     functionName        = S7.GetStringAt(buffer, start);       start = start + 52;
     operationMode       = S7.GetStringAt(buffer, start);       start = start + 52;
     faultOrWarningState = (FaultOrWarningState)S7.GetIntAt(buffer, start);    start = start + 2;
     XPosition_mm        = S7.GetDIntAt(buffer, start); start = start + 4;
     YPosition_mm        = S7.GetDIntAt(buffer, start); start = start + 4;
     Z1Position_mm       = S7.GetIntAt(buffer, start); start = start + 2;
     Z2Position_mm       = S7.GetIntAt(buffer, start); start = start + 2;
     Z3Position_mm       = S7.GetIntAt(buffer, start); start = start + 2;
     Z4Position_mm       = S7.GetIntAt(buffer, start); start = start + 2;
     XTarget_mm          = S7.GetDIntAt(buffer, start); start = start + 4;
     YTarget_mm          = S7.GetDIntAt(buffer, start); start = start + 4;
     Z1Target_mm         = S7.GetIntAt(buffer, start); start = start + 2;
     Z2Target_mm         = S7.GetIntAt(buffer, start); start = start + 2;
     Z3Target_mm         = S7.GetIntAt(buffer, start); start = start + 2;
     Z4Target_mm         = S7.GetIntAt(buffer, start); start = start + 2;
     XSpeed_mmps         = S7.GetIntAt(buffer, start); start = start + 2;
     YSpeed_mmps         = S7.GetIntAt(buffer, start); start = start + 2;
     Z1Speed_mmps        = S7.GetIntAt(buffer, start); start = start + 2;
     Z2Speed_mmps        = S7.GetIntAt(buffer, start); start = start + 2;
     Z3Speed_mmps        = S7.GetIntAt(buffer, start); start = start + 2;
     Z4Speed_mmps        = S7.GetIntAt(buffer, start); start = start + 2;
 }
Exemplo n.º 27
0
        /// <summary>
        /// 自动步骤
        /// </summary>
        /// <param name="client"></param>
        /// <param name="dbNum"></param>
        /// <param name="dbByteLength"></param>
        /// <param name="dbStartElement"></param>
        /// <returns></returns>
        public static string[] ReadAutoStep(S7Client client, int dbNum, int dbByteLength, int dbStartElement)
        {
            // int dbInt;
            // dbInt = S7.GetIntAt(ReadBuffer, Convert.ToInt16(element));
            // value = "" + dbInt;

            //double dbLReal = S7.GetLRealAt(ReadBuffer, 94);//读取Real位置在94
            //txtReadServoPos.Text = dbLReal.ToString();

            result = client.DBRead(dbNum, 0, dbByteLength, ReadBuffer);//dbNum from 0 length dbByteLength byte
            int dbInt = S7.GetIntAt(ReadBuffer, dbStartElement);

            for (int i = 1; i <= strAutoSteps.Length; i++)
            {
                if (i == dbInt)
                {
                    strAutoStep[0] = strAutoSteps[i - 1];//当前步骤
                    if (i == strAutoSteps.Length)
                    {
                        strAutoStep[1] = strAutoSteps[0];                          //下一步骤
                    }
                    else
                    {
                        strAutoStep[1] = strAutoSteps[i];
                    }
                }
            }
            return(strAutoStep);
        }
Exemplo n.º 28
0
 private void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
 {
     if (s7Client.Connected())
     {
         byte[] buf    = new byte[1];
         int    result = s7Client.DBRead(1, 0, 1, buf);
         if (result != 0)
         {
             toolStripStatusLabel1.Text = s7Client.ErrorText(result);
             return;
         }
         else
         {
             int flag = S7.GetByteAt(buf, 0);
             toolStripStatusLabel1.Text = flag.ToString();
         }
         buf[0] = (byte)(buf[0] ^ 0x01);
         //S7.SetIntAt(buf, 0, 0x01);
         result = s7Client.DBWrite(1, 0, 1, buf);
         if (result != 0)
         {
             toolStripStatusLabel1.Text = s7Client.ErrorText(result);
         }
     }
 }
Exemplo n.º 29
0
        public void TestSetS7TimespanAt(int milliseconds, byte[] expected)
        {
            var buffer = new byte[8];

            S7.SetS7TimespanAt(buffer, 0, TimeSpan.FromMilliseconds(milliseconds));
            buffer.Take(expected.Length).ToArray().ShouldBe(expected);
        }
Exemplo n.º 30
0
        public void TestSetCounterAt(int index, int counter, ushort[] expected)
        {
            var buffer = new ushort[2];

            S7.SetCounterAt(buffer, index, counter);
            buffer.ShouldBe(expected);
        }
Exemplo n.º 31
0
 public static extern void InvokeCallback7(MyCallback7 callback, S7 s);
Exemplo n.º 32
0
 public static extern S7 InvokeCallback7R(MyCallback7 callback, S7 s);