@MutexMan

При чтении блока DB1 ошибка: CPU: Item not available?

Доброго всем времени суток!
Не работает следующий код:
Console.WriteLine("Begin");
            var client = new S7Client();
            client.SetConnectionType(S7Client.CONNTYPE_BASIC);
            int connectionResult = client.ConnectTo("192.168.0.106", 0, 2);
            if (connectionResult == 0)
            {
                Console.WriteLine("Connection OK");

                S7Client.S7Protection levelProtect = new S7Client.S7Protection();
                int errorProtected = client.GetProtection(ref levelProtect);
                Console.WriteLine();
                Console.WriteLine("GetErrorProtection : " + errorProtected);
                Console.WriteLine("Protection level");
                Console.WriteLine("sch_schal : " + levelProtect.sch_schal);
                Console.WriteLine("sch_par : " + levelProtect.sch_par);
                Console.WriteLine("sch_rel : " + levelProtect.sch_rel);
                Console.WriteLine("bart_sch : " + levelProtect.bart_sch);
                Console.WriteLine("anl_sch : " + levelProtect.anl_sch);
                Console.WriteLine();

                int status = -1;
                client.PlcGetStatus(ref status);
                Console.WriteLine("Status : " + status + "\n");

                var buffer = new byte[12];
                int readResult = client.DBRead(1, 0, buffer.Length, buffer);
                //int readResult = client.DBRead(1, 0, 4, buffer);
                if (readResult == 0)
                {
                    Console.WriteLine("DB1 Read OK"); 
                    bool db1dbx00 = S7.GetBitAt(buffer, 0, 0);
                    bool db1dbx01 = S7.GetBitAt(buffer, 0, 1);
                    bool db1dbx02 = S7.GetBitAt(buffer, 0, 2);
                    bool db1dbx03 = S7.GetBitAt(buffer, 0, 3);
                    Console.WriteLine(db1dbx00);
                    Console.WriteLine(db1dbx01);
                    Console.WriteLine(db1dbx02);
                    Console.WriteLine(db1dbx03);
                }
                else
                {
                    Console.WriteLine("DB1 Read Error : " + readResult + "," +client.ErrorText(readResult));
                }
            }
            else
            {
                Console.WriteLine("Connection ERROR : " + connectionResult + "," + client.ErrorText(connectionResult));
            }
            client.Disconnect();

            Console.WriteLine("Для завершения программы нажмите <Enter>");
            Console.ReadLine();

Подключаюсь через NetToPLCsim к S7-PLCSIM1 из STEP7 (V 5.6)
В консоли отображается следующее:
Begin
Connection OK

GetErrorProtection : 0
Protection level
sch_schal : 1
sch_par : 1
sch_rel : 1
bart_sch : 3
anl_sch : 0

Status : 4

DB1 Read Error : 12582912, CPU : Item not available
Для завершения программы нажмите

Не пойму почему ошибка! Получается что соединение идёт. Обмен данными идёт тоже, раз статусы PLC машина получает. Но блок DB1 не прочитать. Создана тестовая PLC в Step7. В конфигурации только и есть блок DB1 размером 12 байт. CPU в STEP7 проекте выбран CPU 315-2 PN/DP.

Может кто-нибудь объяснить в чём затык?
  • Вопрос задан
  • 78 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы