• Можно ли заменить ПЛК Siemens на микроконтроллеры?

    ПЛК - это скорее про софт, чем про хард.
    Внутри ПЛК вполне может скрываться и STM32, и Raspberry, и даже комп на винде, и никакого резервирования.

    Вся соль - в разных специальных промышленных протоколах и надёжности программ.
    Например на ПЛК в принципе нет ошибок связанных с памятью, ибо никто программисту не даёт доступа к памяти и указателям, а время выполнения строго контролируется, причём даже между несколькими узлами: на уровне протокола можно гарантировать, что условно 10 физически разнесённых узлов одновременно выполнят какое-то действие с точностью до микросекунд.

    Так что если ошибка и будет - она будет в логике, а не в том как она реализована.

    Ну и сверху это всё ещё обмазано маркетингом и всякими интерфейсами для совместимости с другим оборудованием.

    И будет ли 2 микроконтроллера(один из которых в резерве и будет запускаться, при неисправности основного) более надежны, чем ПЛК siemens?

    Если ты докажешь, что в программе нет багов, а электрическая схема будет достаточно адекватной, чтобы случайно 220 на логические входы не подать, то это будет даже надёжнее.
    Ответ написан
    2 комментария
  • Почему ПК не видит USB под определенным пользователем?

    IT_S_M
    @IT_S_M
    Антивирус возможно тоже настроен на блокировку, доступа у юзера.
    Ответ написан
    Комментировать
  • Почему ПК не видит USB под определенным пользователем?

    политики в AD, ограничения на работу с USB через стороннее ПО и т.п.
    Ответ написан
    Комментировать
  • Почему ПК не видит USB под определенным пользователем?

    tsklab
    @tsklab
    Здесь отвечаю на вопросы.
    Доступ к USB для пользователей запрещён политикой.
    Ответ написан
    Комментировать
  • Как подключить патч-панель?

    deepblack
    @deepblack
    У вас на фото подписаны номера контактов,
    подключите кабель одной стороной в патч-панель, на другой обожмите коннектор (естественно согласно нумерации).
    Там ничего сложного нет.

    Обычно жмут по B (T568B)
    Ответ написан
    Комментировать
  • Как набрать одинарные кавычки ' ... ' не переключая на клавиатуре язык с русского?

    @SaddledSharp
    Кодер. Увлекаюсь информационной безопасностью.
    Одинарные ковычки нельзя, но есть варианты с NumLock:
    -для набора «елочек» нажимаем Alt, набираем 0171, отпускаем Alt — получаем «; нажимаем Alt, набираем 0187, отпускаем Alt — получаем »;
    -для набора „лапок“ нажимаем Alt, набираем 0132, отпускаем Alt — получаем „; нажимаем Alt, набираем 0147, отпускаем Alt — получаем “;
    -для набора ‘одинарных кавычек’ нажимаем Alt, набираем 0145, отпускаем Alt — получаем ‘; нажимаем Alt, набираем 0146, отпускаем Alt — получаем ’;
    -для двойной закрывающей кавычки нажимаем Alt, набираем 0148, отпускаем Alt — получаем ”.

    В любом случае, SHIFT + 2 - будут двойные ковычки, лучше чем ничего ... Помог чем смог, других вариантов, к сожелению, нету..
    Ответ написан
    3 комментария
  • Где ошибка у моего BAT файла?

    @res2001
    Developer, ex-admin
    Наверное /t надо ставить перед именем принтера, а не перед файлом?
    %%i% думаю не верно, надо %%i.
    Т.е. как-то так выходит:
    for %%i in (*.pdf) do (
    "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" %%i /t <C5045a3sw> <Canon iR-ADV C5045 UFR II V4> <IP_192.168.160.56> 
    )
    pause

    Если что, про правильность параметров adoberd32 я не в курсе - это нужно смотреть документацию по параметрам командной строки этой софтины.
    Ответ написан
    Комментировать
  • Где ошибка у моего BAT файла?

    Jump
    @Jump
    Системный администратор со стажем.
    < заменить на "

    Я же вам пример приводил
    /t

    < используется в примерах для обозначения параметром.
    В реальном батнике ее разумеется писать не нужно.
    Если какой то из параметров содержит пробелы, обязательно нужно заключать его в кавычки.
    Ответ написан
    Комментировать
  • Как в BAT файле печатать через нужный принтер?

    Jump
    @Jump
    Системный администратор со стажем.
    /t <filename> <printername> <drivername> <portname>

    Только имена нормальные принтерам назначайте - короткие и без пробелов и латиницей.
    Ответ написан
    3 комментария
  • Почему не работает цикл в PHP?

    irishmann
    @irishmann
    Научись пользоваться дебаггером
    Ошибка с формами, радио кнопки у вас на одной форме, а отправляете файл вы совсем через другую спс. тов. Дмитрий
    code
    <form action="functions.php" method="post">
      A4 <input type="radio" name="ans" value="ans1">
      A3 <input type="radio" name="ans" value="ans2"  /><br />
    </form>
      
        <form method="post" enctype="multipart/form-data">
          <input type="file" name="file">
          <input type="submit" value="Datei herunterladen!">
        </form>



    Надо сделать так примерно
    code
    <form action="#" method="post" enctype="multipart/form-data">
                A4 <input required type="radio" name="ans" value="ans1">
                A3 <input type="radio" name="ans" value="ans2">
                <input type="file" name="file">
                <input type="submit" value="Загрузить">
            </form>


    Проверяете условие, а потом объявляете переменную, естественно у вас условие не выполняется.
    code
    if ($answer == "ans1") {
    $answer = $_POST['ans'];

    Надо сначала объявлять переменную, потом уж делать с ней что душе угодно. Но именно в данном случае в объявлении функции она не к месту. См. след. пункт.
    code
    $answer = $_POST['ans'];  	
    if ($answer == "ans1") {

    Как заметил Дмитрий так функции нельзя объявлять
    code
    if ($answer == "ans1") {
    $answer = $_POST['ans'];  	
         function make_upload($file){	
      // формируем уникальное имя картинки: случайное число и name
      $name = mt_rand(0, 10000) . $file['name'];
      copy($file['tmp_name'], 'Folder_A4_SW_EIN/' . $name); //ПАПКА ДОК
       return true;    
       }
    }else{
        function make_upload($file){	
      // формируем уникальное имя картинки: случайное число и name
      $name = mt_rand(0, 10000) . $file['name'];
      copy($file['tmp_name'], 'img7/' . $name); //ПАПКА, КУДИ ПАДАЮТЬ ДОКУМЕНТИ
      }      
    }


    Вынесите название в отдельный аргумент
    code
    function make_upload($file, $folder)
    {    
        // формируем путь + уникальное имя картинки
        $name = $folder . DIRECTORY_SEPARATOR . uniqid(true) . $file['name'];
        copy($file['tmp_name'], $name);
        return true;    
    }
    UPD: рабочий г-но код
    <?php
        include_once('functions.php')
    ?>
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <title>Загрузить изображения на сервер</title>
        </head>
        <body>
            <form action="#" method="post" enctype="multipart/form-data">
                A4 <input required type="radio" name="ans" value="ans1">
                A3 <input type="radio" name="ans" value="ans2">
                <input type="file" name="file">
                <input type="submit" value="Загрузить">
            </form>
            <?php
            // если была произведена отправка формы
                if(isset($_FILES['file']))
                {
                    // проверяем, можно ли загружать изображение
                    $check = can_upload($_FILES['file']);
    
                    if($check === true)
                    {
                        $folder = $_POST['ans'] == 'ans1' ? 'Folder_A4_SW_EIN' : 'img7';
                        make_upload($_FILES['file'], $folder); // загружаем изображение на сервер
                        echo "<strong>Файл был успешно загружен!</strong>";
                    }
                    else
                    {
                        // выводим сообщение об ошибке
                        echo "<strong>$check</strong>";  
                    }
                }
            ?>
        </body>
    </html>

    <?php
        function can_upload($file)
        {
            // если имя пустое, значит файл не выбран
            if($file['name'] == '')
            return 'Вы не выбрали файл.';
    
            /* если размер файла 0, значит его не пропустили настройки 
            сервера из-за того, что он слишком большой */
            if($file['size'] == 0)
            return 'Файл слишком большой.';
    
            // разбиваем имя файла по точке и получаем массив
            $getMime = explode('.', $file['name']);
            
            // нас интересует последний элемент массива - расширение
            $mime = strtolower(end($getMime));
            
            // объявим массив допустимых расширений
            $types = array('jpg', 'png', 'gif', 'bmp', 'jpeg', 'pdf', 'ppt', 'ods', 'dotx', 'docx', 'doc');
    
            // если расширение не входит в список допустимых - return
            if(!in_array($mime, $types))
            return 'Недопустимый тип файла.';
    
            return true;
        }
    
        function make_upload($file, $folder)
        {    
            // формируем путь + уникальное имя картинки
            $name = $folder . DIRECTORY_SEPARATOR . uniqid(true) . $file['name'];
            copy($file['tmp_name'], $name);
            return true;    
        }

    Ответ написан
    3 комментария
  • Как печатать документ с браузера?

    MeowingMaster
    @MeowingMaster
    window.print(); js

    она печатает все текущее окно, но это не проблема, используйте @media print css
    Ответ написан
    Комментировать