ASCII – это знакомая аббревиатура, встречающаяся в таких приложениях, как связь Modbus и строковые типы данных, но что это такое и что означает ASCII?
Не каждый сигнал, проходящий по проводам системы управления, представляет собой двоичную последовательность высокого/низкого напряжения. Дискретные последовательности являются характерной чертой цифровых систем управления, начиная с замыкающих/размыкающих контактных блоков кнопок и заканчивая пакетами данных Ethernet длиной в сотни байтов. Но где-то посередине должны лежать самые ранние формы цифровых кодов и последовательностей, используемых для передачи данных между устройствами структурированным, универсальным методом, понятным любой машине. Один из этих цифровых кодов, использовавшийся в ранних машинах и существующий до сих пор, известен как ASCII, и хотя многие слышали об этом коде, его понимают только те, кто обнаружил необходимость «заглянуть под капот» и узнать, как оно работает.
ASCII расшифровывается как American Standard Code for Information Interchange или Американская стандартная система кодирования для обмена информацией. Конечно, по этим терминам ясно, что это был стандартизированный формат и, очевидно, предназначенный для передачи информации между вычислительными машинами. Какой информации? Почти любой вид. Вам нужно отправлять числовые значения между машинами? ASCII может это сделать. Нужна строка текста или полное предложение? ASCII. Знаки пунктуации и синтаксиса компьютерного кода? ASCII. Нужно указать принтеру сделать пробел или новую строку? ASCII. С таким большим количеством информации должен был быть стандартизированный способ перечислить, какая двоичная последовательность должна относиться к каждому символу, числу и букве.
Представление, известное как таблица ASCII, является удобным справочником, когда необходимо узнать про символ. В зависимости от обстоятельств, каждый символ ASCII может быть представлен в двоичном виде, как он будет отображаться на компьютере, или в виде десятичного эквивалента для упрощения назначения человеком, или в шестнадцатеричном виде, как компьютерная программа может использовать для краткости.
Каждое значение или символ ASCII представлено 7 битами. Причина, по которой битов 7, а не 8, как обычный байт, будет объяснена через мгновение. Поскольку имеется 7 бит, общее количество символов в таблице ASCII равно 127, чтобы включить все символы: как прописные, так и строчные буквы, а также всевозможные знаки препинания, которые вы распознаете на обычной клавиатуре.
Причиной использования 7 бит является необходимость. Общее количество необходимых символов не превышает (по крайней мере изначально) 128. Возможно, если бы это было сделано в наше время, мы могли бы придумать дополнительные символы для смайликов. Проблема, однако, в том, что данные передаются пакетами по 8 бит, «байтами». Что мы делаем с дополнительным битом?
При передаче 7 бит на высокой скорости существует вероятность того, что внешний шум сигнала или просто точность считывания каким-то образом время от времени будут пропускать один бит. Чтобы сохранить точность, к сигналу можно добавить один бит, чтобы сделать общее количество единиц в сигнале либо нечетным, либо четным. Это называется «нечетность» или «четность».
Например, если мы передадим прописное «t» в ASCII, это двоичный код 1010100. Если мы разработали систему для «четности», передатчик будет читать 3x 1 в шаблоне и добавить еще один, чтобы сделать в общей сложности 4x 1. Если приемный контроллер считывает нечетное число 1, он может вернуть ответ, что сигнал был поврежден и должен быть повторно передан. Вероятность переключения двух битов за одну передачу еще более реже, но возможна, поэтому доступна более расширенная проверка ошибок (CRC, LRC и т. д.).
Рассмотрим как используется ASCII, например, в Modbus. Отправка данных по Modbus включает в себя знание кода функции и адрес. Если адрес (регистр) предназначен для написания, сообщение Modbus также будет включать значение, которое будет записано. Внутри шины Modbus сообщение представляет собой несколько критических данных, чтобы указать, когда начинается сообщение, для кого оно предназначено, фактические данные и конец сообщения. В методе Modbus ASCII начало и конец сообщений отмечены символами ASCII, что позволяет переменному времени между сообщениями. Это было полезно, когда компьютеры передавали данные на относительно низких скоростях с довольно низкой потерей данных.
В наши дни, с высокоскоростными терминалами связи, сообщения могут быть запущены с точными задержками или одиночными битами, что обеспечивает гораздо большую эффективность в формате Modbus RTU. Кроме того, проверка ошибок является более полной в Modbus RTU. Большинство устройств RS-232 и RS-485 выбирают в режиме работы между Modbus ASCII или RTU.
Как инженеру, вам, возможно, никогда не потребуется вдаваться в подробности кодов ASCII. Однако, если вы работаете с символами или строками, может быть довольно важно хотя бы понять основную концепцию. Когда текстовые строки отправляются, они могут начинать и заканчивать с различными символами, такими как «нулевая» или «новая строка» или другие. По крайней мере, с базовым пониманием того, как стандартизированные коды могут интерпретировать повседневную информацию, может быть гораздо проще диагностировать ошибки в общении между вычислительными машинами.
© digitrode.ru