PLC деректеріне арналған ASCII: ондық, он алтылық және басқару кодтары
ASCII таңбалары, ондық мәндер, он алтылық байттар және басқару кодтары PLC жолдары мен сериялық хабарламаларда қалай көрінетінін, сондай-ақ кадрлау мен пішімдеу ақауларын диагностикалаудың практика...
ASCII әлі де PLC жобаларында кең қолданылады, өйткені көптеген өнеркәсіптік құрылғылар мәтінді бір байттан алмасады. Штрихкод оқу құрылғылары, жапсырма принтерлері, таразылар, жетектер, сериялық шлюздер және оператор терминалдары командалар мен өлшемдерді көбіне таңба кодтары түрінде көрсетеді. Таңбалар, ондық мәндер және он алтылық байттар арасында түрлене алатын инженерлер бұл байланыстардағы ақауларды тезірек анықтайды.
ASCII нені анықтайды
Ақпарат алмасуға арналған бастапқы америкалық стандартты код - ASCII - жеті биттік таңбалар жиынтығы. Ол 0-ден 127-ге дейін нөмірленген 128 мәнді анықтайды. 0-ден 31-ге дейінгі және 127 мәндері басқару таңбалары болып табылады. 32-ден 126-ға дейінгі мәндерге әріптер, цифрлар, тыныс белгілері және бос орын кіретін басып шығарылатын таңбалар жатады.
IETF орналастырған RFC 20 спецификациясы код позициялары мен олардың мақсатты мағыналарын құжаттайды. Заманауи жүйелер ASCII таңбасын әдетте сегіз биттік байтта сақтайды. Стандартты ASCII үшін ең жоғарғы бит нөл болып қалады.
Ондық, он алтылық және екілік - бір байттың әртүрлі көріністері
PLC тегінде бір мән бірнеше сан пішімінде көрсетілуі мүмкін. Бас A әрпі ондық жүйеде 65, он алтылық жүйеде 41 және екілік жүйеде 01000001 болады. 0 цифры ондық жүйеде 48 немесе он алтылық жүйеде 30 болады. Бұлар әртүрлі таңбалар емес. Олар бір сандық үлгінің әртүрлі көріністері.
Іске қосу кезінде он алтылық жүйе ыңғайлы, өйткені бір байт екі он алтылық цифрға сыяды. Пакеттерді түсіру құралдары, сериялық мониторлар және құрылғы нұсқаулықтары байт мәндерін көбіне он алтылық түрде көрсетеді. PLC нұсқаулары бүтін сан тұрақтыларын талап еткенде, ондық жүйені қолдану оңайырақ.
Өнеркәсіптік хабарламаларда басқару кодтарының маңызы
Көптеген сериялық хаттамалар бөлгіштер ретінде басқару таңбаларын пайдаланады. Каретканы қайтару таңбасы ондық жүйеде 13 немесе он алтылық жүйеде 0D болады. Жолды ауыстыру таңбасы ондық жүйеде 10 немесе он алтылық жүйеде 0A болады. Мәтіннің басталуы он алтылық жүйеде 02, ал мәтіннің аяқталуы 03 болады. Қажетті аяқтаушы таңбасы болмаса, құрылғы жарамды команданы елемеуі мүмкін.
Әр құрылғы CR/LF қолданады деп ойламаңыз. Кейбіреулеріне тек CR қажет. Басқалары басып шығарылатын бөлгішті, тұрақты хабарлама ұзындығын немесе бақылау сомасы байтын пайдаланады. Өндірушінің хаттама нұсқаулығынан кадрдың нақты құрылымын тексеріңіз.
PLC жолдары байт массивтеріне қалай айналады
PLC платформалары жолдарды әртүрлі сақтайды. Кейбіреулері ағымдағы ұзындықты таңба деректерінің алдына орналастырады. Басқалары бекітілген массивті резервтеп, мәтінді нөлдік байтпен аяқтайды. Деректер хаттама шекарасынан өткенде, қабылдаушы құрылғы контроллердің ішкі жол түрін емес, байттарды көреді.
Жолдың мәлімделген ұзындығын да, негізгі буферді де тексеріңіз. Ағымдағы ұзындықтан кейінгі ескірген байт, егер бағдарлама бүкіл буферді жіберсе, тасымалданатын деректерде көрінуі мүмкін. Тағайындалған орынды тазалаңыз немесе тек белсенді таңбалар санын жіберіңіз.
Практикалық диагностика әдісі
- Жіберілген нақты байттарды сериялық монитор, хаттама анализаторы немесе шлюздің диагностикалық беті арқылы түсіріңіз.
- Әр байтты он алтылық түрде жазып, басып шығарылатын мәндерді таңбаларға қайта сәйкестендіріңіз.
- Кадрлау байттарын, аяқтаушы таңбаларды, бөлгіштерді, ұзындық өрістерін және бақылау сомаларын белгілеңіз.
- Түсірілімді құрылғы нұсқаулығымен, соның ішінде бос орындар мен әріп регистрін ескере отырып салыстырыңыз.
- Дұрыс жұмыс істейтін белгілі хабарлама үшін түсірілімді қайталап, байт позицияларын салыстырыңыз.
Байт деңгейіндегі бұл тәсіл пішімдеу ақауларын сымдарға, тасымалдау жылдамдығына және паритетке қатысты мәселелерден ажыратады. Егер түсірілімде оқылатын, бірақ толық емес мәтін көрсетілсе, жолды құрастыруға назар аударыңыз. Егер әр байт қате болса, алдымен физикалық және сериялық параметрлерді тексеріңіз.
Іске асырудағы жиі кездесетін қателер
Цифрды оның сандық мәнімен шатастыру
“5” таңбасы ASCII бойынша ондық жүйеде 53-ке тең, бүтін 5 мәніне емес. Өлшенген санды мәтінге түрлендіру үшін пішімдеу бағдарламасын пайдалану қажет. Шикі бүтін санды таңбалар буферіне көшіру оның орнына басқару байтын шығарады.
Он алтылық мәтінді екілік байттармен араластыру
“41” мәтінінде екі таңба бар: он алтылық 34 және он алтылық 31. Он алтылық 41 мәні бар бір байт A әрпін білдіреді. Хаттама адам оқитын он алтылық мәтінді ме, әлде шикі екілік деректерді ме күтетінін анықтаңыз.
ASCII шегінен тыс кодтауды елемеу
ASCII ағылшын әріптері мен шектеулі таңбалар жиынын қамтиды. UTF-8 алғашқы 128 таңба үшін сол байт мәндерін пайдаланады, бірақ ASCII емес таңбалар бірнеше байттан тұрады. Бұрынғы құрылғы мұндай байттарды қабылдамауы немесе оларды қате санауы мүмкін.
Қолдауға ыңғайлы PLC кодын жобалау нұсқаулары
Хаттаманы пішімдеуді бір бағдарламаға жинақтаңыз. Сандық литералдарды баспалдақты логикаға немесе құрылымдалған мәтінге шашыратудың орнына басқару кодтары үшін атаулы тұрақтыларды пайдаланыңыз. Іске қосу кезінде соңғы жіберу буферін он алтылық түрде журналға жазыңыз. Жоба құжаттамасына мысалдар қосыңыз.
Хаттама қарапайым мәтіндік кадрлаудан асып кеткенде, анықталған күй машинасын пайдаланыңыз. Қабылдау позициясын, күту уақытын, кадр күйін және тексеру нәтижесін бөлек бақылаңыз. Бұл қайталап жіберулер мен қате хабарламаларды диагностикалауды жеңілдетеді.
Деректерді өңдеудің кеңірек үлгілері үшін PLC жүйелеріндегі массивтер бойынша цикл жасау мақаласын қараңыз. Желілік құрылғылар үшін Modbus TCP құрылғысын орналастыру нұсқаулығы кадрлау мен іске қосу мәнмәтінін толықтырады.
Іске қосу тексеру тізімі
- Таңбалар жиыны мен байттар ретін растаңыз.
- Бөлгіштер мен аяқтаушы таңбаларды он алтылық түрде тексеріңіз.
- Хабарламаның ұзындығы тұрақты ма, әлде ұзындық префиксі бар ма, анықтаңыз.
- Басып шығарылатын он алтылық мәтінді шикі екілік деректерден ажыратыңыз.
- Күту уақытының, қайталап жіберудің және буферді тазалау әрекетінің дұрыс орындалуын тексеріңіз.
- Дұрыс жұмыс істейтін байт түсірілімін жоба файлдарымен бірге сақтаңыз.
ASCII қарапайым болғанымен, өнеркәсіптік ақаулар көбіне жетіспейтін немесе қате оқылған бір байттан туындайды. Хабарламаны алдымен сандық мәндер тізбегі ретінде қарастырыңыз. Кадрды түсінгеннен кейін ғана оны мәтінге қайта түрлендіріңіз.