Вы находитесь на странице: 1из 23

Анатомия PLC-A,B систем ЧПУ FANUC 6T/M

СОДЕРЖАНИЕ

Введение 3
1. Адресная карта областей памяти PLC-A,B 4
1.1. Область таблицы прерываний i8086 4
1.2. Область DI/DO 4
1.3. Область памяти рабочей RAM 4
1.4. Область ROM Монитора-резидента PLC 4
1.4.1. Монитор-резидент PLC-A 4
1.4.2. Монитор-резидента PLC-B 5
1.5. Область памяти ROM Ladder программ 5
1.6. Область операций с битами 6
1.7. Стартовый адрес CPU 6
2. Функциональное назначение фрагментов Ladder области 7
2.1. Заголовок программы Ladder 7
2.2. Таблица вызовов функций SUB 8
2.3. Обработчик функции SUB1 8
2.4. Обработчик функции SUB2 8
3. Команды Ladder программ 9
3.1. Формат битовых команд 9
3.2. Команды ввода и вывода RD, WRT 10
3.3. Команды вызова и обработки функций SUB 10
3.4. Команды сохранения состояния в стеке STK 11
3.5. Команда распределения ресурса DIVn x 11
3.6. Добавляемые функции SUB 12
Приложение 1 14

2
А.Геринг «Анатомия PLC-A,B ЧПУ FANUC 6T/M», Тольятти 2007г
Введение

Есть много разнообразного материала по ремонту, обслуживанию и


программированию используемых в ЧПУ FANUC интегрированных
контроллеров PLC, но очень мало информации о том, как происходит
обработка битовых комбинаций программы FAPT LADDER контроллером.
Попробуем изнутри рассмотреть, те функциональные составляющие и их
особенности, которые не афишируются производителями PLC и ЧПУ. Эти
знания необходимы для грамотного использования ресурсов PLC и создания
красивых, быстро работающих программ. Еще эти знания можно применить
для написания приложений компилятора/декомпилятора для программ и
кодов, написанных на языке FAPT LADDER, которые могут заменить
громоздкий и неудобный программатор. Кратко остановимся на функциях
SUB, как они построены, и откуда они берутся в пользовательской
программе, прошиваемой в ROM чипах. Это важное направление, которое
открывает «черный ящик» и позволит в дальнейшем самим создавать
функции SUB для контроллеров PLC-A,B ЧПУ FANUC 3-6, как это можно
сделать для более открытых контроллеров, например Siemens. Если учесть,
что все продукты ЧПУ ф.FANUC имеют единую и стройную идеологию, то
все эти познания вполне применимы для современных PLC, которые имеют
место в новых сериях/моделях систем ЧПУ. Полезно будет узнать о
некоторых ограничениях языка программирования LADDER, и чем они
обусловлены. В данном пособии мы будем рассматривать PLC,
применяемые в прославленных ЧПУ FANUC 6T/M-A,B,E. Для того чтобы
все проще усваивалось, рекомендую выучить с десяток команд языка
ассемблера процессора i8086, которые применяются для обработки
бинарного кода, скомпилированного с программы языка LADDER. В
данном материале будут, широко применятся дизассемблированные
фрагменты двоичных кодов содержимого пользовательских чипов ROM и
некоторые фрагменты чипов монитора-резидента. Для лучшего понимания
рассматриваемой темы желательно ознакомится с документом B-52260E/01
«Инструкция программирования на языке LADDER». Можно в рамках
рассматриваемых команд, использовать для знакомства документ на
русском языке B-61863RU/15 «Руководство по языку программирования
LADDER», который описывает команды современных PLC (PMC). Все
старые команды имеют полную смысловую и функциональную
совместимость «с низу вверх» с командами для новых PLC (PMC).

Данное информация будет интересна для широкого круга специалистов,


занимающихся ремонтом и обслуживанием ЧПУ, разработчикам микро-
PLC, а так же студентам соответствующих специальностей.

3
А.Геринг «Анатомия PLC-A,B ЧПУ FANUC 6T/M», Тольятти 2007г
1. Адресная карта областей памяти PLC-A,B
В этом материале мы будем рассматривать контроллеры двух очень
похожих моделей PLC-A и PLC-B. Основное их отличие заключается в том,
что модель A подразумевает использования всех аппаратных средств ЧПУ, с
добавлением чипов Монитора и Ladder программ в сокеты платы памяти
ROM. Контроллер PLC-B, подразумевает использование для обработки
Ladder цепочек отдельной платы A20B-0008-0440, со своим процессором и
установленными на ней чипами с Монитором и программой Ladder. При
этом в обоих случаях адресные пространства частично совпадают или
пересекаются. Рассмотрим для начала, где и что у нас расположено в
адресном пространстве процессора i8086 контроллеров PLC-B и PLC-A, а
так же для чего каждая область предназначена.

1.1. Область таблицы прерываний i8086.


Область 00000-00FFFh содержит таблицу прерываний процессора i8086,
дешифрация адреса обращения к которой зеркально отображены на
адресное пространство области памяти второй половины монитора-
резидента PLC-B, c адреса 19000h, где и прописаны все прерывания
необходимые для функционирования контроллера.

1.2. Область DI/DO.


Область 15000h-15FFFh содержит адреса, обращаясь к которым, ЧПУ и
PLC обмениваются данными, контролируют друг друга и обмениваются
управляющими сигналами.

1.3. Область памяти рабочей RAM.


В адресном пространстве 16000h-16FFFh для контроллера PLC-B
имеется статическая память RAM, которая предназначена для
временного хранения содержимого регистров процессора и результатов
обработки данных. Еще в этой памяти хранятся «окна», состоящие из
ячеек входных/выходных данных, которые курсируют по следующему
маршруту: Станок -> ЧПУ -> PLC -{логическая Ladder обработка}-
PLC -> ЧПУ -> Станок и обратно. В контроллере PLC-A память RAM
аналогичного назначения, существует как врезка фрагмента от RAM
памяти ЧПУ, величина ее незначительна (256 байт) и адресуется она
обычно с адреса 1CE00h.

1.4. Область ROM Монитора-резидента PLC.


В адресном пространстве 18000h-18FFFh имеется память ROM, в
которой записан код Монитора-резидента PLC-A, или верхняя половина
Монитора-резидента PLC-B.

1.4.1. Монитор-резидент PLC-A.


В паре чипах ROM Монитора-резидента PLC-A хранится
программа, управляющая процессом логической обработки кодов
хранимых в чипах Ladder. Кроме этого там зашиты функции SUB,
которые вызываются из программы Ladder и модули обработки
связи по последовательному каналу с программатором. Связь с
программатором осуществляется по стандартному интерфейсу
RS232C, являющимся общим с ЧПУ. Стоит заметить, что
4
А.Геринг «Анатомия PLC-A,B ЧПУ FANUC 6T/M», Тольятти 2007г
обработку кодов Монитора-резидента ведет процессор,
установленный на плате ЧПУ Main Board. Самые отработанные и
распространенные версии монитора для PLC-A, это B07 и B08.

1.4.2. Монитор-резидента PLC-B.


Монитор-резидента PLC-B выполняет те же самые функции, что
и Монитор PLC-A, отличается только тем, что он в два раза
больше и занимает дополнительно адресное пространство 19000h-
19FFFh. Еще отличие в том, что он содержит больше функций
SUB, а так же код управляющей программы монитора и Ladder
обрабатывается своим отдельным процессором, установленным
на плате PLC-B. Интерфейс для связи с программатором
расположен на добавочной плате памяти RAM, которая
используется для отладки программ и крепится непосредственно
на плате PLC-B посредством подключения к разъемам CSX1-
CSX2. Самая отлаженная и распространенная версия монитора
для PLC-B, это G00.

1.5. Область памяти ROM Ladder программ.


В адресных пространствах 1A000h-1BFFFh; 1C000h-1DFFFh; 1E000h-
1FFFFh размещаются чипы ROM соответственно №3-4; №5-6; №7-8. В
парах чипов 2732 хранятся программы управления логикой Ladder. В
случае использования добавляемых функций SUB, тело их будет
располагаться сразу за программой Ladder, это подробней будет
рассмотрено ниже. Для PLC-A адресное пространство программ
управления логикой Ladder начинается с адреса 19000h, и сегменты для
каждой пары ROM чипов будут в два раза меньше, так как применены
чипы 2716 в два раза меньшим объемом. Количество применяемых пар
ROM чипов определяется сложностью проекта программ обработки
логики и профессионализмом программиста.

5
А.Геринг «Анатомия PLC-A,B ЧПУ FANUC 6T/M», Тольятти 2007г
Адресная карта.

00000-00FFFh Таблица прерываний

Не используется
Communication
15000h-15FFFh CNC<->PLC-B
DI/DO

16000h-16FFFh Зона PLC-B RAM

Не используется
18000h-18FFFh Монитор PLC-A
или ½ PLC-B 2*2К
19000h-19FFFh Монитор
½ PLC-B 2*2К
Чипы 3-4 кода
1A000h-1BFFFh программы Ladder
2*4К

Чипы 5-6 кода


1C000h-1DFFFh программы Ladder
2*4К

Чипы 7-8 кода


1E000h-1FFFFh программы Ladder
2*4К

Не используется

40000h-4FFFFh Операции с битами


Не используется

0FFFF0h-0FFFFFh Старт Адрес

1.6. Область операций с битами.


Область 40000h-4FFFFh имеет виртуальный смысл и ее нельзя
представлять как обычное адресное пространство. Если мы задаем 20-
разрядное обращение по адресу 4ххххh, то это значит, что будут
обрабатываться отдельные биты. Как это происходит, хорошо описано в
пособии «Секреты ЧПУ FANUC 6T/M-A,B,E» п.3.14 и мы к этому еще
вернемся немного ниже.

1.7. Стартовый адрес CPU.


Область 0FFFF0h-0FFFFFh характерна тем, что в ней расположен код
команды перехода вызываемый при первоначальном сбросе процессора.
Дешифрация адреса обращения к этой области тоже зеркально
отображено на адресное пространство области памяти второй половины
монитора-резидента PLC-B, по адресу 19FF0h, Стартовый адрес
процессора платы PLC-B будет при сбросе аппаратно переадресован с
CS=0FFFFh: IP=0000 на CS=1800h: IP=1FF0h. Если сказать по другому,
то при сбросе вместо команды FAR JMP расположенной по
исполнительному адресу EA=0FFFF0h будет выполнена эта же команда
с исполнительного адреса EA=19FF0h.

6
А.Геринг «Анатомия PLC-A,B ЧПУ FANUC 6T/M», Тольятти 2007г
В дальнейшем нас в основном будет интересовать только область кода
программы Ladder 1A000h-1FFFFh и некоторые фрагменты области кода
ROM Монитора-резидента PLC-B. Для процесса отладки программ Ladder
используют плату памяти RAM A20B-0008-0451, при установке которой на
плату PC-B A20B-0008-0440, она занимает все адресное пространство,
предназначенное для пар ROM чипов №3-4; №5-6; №7-8.

2. Функциональное назначение фрагментов Ladder области.


Все области во фрагментах дизассемблированного кода будут
располагаться с сегмента seg004 = 1800h и смещения offset = 2000h, так
как это справедливо для кода, прошитого в Базовом и PLC
матобеспечении. Все ячейки, к которым нет явного обращения, были
проверены на внутрисхемном эмуляторе ф.Hitex Teletext 16, с помощью
установки «собачек» анализатора сигнализирующих о наличие
обращения к этим ячейкам. К каждому пункту описания будут
прилагаться фрагменты подготовленного таким образом исходного кода,
скомпилированного для контроллера PLC-B.
2.1. Заголовок программы Ladder.
Область программы Ladder с 1A000-1A00Fh содержит некоторую
служебную информацию и называется заголовком. Так как к этой
области нет явных обращений со стороны монитора и функций SUB, она
нам не будет интересна, предположительно почти вся информация
заголовка, нужна для программатора, и в этих ячейках забивается дата и
время создания программы. В самых последних двух словах области
заголовка располагается информация о длине Ladder программы.

; ====================================================================
; Область EPROM с кодом программ Ladder
; Данные регистров при входе в обработку программы Ladder:
; DS=4000 – операция с битами. ES=1A01h + Offset – таблица функций SUB (SubTablArea).
; CS=1800h, EA=CS+IP – выполняемая в обработке команда Ladder.
; ====================================================================
seg004:2000 seg004 segment byte public 'CODE'
seg004:2000 assume cs:seg004
seg004:2000 ;org 2000h
seg004:2000 assume es:nothing, ss:nothing, ds:nothing
seg004:2000 BegLadArea dw 1089h ; Начало области Ladder. Заголовок
seg004:2002 dw 504h
seg004:2004 dw 706h
seg004:2006 dw 0
seg004:2008 dw 0
seg004:200A dw 0F077h
seg004:200C dw 889Ch ; Адр.конца данных от нач.сегмента - 2000h
seg004:200E LadPrgLng dw 89Ch ; Длина кодов программы Ladder

2.2. Таблица вызовов функций SUB.


Область программы Ladder с 1A010h-1A09Fh содержит таблицу
вызовов функций SUB, которые используются в программе Ladder. В
данном случае у нас в таблицу инсталлированы только минимально
необходимые функции SUB, которые находятся в мониторе-резиденте.
В случае, когда функция SUB отсутствует, то в таблице по номеру той
функции устанавливается 0. Обращение к этой таблице функций
происходит по вызову через сегментный регистр ES + Offset
(смещение), где в ES будет адрес таблицы, а смещение будет являться
адрес SUB функции в таблице. Завершает эту таблицу байт
идентификационного номера PLC.

7
А.Геринг «Анатомия PLC-A,B ЧПУ FANUC 6T/M», Тольятти 2007г
; ====================================================================
; Таблица вызова функций SUB кодов программ Ladder
; ====================================================================
seg004:2010 SubTablArea dw 0 ;
seg004:2012 dw 0 ; SUB1
seg004:2014 dw 0 ; SUB2
seg004:2016 dw offset SubTMR ; Функция обработки команды таймера (TMR)
seg004:2018 dw offset SubDEC ; Функция обработки команды декодера (DEC)
seg004:201A dw offset SubCTR ; Функция обработки команды счетчика (CTR)
seg004:201C dw offset SubROT ; Функция команды управления вращением (ROT)
seg004:201E dw offset SubCOD ; Функция команды преобразования кода (COD)
seg004:2020 dw offset SubMOVE ; Функция пересылки лог. произведения (MOVE)
seg004:2022 dw offset SubCOM ; Функция управления общей линией (COM)
seg004:2024 dw 0
seg004:2026 dw offset SubPARI ; Функция команды проверки четности (PARI)
seg004:2028 dw offset SubMWRT ; Функция записи энергонезависимой памяти (MWRT)
seg004:202A dw 0
seg004:202C dw offset SubDCNV ; Функция обработки преобразования данных (DCNV)
seg004:202E dw offset SubCOMP ; Функция обработки сравнения (COMP)
seg004:2030 dw offset SubCOIN ; Функция обработки проверки совпадения (COIN)
seg004:2032 dw 0
seg004:2034 dw 0
seg004:2036 dw 0
* *
* *
* *
seg004:2090 offs_BegSub2 dw offset BegSub2 ; Начало обработки основной Ladder программы
seg004:2092 dw 0
seg004:2094 dw 0
seg004:2096 dw 0
seg004:2098 dw 0
seg004:209A dw 0
seg004:209C dw 0
seg004:209E db 0
seg004:209F PlcID db 31h ; Идентификационный код PLC

Есть некоторые особенности в построении таблицы, функции SUB1


(начать «быструю» обработку цепочек Ladder) и SUB2 (начать
«обычную» обработку цепочек Ladder). Изначально разработчик
запланировал установить их вызова в начальные ячейки таблицы и
везде это в документации указал, но в процессе разработки и отладки,
сделал более быстрые внутренние переходы между модулями
Монитора-резидента и программой Ladder, оставив в таблице более
медленный SUB2, сместив его далеко вверх в таблице (BegSub2).

2.3. Обработчик функции SUB1.


Область программы Ladder с 1A0A0h содержит тело функции SUB1,
которая предназначена для обработки входной/выходной битовой
информации, нуждающаяся в первоочередном и быстром
обслуживании контроллером.

seg004:20A0 ; --------------- S U B R O U T I N E ---------------------------------------------------------


seg004:20A0 ; Обработчик «быстрых» команд PLC
seg004:20A0 BegSub1 proc ; Команда SUB1
seg004:20A0 ; Здесь, если есть,
seg004:20A0 ; будут расположены
seg004:20A0 ; «быстрые» команды
seg004:20A0 cld
seg004:20A1 jmp cs:offs_EndSub1 ; Команда END.1
seg004:20A1 BegSub1 endp
seg004:20A6 ; ---------------------------------------------------------------------------------------------------

2.4. Обработчик функции SUB2.


Обработчик функции SUB2 расположен сразу за обработчиком
функции SUB1 и конкретный адрес его размещения непостоянный, так
как он зависит от длины фрагмента обработчика SUB1. За
исключением обычных команд битовой обработки входов/выходов и
8
А.Геринг «Анатомия PLC-A,B ЧПУ FANUC 6T/M», Тольятти 2007г
вызовов функций SUB, нам представляет интерес автоматически
вставляемая программатором функция DIVISION. Эта функция
необходима для того, чтобы через определенный квант времени
освободить ресурс для других процессов PLC и интерполятора ЧПУ.
Можно отметить разницу в длине фрагментов программ разделенных
функцией DIVISION PLC-A и B, в модели A эта функция будет
устанавливаться чаще. Это обусловлено тем, что в модели PLC-A
обработку Ladder программы ведет тот же самый процессор, что и
обрабатывает ресурсы ЧПУ. По этой причине, функция DIVISION
должна чаще освобождать процессор, выделяя ему ресурс для
обслуживания ЧПУ и интерполятора.

3. Команды Ladder программ.

3.1. Формат битовых команд.


Для того чтобы разобраться с форматом битовых команд, надо
вспомнить п.3.14. пособия «Секреты ЧПУ FANUC 6T/M-A,B,E», где
подробно описано, как организована операция с битами. Ниже
изображен формат этих команд.

19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

RAM Адрес 0E800h-0EFFFh

Не используется
Позиция бита 0-7
*CPL 0: Данные инвертировать

0100: Режим операций с битами

Младшие 11 бит с 0-10й позволяют обращаться к области RAM


размером до 2Кбайт, это сделано с изрядным запасом, так как в
системах ЧПУ FANUC 6-A,B для входов/выходов используется очень
маленькие фрагменты небольших размеров. Стоит только отметить,
что адресация не линейна, т.е. не все адреса в операциях с битами
будут соответствовать шестнадцатеричному, или десятичному
представлению адреса. Это связано с расположением ячеек I/O в
адресном пространстве RAM для различных моделей PLC, а оно не для
всех совпадает.

Следующие три бита с 12-14й предназначены для выбора конкретного


бита, который надо считать, записать, или произвести с ним какую
либо логическую операцию.

Бит 15й предназначен для инвертирования значения бита выбранного


битами 12-14. Ели там установлено значение ‘0’, то выбранный бит
будет инвертирован.
9
А.Геринг «Анатомия PLC-A,B ЧПУ FANUC 6T/M», Тольятти 2007г
Биты 16-19й определены для выбора сегмента адресации операций с
битами, обычно для этого загружается значение 4000h в сегментный
регистр DS.

3.2. Команды ввода и вывода RD, WRT.

Ассемблер Ladder
seg004:20A6 mov al, ds:81A2h ; RD 66.0
seg004:20A9 mov ds:0E002h, al ; WRT 2.6
seg004:20AC mov al, ds:81A3h ; RD 67.0
seg004:20AF mov ds:8007h, al ; WRT 7.0
seg004:20B2 mov al, ds:91A3h ; RD 67.1
seg004:20B5 mov ds:9007h, al ; WRT 7.1

Как мы видим, команды Ladder полностью соответствуют своему


назначению, командам пересылки данных ассемблера. Они очень
быстрые и короткие. В регистре DS у нас подразумевается код 4000h,
так как у нас производится операция с битами. Только некоторые
адресуемые ячейки адресацией не соответствуют, как это указывалось
выше, это связано с особенностью расположения входов/выходов в
памяти RAM для PLC-B.

3.3. Команды вызова и обработки функций SUB.


Для вызова функций, SUB необходимо знать какие параметры и как
передаются телу функции, а так же каким образом осуществляется
возврат из вызванной функции. Рассмотрим, как это сделать, если нет
программатора, который за всем следит, а есть ассемблер, который
входит в состав почти любого компьютера. В языке Ladder есть два типа
параметров передаваемые вызванной функции, это логический и
константный. Логический параметр, это состояние бита 7 регистра AL на
входе, и результат бита 7 в AL на выходе. Константные параметры, это
следующие за командой вызова самой функции call es:Offset, числовые
значения размером в слово. Некоторые функции могут задействовать, в
качестве логического входного параметра, и регистр AH. В самой
команде вызова функции, ES содержит начальный адрес таблицы SUB
(SubTablArea), а Offset представляет собой № функции в таблице
умноженный на 2. Остается вопрос по возврату из функции, но это уже
реализовано в самом теле вызываемой SUB функции. Ниже приведен
пример вызова функции DEC в разных вариантах.

Ассемблер Ladder
seg004:2263 mov al, ds:81A2h ; RD 66.0 Опросить состояние
seg004:2267 and al, ds:0B1A1h ; AND 65.3 Логическое И
seg004:226C call word ptr es:8 ; DEC (SUB4)
seg004:226C ; ---------------------------------------------------------------------------
seg004:2272 dw 43h ; 67d Параметр 1
seg004:2274 dw 0BC3h ; 3011d Параметр 2
seg004:2274 ; ---------------------------------------------------------------------------
seg004:2276 mov ds:90E4h, al ; WRT 228.1 Сохранить логический результат

10
А.Геринг «Анатомия PLC-A,B ЧПУ FANUC 6T/M», Тольятти 2007г
Ниже приведен фрагмент функции DEC, где показано, каким образом,
передаются параметры, как вычисляется адрес возврата из функции и
как обрабатывается логический бит на входе и выходе.

seg003:0A60 ; --------------- S U B R O U T I N E ------------------


seg003:0A60 ; Функция обработки команды декодера(DEC)
seg003:0A60 ;-------------------------------------------------------------
seg003:0A60 SubDEC proc near
seg003:0A60 mov bp, sp
seg003:0A62 mov si, [bp+0] ; Получить адрес первого параметра
seg003:0A65 add word ptr [bp+0], 4 ; Установка адреса возврата в «обход» параметров
seg003:0A69 test al, 80h ; Логика запуска "Включено"?
seg003:0A6B jz short EndDEC
seg003:0A6D mov dx, cs:[si] ; Получить данные Параметра 1
seg003:0A70 call GetAdrVar ; Получить адрес RAM данных PLC номера DX.Вых.в BP
seg003:0A73 mov dx, cs:[si+2] ; Получить данные Параметра 2
*
* ; Обработка данных
*
seg003:0AB3 cmp cx, dx
seg003:0AB5 jz short locret_ EndDEC ; Завершение функции с Вых.состоян."Включено"
seg003:0AB7 and al, 7Fh ; Установка состояния Вых."Выключено"
seg003:0AB9 EndDEC:
seg003:0AB9 retn
seg003:0AB9 SubDEC endp

3.4. Команды сохранения состояния в стеке STK.


Для написания сложных фрагментов программ из набора нескольких
цепочек И-ИЛИ команд, иногда бывает необходимо временно запомнить
состояние бита, чтобы в дальнейшем получить его обратно, для
последующих логических операций. Обычная команда процессора
PUSH, для этого не подходит, так как она очень медленная, по причине
обращения к памяти. Для этой цели в PLC-A,B разработчики используют
регистр AH и команды сдвига, которые очень быстрые. Единственный
недостаток этого способа, что число вложений ограничено 8-и битами
регистра AH.

Ассемблер Ladder
seg004:26C1 mov al, ds:0B0C8h ; RD 200.3
seg004:26C4 or al, ds:0C0C8h ; OR 200.4
seg004:26C8 and al, ds:31C0h ; AND.NOT 32.3
seg004:26CC shl ax, 1 ; Push STK
seg004:26CE mov al, ds:0D0C8h ; RD.STK 200.5
seg004:26D1 and al, ds:0B1C0h ; AND 32.3
seg004:26D5 ror ah, 1 ; Pop STK
seg004:26D7 or al, ah ; OR.STK
seg004:26D9 mov ds:0F0CBh, al ; WRT 203.7

3.5. Команда распределения ресурса DIVn x.


Команда распределения ресурса DIVn служит для передачи под
управление процессора временно отложенных задач и представляет
собой вызов подпрограммы по содержимому ячейки таблицы с нулевым
смещением, в которой содержится адрес обработчика распределителя

11
А.Геринг «Анатомия PLC-A,B ЧПУ FANUC 6T/M», Тольятти 2007г
ресурса. Весь механизм управления ресурсами достаточно сложен и не
входит в рамки нашей темы, поэтому мы рассматривать его не будем.

Фрагмент обработчика распределения ресурса в Мониторе


offs_SetStkJmp dw offset SetStkJmp ; Точка вызова Обработчика возврата в таблице переходов
;
seg003:004A ; Обработчик возврата к прерванной обработке
seg003:004A SetStkJmp proc near
seg003:004A push ss
seg003:004B pop ds ; Установить сегмент данных отложенной задачи
seg003:004C mov KepngAX, ax ; Восстановление AX прерванной обработки
seg003:004F mov KepngBX, bx ; Восстановление BX прерванной обработки
seg003:0053 mov bp, sp
seg003:0055 mov ax, [bp+0] ; Получить место возврата в Ladder
seg003:0058 mov StkPtrJmp, ax ; Сохранить место возврата в Ladder
seg003:005B add sp, 2 ; переход на содержимое стека SP+2
seg003:005E pop ds ; Восстановить сегмент
seg003:005F pop es ; Восстановить сегмент
seg003:0060 retn ; Возврат к предыдущей отложенной задаче
seg003:0060 SetStkJmp endp

Фрагмент с командой DIVn в кодах программы Ladder


seg004:384D clc
seg004:384E call cs:offs_SetStkJmp ; DIVn 1 Вызов возврата к отложенным задачам
*
* продолжение программы Ladder
*

3.6. Добавляемые функции SUB.


Как мы уже знакомились выше, функции SUB у нас находятся в чипах
Монитора-резидента, и из таблицы функций мы можем их вызывать.
Однако не все функции включает в себя Монитор-резидент, есть еще
разновидность функций SUB, которые находятся в программаторе языка
Ladder и если мы их применили в программе, то они добавляются в
свободную за Ladder программой область чипов EPROM. Затем в
таблицу функций SUB прописываются адреса их вызова, согласно
присвоенным номерам. Эти функции были введены в связи с
расширением функциональности PLC и по причине отсутствия
свободного места в чипах Монитора-резидента. Используя метод
подключения добавляемых функций, мы можем разработать и написать
свои SUB функции, для решения каких либо нестандартных задач. Очень
важно соблюдать следующее: Не допустить ошибку с количеством
необходимых параметров и соответствующим вычислением адреса
возврата в созданной функции, а так же правильной установкой адреса
вызова функции в таблицу, в противном случае может неправильно
определится адрес возврата из процедуры или нарушится правильная
отработка логики программы. Следующий важный момент после
добавления функций, это правильно скорректировать контрольную
сумму содержимого чипов EPROM, иначе выработается сбой по
нарушению памяти PLC ROM. Ниже приведена процедура подсчета
контрольных сумм для чипов EPROM.

Подпрограммы обработки контрольных сумм чипов ROM


seg003:1B15 ; --------------- S U B R O U T I N E -------------------
seg003:1B15 ; Контроль ROM матобеспечения PC-B
seg003:1B15 ChkSfwPC proc near
seg003:1B15 mov ax, 1800h ; Длина области Ladder программ/2
seg003:1B18 mov ds, ax
seg003:1B1A mov si, 0
seg003:1B1D mov bl, 0
seg003:1B1F mov di, 1FFEh
seg003:1B22 LopAddCS:
seg003:1B22 call CheckSum ; Вычисление КС.Вых.AL=КС
12
А.Геринг «Анатомия PLC-A,B ЧПУ FANUC 6T/M», Тольятти 2007г
seg003:1B25 add al, bl
seg003:1B27 cmp al, [di]
seg003:1B29 jz short Count
seg003:1B2B call SetErrCS ; Установка флага ошибки
seg003:1B2E Count:
seg003:1B2E inc bl
seg003:1B30 inc di
seg003:1B31 test si, 1 ; Нечетный чип?
seg003:1B35 jnz short ChkNum
seg003:1B37 sub si, 1FFFh
seg003:1B3B jmp short LopAddCS
seg003:1B3D ; -------------------------------------------------------------------------
seg003:1B3D ChkNum: ;
seg003:1B3D cmp bh, bl
seg003:1B3F jz short RstrDsEnd
seg003:1B41 dec si
seg003:1B42 jmp short LopAddCS
seg003:1B44 ; ---------------------------------------------------------------------------
seg003:1B44 RstrDsEnd: ;
seg003:1B44 push ss
seg003:1B45 pop ds
seg003:1B46 retn
seg003:1B46 ChkSfwPC endp
seg003:1B47 ; --------------- S U B R O U T I N E ---------------------------------
seg003:1B47 ; Вычисление КС.Вых.AL=КС, BP=проверяемый № чипа
seg003:1B47 CheckSum proc near ;
seg003:1B47 rol bp, 1 ; Следующий чип в обработке
seg003:1B49 mov cx, 1000h ; Емкость чипа 3732=4К
seg003:1B4C mov al, 0
seg003:1B4E AddLop: ; Суммировать ячейки чипа
seg003:1B4E add al, [si]
seg003:1B50 inc si
seg003:1B51 inc si
seg003:1B52 loop AddLop
seg003:1B54 retn
seg003:1B54 CheckSum endp
seg003:1B55 ; --------------- S U B R O U T I N E --------------------------------
seg003:1B55 ; Обработчик установки флага ошибки
seg003:1B55 SetErrCS proc near
seg003:1B55 push ds
seg003:1B56 push ss
seg003:1B57 pop ds
seg003:1B58 or word ptr FlErrCS, bp ; Установить флаг ошибки чипа
seg003:1B5C pop ds
seg003:1B5D retn
seg003:1B5D SetErrCS endp
seg003:1B5D ; --------------------------------------------------------------------------

Вызов подпрограммы обработки контрольных сумм чипов ROM


seg003:19EC ChkLadArea:
seg003:19EC call ChkLadROM ; Контроль области Ladder ROM PC-B
seg003:19EF mov bp, 8000h ; Инициализация указателя № чипа
seg003:19F2 call ChkSfwPC ; Контроль ROM матобеспечения PC-B
seg003:19F5 test FlErrCS, 0FFh ; Есть чипы с нарушением КС?
seg003:19FA jnz short ErrLopIdle ; На обработку ошибки
seg003:19FC ClrEnbSt:
seg003:19FC mov StatEnbNMI, 0 ; Очистить флаги NMI
*

Приведенный выше фрагмент подпрограмм можно использовать для


написания приложений подсчета и коррекции контрольных сумм для
чипов программ Ladder.

Для написания данного пособия использовались следующие документы и


средства:

- Комплекс эмулятора/анализатора Hitex T16;


- Дизассемблер IDA Pro 4.8;
- Документ FANUC B-52260E/01;
- Документ FANUC B-54045R/01.

13
А.Геринг «Анатомия PLC-A,B ЧПУ FANUC 6T/M», Тольятти 2007г
Приложение 1 Пример программы PLC-B со станка FDXNC125
; ====================================================================
; Область EPROM с кодом программ Ladder
; Данные регистров при входе в обработку программы Ladder:
; DS=4000 – операция с битами. ES=1A01h + Offset – таблица функций SUB (SubTablArea).
; CS=1800h, EA=2000h+IP – выполняемая в обработке команда Ladder.
; ====================================================================
seg004:2000 seg004 segment byte public 'CODE'
seg004:2000 assume cs:seg004
seg004:2000 ;org 2000h
seg004:2000 assume es:nothing, ss:nothing, ds:nothing
seg004:2000 BegLadArea dw 1089h
seg004:2002 dw 504h
seg004:2004 dw 706h
seg004:2006 dw 0
seg004:2008 dw 0
seg004:200A dw 0F077h
seg004:200C dw 889Ch Адр.конца данных от нач.сегмента - 2000h
seg004:200E LadPrgLng dw 89Ch ; Длина кодов программы Ladder
; ====================================================================
; Таблица вызова функций SUB кодов программ Ladder
; ====================================================================
seg004:2010 SubTablArea dw 0
seg004:2012 dw 0 ; SUB1
seg004:2014 dw 0 ; SUB2
seg004:2016 dw offset SubTMR ; Функция обработки команды таймера(TMR)
seg004:2018 dw offset SubDEC ; Функция обработки команды декодера(DEC)
seg004:201A dw offset SubCTR ; Функция обработки команды счетчика(CTR)
seg004:201C dw offset SubROT ; Функция команды управления вращением(ROT)
seg004:201E dw offset SubCOD ; Функция команды преобр-ния кода(COD)
seg004:2020 dw offset SubMOVE ; Функция пересылки лог.произведения(MOVE)
seg004:2022 dw offset SubCOM ; Функция управления общей линией(COM)
seg004:2024 dw 0
seg004:2026 dw offset SubPARI ; Функция команды проверки четности(PARI)
seg004:2028 dw offset SubMWRT ; Функция записи энергонезависимой памяти(MWRT)
seg004:202A dw 0
seg004:202C dw offset SubDCNV ; Функция обработки преобразования данных(DCNV)
seg004:202E dw offset SubCOMP ; Функция обработки сравнения(COMP)
seg004:2030 dw offset SubCOIN ; Функция обработки проверки совпадения(COIN)
seg004:2032 dw 0
seg004:2034 dw 0
seg004:2036 dw 0
seg004:2038 dw 0
seg004:203A dw 0
seg004:203C dw 0
seg004:203E dw offset SubNUME ; Функция определения константы(NUME)
seg004:2040 dw 0
seg004:2042 dw 0
seg004:2044 dw 0
seg004:2046 dw 0
seg004:2048 dw 0
seg004:204A dw 0
seg004:204C dw 0
seg004:204E dw 0
seg004:2050 dw 0
seg004:2052 dw 0
seg004:2054 dw 0
seg004:2056 dw 0
seg004:2058 dw 0
seg004:205A dw 0
seg004:205C dw 0
seg004:205E dw 0
seg004:2060 dw 0
seg004:2062 dw 0
seg004:2064 dw 0
seg004:2066 dw 0
seg004:2068 dw 0
seg004:206A dw 0
seg004:206C dw 0
seg004:206E dw 0
seg004:2070 dw 0
seg004:2072 dw offset SubDISP ; Функция обработки команды (DISP)
seg004:2074 dw 0
seg004:2076 dw 0
seg004:2078 dw 0

14
А.Геринг «Анатомия PLC-A,B ЧПУ FANUC 6T/M», Тольятти 2007г
seg004:207A dw 0
seg004:207C dw 0
seg004:207E dw 0
seg004:2080 dw 0
seg004:2082 dw 0
seg004:2084 dw 0
seg004:2086 dw 0
seg004:2088 dw 0
seg004:208A dw 0
seg004:208C dw 0
seg004:208E dw 0
seg004:2090 offs_BegSub2 dw offset BegSub2 ; Начало обработки основной Ladder программы
seg004:2092 dw 0
seg004:2094 dw 0
seg004:2096 dw 0
seg004:2098 dw 0
seg004:209A dw 0
seg004:209C dw 0
seg004:209E db 0
seg004:209F PlcID db 31h ; Идентификационный код PLC
seg004:20A0
seg004:20A0 ; --------------- S U B R O U T I N E ---------------------------------------
seg004:20A0 ; Обработчик «быстрых» команд PLC
seg004:20A0 BegSub1 proc ; SUB1
seg004:20A0 ; Здесь, если есть,
seg004:20A0 ; будут расположены
seg004:20A0 ; «быстрые» команды
seg004:20A0 ;*
seg004:20A0 cld
seg004:20A1 jmp cs:offs_EndSub1 ; END.1
seg004:20A1 BegSub1 endp
seg004:20A6 ; ---------------------------------------------------------------------------------
seg004:20A6 ; Обработчик «обычных» команд PLC
seg004:20A6 BegSub2: ; SUB2
seg004:20A6 mov al, ds:81A2h ; RD 66.0
seg004:20A9 mov ds:0E002h, al ; WRT 2.6
seg004:20AC mov al, ds:81A3h ; RD 67.0
seg004:20AF mov ds:8007h, al ; WRT 7.0
seg004:20B2 mov al, ds:91A3h ; RD 67.1
seg004:20B5 mov ds:9007h, al ; WRT 7.1
seg004:20B8 mov al, ds:0A1A3h ; RD 67.2
seg004:20BB mov ds:0A007h, al ; WRT 7.2
seg004:20BE mov al, ds:0B1A3h ; RD 67.3
seg004:20C1 mov ds:0B007h, al ; WRT 7.3
seg004:20C4 mov al, ds:0C1A3h ; RD 67.4
seg004:20C7 mov ds:0C007h, al ; WRT 7.4
seg004:20CA mov al, ds:0D1A3h ; RD 67.5
seg004:20CD mov ds:0D007h, al ; WRT 7.5
seg004:20D0 mov al, ds:0E1A3h ; RD 67.6
seg004:20D3 mov ds:0E007h, al ; WRT 7.6
seg004:20D6 mov al, ds:0F1A3h ; RD 67.7
seg004:20D9 mov ds:0F007h, al ; WRT 7.7
seg004:20DC mov al, ds:90C8h ; RD 200.1
seg004:20DF or al, ds:10C8h ; OR.NOT 200.1
seg004:20E3 mov ds:90C8h, al ; WRT 200.1
seg004:20E6 mov ds:0C8h, al ; WRT.NOT 200.0
seg004:20E9 mov al, ds:0C1C6h ; RD 38.4
seg004:20EC mov ds:0C066h, al ; WRT 102.4
seg004:20EF mov al, ds:0D1A0h ; RD 64.5
seg004:20F2 mov ds:0E006h, al ; WRT 6.6
seg004:20F5 mov al, ds:0C1A0h ; RD 64.4
seg004:20F8 mov ds:0F006h, al ; WRT 6.7
seg004:20FB mov al, ds:81A0h ; RD 64.0
seg004:20FE mov ds:8006h, al ; WRT 6.0
seg004:2101 mov al, ds:91A0h ; RD 64.1
seg004:2104 mov ds:9006h, al ; WRT 6.1
seg004:2107 mov al, ds:0A1A0h ; RD 64.2
seg004:210A mov ds:0A006h, al ; WRT 6.2
seg004:210D mov al, ds:0C1C3h ; RD 35.4
seg004:2110 mov ds:0D064h, al ; WRT 100.5
seg004:2113 mov al, ds:0C1C2h ; RD 34.4
seg004:2116 mov ds:8064h, al ; WRT 100.0
seg004:2119 mov al, ds:0C1C0h ; RD 32.4
seg004:211C mov ds:0F064h, al ; WRT 100.7
seg004:211F mov al, ds:0C1C1h ; RD 33.4
seg004:2122 mov ds:0E064h, al ; WRT 100.6
seg004:2125 mov al, ds:0F1C3h ; RD 35.7
seg004:2128 mov ds:0F06Bh, al ; WRT 107.7
seg004:212B mov al, ds:0E1C6h ; RD 38.6
15
А.Геринг «Анатомия PLC-A,B ЧПУ FANUC 6T/M», Тольятти 2007г
seg004:212E mov ds:9064h, al ; WRT 100.1
seg004:2131 mov al, ds:0B1C3h ; RD 35.3
seg004:2134 mov ds:0A064h, al ; WRT 100.2
seg004:2137 mov al, ds:0C1C5h ; RD 37.4
seg004:213A mov ds:0B064h, al ; WRT 100.3
seg004:213D mov al, ds:90C8h ; RD 200.1
seg004:2140 mov ds:0F069h, al ; WRT 105.7
seg004:2143 mov ds:0D065h, al ; WRT 101.5
seg004:2146 mov al, ds:0F1C9h ; RD 41.7
seg004:2149 mov ds:9069h, al ; WRT 105.1
seg004:214C mov al, ds:0F1C7h ; RD 39.7
seg004:214F mov ds:0A069h, al ; WRT 105.2
seg004:2152 mov al, ds:0D1C7h ; RD 39.5
seg004:2155 mov ds:0B069h, al ; WRT 105.3
seg004:2158 mov al, ds:0E1C7h ; RD 39.6
seg004:215B mov ds:0C069h, al ; WRT 105.4
seg004:215E mov al, ds:0C1C7h ; RD 39.4
seg004:2161 mov ds:0D069h, al ; WRT 105.5
seg004:2164 mov al, ds:0B1C7h ; RD 39.3
seg004:2167 mov ds:0E069h, al ; WRT 105.6
seg004:216A mov al, ds:0D1CAh ; RD 42.5
seg004:216D mov ds:8066h, al ; WRT 102.0
seg004:2170 mov al, ds:0E1CAh ; RD 42.6
seg004:2173 mov ds:9066h, al ; WRT 102.1
seg004:2176 mov al, ds:0F1CAh ; RD 42.7
seg004:2179 mov ds:0A066h, al ; WRT 102.2
seg004:217C mov al, ds:8068h ; RD 104.0
seg004:217F and al, ds:9068h ; AND 104.1
seg004:2183 and al, ds:0A068h ; AND 104.2
seg004:2187 and al, ds:0B068h ; AND 104.3
seg004:218B and al, ds:0C068h ; AND 104.4
seg004:218F mov ds:0F0CCh, al ; WRT 204.7
seg004:2192 mov al, ds:0D1C8h ; RD 40.5
seg004:2195 mov ds:0D067h, al ; WRT 103.5
seg004:2198 mov al, ds:0E1C8h ; RD 40.6
seg004:219B mov ds:0E067h, al ; WRT 103.6
seg004:219E mov al, ds:0F1C4h ; RD 36.7
seg004:21A1 mov ds:0F065h, al ; WRT 101.7
seg004:21A4 mov al, ds:0E1C9h ; RD 41.6
seg004:21A7 and al, ds:0A069h ; AND 105.2
seg004:21AB mov ds:0F067h, al ; WRT 103.7
seg004:21AE mov al, ds:81C9h ; RD 41.0
seg004:21B1 mov ds:0A060h, al ; WRT 96.2
seg004:21B4 mov al, ds:91C9h ; RD 41.1
seg004:21B7 mov ds:0B060h, al ; WRT 96.3
seg004:21BA mov al, ds:0A1C9h ; RD 41.2
seg004:21BD mov ds:0A061h, al ; WRT 97.2
seg004:21C0 mov al, ds:0B1C9h ; RD 41.3
seg004:21C3 mov ds:0B061h, al ; WRT 97.3
seg004:21C6 mov al, ds:0C1C9h ; RD 41.4
seg004:21C9 mov ds:0A062h, al ; WRT 98.2
seg004:21CC mov al, ds:0D1C9h ; RD 41.5
seg004:21CF mov ds:0B062h, al ; WRT 98.3
seg004:21D2 mov al, ds:91C4h ; RD 36.1
seg004:21D5 and al, ds:9069h ; AND 105.1
seg004:21D9 mov ds:0F060h, al ; WRT 96.7
seg004:21DC mov al, ds:0A1C4h ; RD 36.2
seg004:21DF and al, ds:9069h ; AND 105.1
seg004:21E3 mov ds:0F061h, al ; WRT 97.7
seg004:21E6 mov al, ds:0B1C4h ; RD 36.3
seg004:21E9 and al, ds:9069h ; AND 105.1
seg004:21ED mov ds:0F062h, al ; WRT 98.7
seg004:21F0 mov al, ds:81CAh ; RD 42.0
seg004:21F3 or al, ds:0F1C7h ; OR 39.7
seg004:21F7 mov ds:8068h, al ; WRT 104.0
seg004:21FA mov al, ds:91CAh ; RD 42.1
seg004:21FD and al, ds:71C7h ; AND.NOT 39.7
seg004:2201 mov ds:9068h, al ; WRT 104.1
seg004:2204 mov al, ds:0A1CAh ; RD 42.2
seg004:2207 or al, ds:0F1C7h ; OR 39.7
seg004:220B mov ds:0A068h, al ; WRT 104.2
seg004:220E mov al, ds:0B1CAh ; RD 42.3
seg004:2211 and al, ds:71C7h ; AND.NOT 39.7
seg004:2215 mov ds:0B068h, al ; WRT 104.3
seg004:2218 mov al, ds:0C1CAh ; RD 42.4
seg004:221B or al, ds:0F1C7h ; OR 39.7
seg004:221F mov ds:0C068h, al ; WRT 104.4
seg004:2222 mov al, ds:81C8h ; RD 40.0
seg004:2225 or al, ds:0E1C9h ; OR 41.6
16
А.Геринг «Анатомия PLC-A,B ЧПУ FANUC 6T/M», Тольятти 2007г
seg004:2229 mov ds:8067h, al ; WRT 103.0
seg004:222C mov al, ds:91C8h ; RD 40.1
seg004:222F or al, ds:0E1C9h ; OR 41.6
seg004:2233 mov ds:9067h, al ; WRT 103.1
seg004:2236 mov al, ds:0A1C8h ; RD 40.2
seg004:2239 or al, ds:0E1C9h ; OR 41.6
seg004:223D mov ds:0A067h, al ; WRT 103.2
seg004:2240 mov al, ds:0B1C8h ; RD 40.3
seg004:2243 and al, ds:61C9h ; AND.NOT 41.6
seg004:2247 mov ds:0B067h, al ; WRT 103.3
seg004:224A mov al, ds:0C1C8h ; RD 40.4
seg004:224D and al, ds:61C9h ; AND.NOT 41.6
seg004:2251 mov ds:0C067h, al ; WRT 103.4
seg004:2254 mov al, ds:80C8h ; RD 200.0
seg004:2257 mov ds:0E068h, al ; WRT 104.6
seg004:225A mov ds:0F068h, al ; WRT 104.7
seg004:225D mov al, ds:0E1C4h ; RD 36.6
seg004:2260 mov ds:0D068h, al ; WRT 104.5
seg004:2263 mov al, ds:81A2h ; RD 66.0
seg004:2266 call word ptr es:8 ; DEC
seg004:2266 ; ---------------------------------------------------------------------------
seg004:226B dw 43h ; 67d
seg004:226D dw 137h ; 311d
seg004:226F ; ---------------------------------------------------------------------------
seg004:226F mov ds:0B0C8h, al ; WRT 200.3
seg004:2272 mov al, ds:81A2h ; RD 66.0
seg004:2275 call word ptr es:8 ; DEC
seg004:2275 ; ---------------------------------------------------------------------------
seg004:227A dw 43h ; 67d
seg004:227C dw 19Bh ; 411d
seg004:227E ; ---------------------------------------------------------------------------
seg004:227E mov ds:0C0C8h, al ; WRT 200.4
seg004:2281 mov al, ds:81A2h ; RD 66.0
seg004:2284 call word ptr es:8 ; DEC
seg004:2284 ; ---------------------------------------------------------------------------
seg004:2289 dw 43h ; 67d
seg004:228B dw 1FFh ; 511d
seg004:228D ; ---------------------------------------------------------------------------
seg004:228D mov ds:0D0C8h, al ; WRT 200.5
seg004:2290 mov al, ds:81A2h ; RD 66.0
seg004:2293 call word ptr es:8 ; DEC
seg004:2293 ; ---------------------------------------------------------------------------
seg004:2298 dw 43h ; 67d
seg004:229A dw 32Bh ; 811d
seg004:229C ; ---------------------------------------------------------------------------
seg004:229C mov ds:0E0C8h, al ; WRT 200.6
seg004:229F mov al, ds:81A2h ; RD 66.0
seg004:22A2 call word ptr es:8 ; DEC
seg004:22A2 ; ---------------------------------------------------------------------------
seg004:22A7 dw 43h ; 67d
seg004:22A9 dw 38Fh ; 911d
seg004:22AB ; ---------------------------------------------------------------------------
seg004:22AB mov ds:0F0C8h, al ; WRT 200.7
seg004:22AE mov al, ds:81A2h ; RD 66.0
seg004:22B1 call word ptr es:8 ; DEC
seg004:22B1 ; ---------------------------------------------------------------------------
seg004:22B6 dw 43h ; 67d
seg004:22B8 dw 83Fh ; 2111d
seg004:22BA ; ---------------------------------------------------------------------------
seg004:22BA mov ds:80C9h, al ; WRT 201.0
seg004:22BD mov al, ds:81A2h ; RD 66.0
seg004:22C0 call word ptr es:8 ; DEC
seg004:22C0 ; ---------------------------------------------------------------------------
seg004:22C5 dw 43h ; 67d
seg004:22C7 dw 8A3h ; 2211
seg004:22C9 ; ---------------------------------------------------------------------------
seg004:22C9 mov ds:90C9h, al ; WRT 201.1
seg004:22CC mov al, ds:81A2h ; RD 66.0
seg004:22CF call word ptr es:8 ; DEC
seg004:22CF ; ---------------------------------------------------------------------------
seg004:22D4 dw 43h ; 67d
seg004:22D6 dw 907h ; 2311d
seg004:22D8 ; ---------------------------------------------------------------------------
seg004:22D8 mov ds:0A0C9h, al ; WRT 201.2
seg004:22DB mov al, ds:80C9h ; RD 201.0
seg004:22DE or al, ds:8065h ; OR 101.0
seg004:22E2 and al, ds:20C9h ; AND.NOT 201.2
seg004:22E6 mov ds:8065h, al ; WRT 101.0
seg004:22E9 mov al, ds:90C9h ; RD 201.1
17
А.Геринг «Анатомия PLC-A,B ЧПУ FANUC 6T/M», Тольятти 2007г
seg004:22EC or al, ds:9065h ; OR 101.1
seg004:22F0 and al, ds:20C9h ; AND.NOT 201.2
seg004:22F4 mov ds:9065h, al ; WRT 101.1
seg004:22F7 mov al, ds:8065h ; RD 101.0
seg004:22FA mov ds:0B006h, al ; WRT 6.3
seg004:22FD mov al, ds:9065h ; RD 101.1
seg004:2300 mov ds:0C006h, al ; WRT 6.4
seg004:2303 mov al, ds:80C9h ; RD 201.0
seg004:2306 and al, ds:8065h ; AND 101.0
seg004:230A shl ax, 1 ; Push STK
seg004:230C mov al, ds:90C9h ; RD.STK 201.1
seg004:230F and al, ds:9065h ; AND 101.1
seg004:2313 ror ah, 1 ; Pop STK
seg004:2315 or al, ah ; OR.STK
seg004:2317 shl ax, 1 ; Push STK
seg004:2319 mov al, ds:0A0C9h ; RD.STK 201.2
seg004:231C and al, ds:65h ; AND.NOT 101.0
seg004:2320 and al, ds:1065h ; AND.NOT 101.1
seg004:2324 ror ah, 1 ; Pop STK
seg004:2326 or al, ah ; OR.STK
seg004:2328 mov ds:0B0C9h, al ; WRT 201.3
seg004:232B mov al, ds:0C1A5h ; RD 69.4
seg004:232E mov ds:0E066h, al ; WRT 102.6
seg004:2331 mov al, ds:0D1A5h ; RD 69.5
seg004:2334 mov ds:0F066h, al ; WRT 102.7
seg004:2337 mov al, ds:0E1A5h ; RD 69.6
seg004:233A and al, ds:0A1C0h ; AND 32.2
seg004:233E or al, ds:0C1A5h ; OR 69.4
seg004:2342 or al, ds:0D1A5h ; OR 69.5
seg004:2346 or al, ds:0F1A5h ; OR 69.7
seg004:234A mov ds:0D0CBh, al ; WRT 203.5
seg004:234D mov al, ds:0F1C4h ; RD 36.7
seg004:2350 mov ds:0A001h, al ; WRT 1.2
seg004:2353 mov al, ds:0D1C3h ; RD 35.5
seg004:2356 mov ds:0A002h, al ; WRT 2.2
seg004:2359 mov al, ds:0E0C8h ; RD 200.6
seg004:235C or al, ds:0F001h ; OR 1.7
seg004:2360 and al, ds:70C8h ; AND.NOT 200.7
seg004:2364 and al, ds:50CBh ; AND.NOT 203.5
seg004:2368 and al, ds:11A1h ; AND.NOT 65.1
seg004:236C and al, ds:0C1C6h ; AND 38.4
seg004:2370 mov ds:0F001h, al ; WRT 1.7
seg004:2373 mov al, ds:0E0C8h ; RD 200.6
seg004:2376 and al, ds:0F001h ; AND 1.7
seg004:237A shl ax, 1 ; Push STK
seg004:237C mov al, ds:0F0C8h ; RD.STK 200.7
seg004:237F and al, ds:7001h ; AND.NOT 1.7
seg004:2383 ror ah, 1 ; Pop STK
seg004:2385 or al, ah ; OR.STK
seg004:2387 mov ds:0C0C9h, al ; WRT 201.4
seg004:238A mov al, ds:0D1A5h ; RD 69.5
seg004:238D or al, ds:0C1A5h ; OR 69.4
seg004:2391 or al, ds:0D0C9h ; OR 201.5
seg004:2395 and al, ds:0D1C3h ; AND 35.5
seg004:2399 mov ds:0D0C9h, al ; WRT 201.5
seg004:239C mov al, ds:0D0C9h ; RD 201.5
seg004:239F and al, ds:31C0h ; AND.NOT 32.3
seg004:23A3 call word ptr es:6 ; TMR
seg004:23A3 ; ---------------------------------------------------------------------------
seg004:23A8 dw 1 ; TMR 1
seg004:23AA ; ---------------------------------------------------------------------------
seg004:23AA mov ds:0E0C9h, al ; WRT 201.6
seg004:23AD mov al, ds:0D0C9h ; RD 201.5
seg004:23B0 and al, ds:0B1C0h ; AND 32.3
seg004:23B4 or al, ds:0E0C9h ; OR 201.6
seg004:23B8 mov ds:0C001h, al ; WRT 1.4
seg004:23BB mov al, ds:71C6h ; RD.NOT 38.7
seg004:23BE mov ds:8000h, al ; WRT 0.0
seg004:23C1 mov ds:8258h, al ; WRT 600.0
seg004:23C4 mov al, ds:51C6h ; RD.NOT 38.5
seg004:23C7 mov ds:0A000h, al ; WRT 0.2
seg004:23CA mov ds:0A258h, al ; WRT 600.2
seg004:23CD mov al, ds:0F1C1h ; RD 33.7
seg004:23D0 mov ds:9000h, al ; WRT 0.1
seg004:23D3 mov ds:9258h, al ; WRT 600.1
seg004:23D6 mov al, ds:71C0h ; RD.NOT 32.7
seg004:23D9 mov ds:0B000h, al ; WRT 0.3
seg004:23DC mov ds:0B258h, al ; WRT 600.3
seg004:23DF mov al, ds:0A1C5h ; RD 37.2
18
А.Геринг «Анатомия PLC-A,B ЧПУ FANUC 6T/M», Тольятти 2007г
seg004:23E2 or al, ds:0D0CCh ; OR 204.5
seg004:23E6 and al, ds:0C1C6h ; AND 38.4
seg004:23EA mov ds:0F0C9h, al ; WRT 201.7
seg004:23ED mov al, ds:0F0C9h ; RD 201.7
seg004:23F0 and al, ds:31C0h ; AND.NOT 32.3
seg004:23F4 call word ptr es:6 ; TMR
seg004:23F4 ; ---------------------------------------------------------------------------
seg004:23F9 dw 2 ; TMR 2
seg004:23FB ; ---------------------------------------------------------------------------
seg004:23FB mov ds:0A0CAh, al ; WRT 202.2
seg004:23FE mov al, ds:0F0C9h ; WRT 202.2
seg004:2401 and al, ds:0B1C0h ; AND 32.3
seg004:2405 or al, ds:0A0CAh ; OR 202.2
seg004:2409 mov ds:8001h, al ; WRT 1.0
seg004:240C mov al, ds:0C1A5h ; RD 69.4
seg004:240F or al, ds:0D1A5h ; OR 69.5
seg004:2413 or al, ds:0B0CAh ; OR 202.3
seg004:2417 and al, ds:11A1h ; AND.NOT 65.1
seg004:241B and al, ds:51A2h ; AND.NOT 66.5
seg004:241F and al, ds:21C2h ; AND.NOT 34.2
seg004:2423 mov ds:0B0CAh, al ; WRT 202.3
seg004:2426 mov al, ds:0B0CAh ; RD 202.3
seg004:2429 or al, ds:0D006h ; OR 6.5
seg004:242D mov ds:9001h, al ; WRT 1.1
seg004:2430 mov al, ds:80C8h ; RD 200.0
seg004:2433 mov ds:0F06Dh, al ; WRT 109.7
seg004:2436 mov al, ds:0C1A4h ; RD 68.4
seg004:2439 mov ds:8003h, al ; WRT 3.0
seg004:243C mov al, ds:0D1A4h ; RD 68.5
seg004:243F mov ds:9003h, al ; WRT 3.1
seg004:2442 mov al, ds:0E1A4h ; RD 68.6
seg004:2445 mov ds:0A003h, al ; WRT 3.2
seg004:2448 mov al, ds:0F1A4h ; RD 68.7
seg004:244B mov ds:0B003h, al ; WRT 3.3
seg004:244E mov al, ds:81A5h ; RD 69.0
seg004:2451 mov ds:0C003h, al ; WRT 3.4
seg004:2454 mov al, ds:91A5h ; RD 69.1
seg004:2457 mov ds:0D003h, al ; WRT 3.5
seg004:245A mov al, ds:0A1A5h ; RD 69.2
seg004:245D mov ds:0E003h, al ; WRT 3.6
seg004:2460 mov al, ds:0B1A5h ; RD 69.3
seg004:2463 mov ds:0F003h, al ; WRT 3.7
seg004:2466 mov al, ds:0C1C6h ; RD 38.4
seg004:2469 call word ptr es:6
seg004:2469 ; ---------------------------------------------------------------------------
seg004:246E dw 3 ; TMR 3
seg004:2470 ; ---------------------------------------------------------------------------
seg004:2470 mov ds:80CBh, al ; WRT 203.0
seg004:2473 mov al, ds:0C1C6h ; RD 38.4
seg004:2476 and al, ds:0CBh ; AND.NOT 203.0
seg004:247A or al, ds:0F1C2h ; OR 34.7
seg004:247E or al, ds:91A1h ; OR 65.1
seg004:2482 mov ds:0F000h, al ; WRT 0.7
seg004:2485 mov al, ds:0F1A1h ; RD 65.7
seg004:2488 mov ds:0B001h, al ; WRT 1.3
seg004:248B mov al, ds:81A6h ; RD 70.0
seg004:248E and al, ds:0B1C1h ; AND 33.3
seg004:2492 and al, ds:21C1h ; AND.NOT 33.2
seg004:2496 shl ax, 1 ; Push STK
seg004:2498 mov al, ds:91A6h ; RD.STK 70.1
seg004:249B and al, ds:0A1C1h ; AND 33.2
seg004:249F and al, ds:31C1h ; AND.NOT 33.3
seg004:24A3 ror ah, 1 ; Pop STK
seg004:24A5 or al, ah ; OR.STK
seg004:24A7 call word ptr es:6
seg004:24A7 ; ---------------------------------------------------------------------------
seg004:24AC dw 4 ; TMR 4
seg004:24AE ; ---------------------------------------------------------------------------
seg004:24AE mov ds:90CBh, al ; WRT 203.1
seg004:24B1 or al, ds:81A6h ; OR 70.0
seg004:24B5 or al, ds:91A6h ; OR 70.1
seg004:24B9 and al, ds:10CBh ; AND.NOT 203.1
seg004:24BD and al, ds:0C1C6h ; AND 38.4
seg004:24C1 and al, ds:3258h ; AND.NOT 600.3
seg004:24C5 and al, ds:4258h ; AND.NOT 600.4
seg004:24C9 mov ds:0B066h, al ; WRT 102.3
seg004:24CC mov al, ds:0B1C0h ; RD 32.3
seg004:24CF call word ptr es:6
seg004:24CF ; ---------------------------------------------------------------------------
19
А.Геринг «Анатомия PLC-A,B ЧПУ FANUC 6T/M», Тольятти 2007г
seg004:24D4 dw 5 ; TMR 5
seg004:24D6 ; ---------------------------------------------------------------------------
seg004:24D6 mov ds:0A0CBh, al ; WRT 203.2
seg004:24D9 mov al, ds:0B066h ; RD 102.3
seg004:24DC and al, ds:81A6h ; AND 70.0
seg004:24E0 and al, ds:0A0CBh ; AND 203.2
seg004:24E4 and al, ds:6005h ; AND.NOT 5.6
seg004:24E8 mov ds:0D005h, al ; WRT 5.5
seg004:24EB mov al, ds:0B066h ; RD 102.3
seg004:24EE and al, ds:91A6h ; AND 70.1
seg004:24F2 and al, ds:0A0CBh ; AND 203.2
seg004:24F6 and al, ds:5005h ; AND.NOT 5.5
seg004:24FA mov ds:0E005h, al ; WRT 5.6
seg004:24FD mov al, ds:0D005h ; RD 5.5
seg004:2500 or al, ds:0E005h ; OR 5.6
seg004:2504 mov ds:0C005h, al ; WRT 5.4
seg004:2507 mov al, ds:0C002h ; RD 2.4
seg004:250A or al, ds:0D002h ; OR 2.5
seg004:250E and al, ds:0B066h ; AND 102.3
seg004:2512 or al, ds:0C258h ; OR 600.4
seg004:2516 and al, ds:71C2h ; AND.NOT 34.7
seg004:251A and al, ds:11A1h ; AND.NOT 65.1
seg004:251E call word ptr es:6
seg004:251E ; ---------------------------------------------------------------------------
seg004:2523 dw 6 ; TMR 6
seg004:2525 ; ---------------------------------------------------------------------------
seg004:2525 mov ds:0C258h, al ; WRT 600.4
seg004:2528 mov al, ds:0E069h ; RD 105.6
seg004:252B or al, ds:0C069h ; OR 105.4
seg004:252F or al, ds:0D069h ; OR 105.5
seg004:2533 or al, ds:0B069h ; OR 105.3
seg004:2537 and al, ds:0B0C8h ; AND 200.3
seg004:253B or al, ds:0B0CBh ; OR 203.3
seg004:253F and al, ds:40C8h ; AND.NOT 200.4
seg004:2543 and al, ds:50C8h ; AND.NOT 200.5
seg004:2547 and al, ds:11A1h ; AND.NOT 65.1
seg004:254B and al, ds:71C2h ; AND.NOT 34.7
seg004:254F and al, ds:0C1C6h ; AND 38.4
seg004:2553 and al, ds:50CBh ; AND.NOT 203.5
seg004:2557 mov ds:0B0CBh, al ; WRT 203.3
seg004:255A mov al, ds:0E069h ; RD 105.6
seg004:255D or al, ds:0C069h ; OR 105.4
seg004:2561 or al, ds:0D069h ; OR 105.5
seg004:2565 or al, ds:0B069h ; OR 105.3
seg004:2569 and al, ds:0C0C8h ; AND 200.4
seg004:256D or al, ds:0C0CBh ; OR 203.4
seg004:2571 and al, ds:30C8h ; AND.NOT 200.3
seg004:2575 and al, ds:50C8h ; AND.NOT 200.5
seg004:2579 and al, ds:11A1h ; AND.NOT 65.1
seg004:257D and al, ds:71C2h ; AND.NOT 34.7
seg004:2581 and al, ds:0C1C6h ; AND 38.4
seg004:2585 and al, ds:50CBh ; AND.NOT 203.5
seg004:2589 mov ds:0C0CBh, al ; WRT 203.4
seg004:258C mov al, ds:0B1C0h ; RD 32.3
seg004:258F or al, ds:706Ah ; OR.NOT 106.7
seg004:2593 shl ax, 1 ; Push STK
seg004:2595 mov al, ds:0B0CBh ; RD.STK 203.3
seg004:2598 or al, ds:0C0CBh ; OR 203.4
seg004:259C ror ah, 1 ; Pop STK
seg004:259E and al, ah ; AND.STK
seg004:25A0 mov ds:0A0CDh, al ; WRT 205.2
seg004:25A3 mov al, ds:0A0CDh ; RD 205.2
seg004:25A6 or al, ds:0A1C2h ; OR 34.2
seg004:25AA or al, ds:0D1A2h ; OR 66.5
seg004:25AE and al, ds:3066h ; AND.NOT 102.3
seg004:25B2 and al, ds:606Ah ; AND.NOT 106.6
seg004:25B6 call word ptr es:6
seg004:25B6 ; ---------------------------------------------------------------------------
seg004:25BB dw 0Ch ; TMR 12
seg004:25BD ; ---------------------------------------------------------------------------
seg004:25BD mov ds:0B0CDh, al ; WRT 205.3
seg004:25C0 mov al, ds:0A0CDh ; RD 205.2
seg004:25C3 or al, ds:0F0CCh ; OR 204.7
seg004:25C7 mov ds:0E0CBh, al ; WRT 203.6
seg004:25CA mov al, ds:0A1C2h ; RD 34.2
seg004:25CD or al, ds:0D1A2h ; OR 66.5
seg004:25D1 and al, ds:0B0CBh ; AND 203.3
seg004:25D5 or al, ds:91C7h ; OR 39.1
seg004:25D9 or al, ds:0B0C8h ; OR 200.3
20
А.Геринг «Анатомия PLC-A,B ЧПУ FANUC 6T/M», Тольятти 2007г
seg004:25DD or al, ds:0F1C5h ; OR 37.7
seg004:25E1 or al, ds:80CDh ; OR 205.0
seg004:25E5 and al, ds:1C7h ; AND.NOT 39.0
seg004:25E9 and al, ds:50C8h ; AND.NOT 200.5
seg004:25ED and al, ds:40C8h ; AND.NOT 200.4
seg004:25F1 and al, ds:11A1h ; AND.NOT 65.1
seg004:25F5 and al, ds:0C1C6h ; AND 38.4
seg004:25F9 and al, ds:50CBh ; AND.NOT 203.5
seg004:25FD and al, ds:3258h ; AND.NOT 600.3
seg004:2601 and al, ds:4258h ; AND.NOT 600.4
seg004:2605 and al, ds:5258h ; AND.NOT 600.5
seg004:2609 and al, ds:21C7h ; AND.NOT 39.2
seg004:260D and al, ds:10CAh ; AND.NOT 202.1
seg004:2611 mov ds:80CAh, al ; WRT 202.0
seg004:2614 mov al, ds:80CAh ; RD 202.0
seg004:2617 and al, ds:71C5h ; AND.NOT 37.7
seg004:261B mov ds:80CDh, al ; WRT 205.0
seg004:261E mov al, ds:0A1C2h ; RD 34.2
seg004:2621 or al, ds:0D1A2h ; OR 66.5
seg004:2625 and al, ds:0C0CBh ; AND 203.4
seg004:2629 or al, ds:0A1C7h ; OR 39.2
seg004:262D or al, ds:0C0C8h ; OR 200.4
seg004:2631 or al, ds:90CAh ; OR 202.1
seg004:2635 and al, ds:1C7h ; AND.NOT 39.0
seg004:2639 and al, ds:50C8h ; AND.NOT 200.5
seg004:263D and al, ds:30C8h ; AND.NOT 200.3
seg004:2641 and al, ds:11A1h ; AND.NOT 65.1
seg004:2645 and al, ds:71C5h ; AND.NOT 37.7
seg004:2649 and al, ds:0C1C6h ; AND 38.4
seg004:264D and al, ds:50CBh ; AND.NOT 203.5
seg004:2651 and al, ds:3258h ; AND.NOT 600.3
seg004:2655 and al, ds:4258h ; AND.NOT 600.4
seg004:2659 and al, ds:5258h ; AND.NOT 600.5
seg004:265D and al, ds:11C7h ; AND.NOT 39.1
seg004:2661 and al, ds:0CAh ; AND.NOT 202.0
seg004:2665 mov ds:90CAh, al ; WRT 202.1
seg004:2668 mov al, ds:80CAh ; RD 202.0
seg004:266B or al, ds:0B066h ; OR 102.3
seg004:266F and al, ds:1 ; AND.NOT 1.0
seg004:2673 mov ds:0C002h, al ; WRT 2.4
seg004:2676 mov al, ds:90CAh ; RD 202.1
seg004:2679 and al, ds:1 ; AND.NOT 1.0
seg004:267D mov ds:0D002h, al ; WRT 2.5
seg004:2680 mov al, ds:0C002h ; RD 2.4
seg004:2683 or al, ds:0D002h ; OR 2.5
seg004:2687 and al, ds:3066h ; AND.NOT 102.3
seg004:268B and al, ds:606Ah ; AND.NOT 106.6
seg004:268F mov ds:0F06Ah, al ; WRT 106.7
seg004:2692 mov al, ds:0C002h ; RD 2.4
seg004:2695 or al, ds:0D002h ; OR 2.5
seg004:2699 and al, ds:0F06Ah ; AND 106.7
seg004:269D and al, ds:31C0h ; AND.NOT 32.3
seg004:26A1 mov ds:0C065h, al ; WRT 101.4
seg004:26A4 mov al, ds:0F06Ah ; RD 106.7
seg004:26A7 and al, ds:4065h ; AND.NOT 101.4
seg004:26AB or al, ds:0D258h ; OR 600.5
seg004:26AF and al, ds:11A1h ; AND.NOT 65.1
seg004:26B3 and al, ds:71C2h ; AND.NOT 34.7
seg004:26B7 call word ptr es:6
seg004:26B7 ; ---------------------------------------------------------------------------
seg004:26BC dw 7 ; TMR 7
seg004:26BE ; ---------------------------------------------------------------------------
seg004:26BE mov ds:0D258h, al ; WRT 600.5
seg004:26C1 mov al, ds:0B0C8h ; RD 200.3
seg004:26C4 or al, ds:0C0C8h ; OR 200.4
seg004:26C8 and al, ds:31C0h ; AND.NOT 32.3
seg004:26CC shl ax, 1 ; Push STK
seg004:26CE mov al, ds:0D0C8h ; RD.STK 200.5
seg004:26D1 and al, ds:0B1C0h ; AND 32.3
seg004:26D5 ror ah, 1 ; Pop STK
seg004:26D7 or al, ah ; OR.STK
seg004:26D9 mov ds:0F0CBh, al ; WRT 203.7
seg004:26DC mov al, ds:0A1C0h ; RD 32.2
seg004:26DF and al, ds:0E1A5h ; AND 69.6
seg004:26E3 or al, ds:0F1A5h ; OR 69.7
seg004:26E7 and al, ds:81A2h ; AND 66.0
seg004:26EB and al, ds:0A065h ; AND 101.2
seg004:26EF shl ax, 1 ; Push STK
seg004:26F1 mov al, ds:0E1A5h ; RD.STK 69.6
21
А.Геринг «Анатомия PLC-A,B ЧПУ FANUC 6T/M», Тольятти 2007г
seg004:26F4 and al, ds:21C0h ; AND.NOT 32.2
seg004:26F8 ror ah, 1 ; Pop STK
seg004:26FA or al, ah ; OR.STK
seg004:26FC mov ds:80CCh, al ; WRT 204.0
seg004:26FF mov al, ds:0C258h ; RD 600.4
seg004:2702 mov ds:0C000h, al ; WRT 0.4
seg004:2705 mov al, ds:0D258h ; RD 600.5
seg004:2708 mov ds:0D000h, al ; WRT 0.5
seg004:270B mov al, ds:8258h ; RD 600.0
seg004:270E or al, ds:9258h ; OR 600.1
seg004:2712 or al, ds:0A258h ; OR 600.2
seg004:2716 or al, ds:0B258h ; OR 600.3
seg004:271A or al, ds:0C258h ; OR 600.4
seg004:271E or al, ds:0D258h ; OR 600.5
seg004:2722 and al, ds:20CCh ; AND.NOT 204.2
seg004:2726 call word ptr es:6
seg004:2726 ; ---------------------------------------------------------------------------
seg004:272B dw 8 ; TMR 8
seg004:272D ; ---------------------------------------------------------------------------
seg004:272D mov ds:90CCh, al ; WRT 204.1
seg004:2730 mov al, ds:90CCh ; RD 204.1
seg004:2733 call word ptr es:6
seg004:2733 ; ---------------------------------------------------------------------------
seg004:2738 dw 9 ; TMR 9
seg004:273A ; ---------------------------------------------------------------------------
seg004:273A mov ds:0A0CCh, al ; WRT 204.2
seg004:273D mov al, ds:90CCh ; RD 204.1
seg004:2740 and al, ds:20CCh ; AND.NOT 204.2
seg004:2744 mov ds:0D006h, al ; WRT 6.5
seg004:2747 mov al, ds:0C1C6h ; RD 38.4
seg004:274A and al, ds:0F1A1h ; AND 65.7
seg004:274E and al, ds:0E1A0h ; AND 64.6
seg004:2752 mov ds:0E060h, al ; WRT 96.6
seg004:2755 mov ds:0E061h, al ; WRT 97.6
seg004:2758 mov ds:0E062h, al ; WRT 98.6
seg004:275B mov al, ds:0E062h ; RD 98.6
seg004:275E call word ptr es:6
seg004:275E ; ---------------------------------------------------------------------------
seg004:2763 dw 0Bh ; TMR 11
seg004:2765 ; ---------------------------------------------------------------------------
seg004:2765 mov ds:0B002h, al ; WRT 2.3
seg004:2768 mov al, ds:8258h ; RD 600.0
seg004:276B or al, ds:9258h ; OR 600.1
seg004:276F or al, ds:0A258h ; OR 600.2
seg004:2773 or al, ds:0B258h ; OR 600.3
seg004:2777 or al, ds:0C258h ; OR 600.4
seg004:277B or al, ds:0D258h ; OR 600.5
seg004:277F mov ds:0B0CCh, al ; WRT 204.3
seg004:2782 mov al, ds:0E060h ; RD 96.6
seg004:2785 and al, ds:30CCh ; AND.NOT 204.3
seg004:2789 and al, ds:60CBh ; AND.NOT 203.6
seg004:278D mov ds:0C060h, al ; WRT 96.4
seg004:2790 mov al, ds:0E061h ; RD 97.6
seg004:2793 and al, ds:30CCh ; AND.NOT 204.3
seg004:2797 and al, ds:60CBh ; AND.NOT 203.6
seg004:279B mov ds:0C061h, al ; WRT 97.4
seg004:279E mov al, ds:0E062h ; RD 98.6
seg004:27A1 and al, ds:30CCh ; AND.NOT 204.3
seg004:27A5 and al, ds:60CBh ; AND.NOT 203.6
seg004:27A9 and al, ds:0B002h ; AND 2.3
seg004:27AD mov ds:0C062h, al ; WRT 98.4
seg004:27B0 mov al, ds:0A1C2h ; RD 34.2
seg004:27B3 or al, ds:0D1A2h ; OR 66.5
seg004:27B7 and al, ds:0B1C2h ; AND 34.3
seg004:27BB and al, ds:11A1h ; AND.NOT 65.1
seg004:27BF and al, ds:1A1h ; AND.NOT 65.0
seg004:27C3 and al, ds:0C1C6h ; AND 38.4
seg004:27C7 mov ds:0A065h, al ; WRT 101.2
seg004:27CA mov al, ds:0B1C2h ; RD 34.3
seg004:27CD and al, ds:11A1h ; AND.NOT 65.1
seg004:27D1 and al, ds:1A1h ; AND.NOT 65.0
seg004:27D5 and al, ds:0C1C6h ; AND 38.4
seg004:27D9 and al, ds:30CCh ; AND.NOT 204.3
seg004:27DD and al, ds:30CDh ; AND.NOT 205.3
seg004:27E1 mov ds:0D066h, al ; WRT 102.5
seg004:27E4 mov al, ds:61A5h ; RD.NOT 69.6
seg004:27E7 and al, ds:71A5h ; AND.NOT 69.7
seg004:27EB or al, ds:80CCh ; OR 204.0
seg004:27EF shl ax, 1 ; Push STK
22
А.Геринг «Анатомия PLC-A,B ЧПУ FANUC 6T/M», Тольятти 2007г
seg004:27F1 mov al, ds:30C8h ; RD.NOT.STK 200.3
seg004:27F4 and al, ds:40C8h ; AND.NOT 200.4
seg004:27F8 and al, ds:50C8h ; AND.NOT 200.5
seg004:27FC or al, ds:0F0CBh ; OR 203.7
seg004:2800 ror ah, 1 ; Pop STK
seg004:2802 and al, ah ; AND.STK
seg004:2804 shl ax, 1 ; Push STK
seg004:2806 mov al, ds:60C8h ; RD.NOT.STK 200.6
seg004:2809 and al, ds:70C8h ; AND.NOT 200.7
seg004:280D or al, ds:0C0C9h ; OR 201.4
seg004:2811 ror ah, 1 ; Pop STK
seg004:2813 and al, ah ; AND.STK
seg004:2815 shl ax, 1 ; Push STK
seg004:2817 mov al, ds:0C9h ; RD.NOT.STK 201.0
seg004:281A and al, ds:10C9h ; AND.NOT 201.1
seg004:281E and al, ds:20C9h ; AND.NOT 201.2
seg004:2822 or al, ds:0B0C9h ; OR 201.3
seg004:2826 ror ah, 1 ; Pop STK
seg004:2828 and al, ah ; AND.STK
seg004:282A mov ds:0C0CCh, al ; WRT 204.4
seg004:282D mov al, ds:81A2h ; RD 66.0
seg004:2830 or al, ds:0A1A2h ; OR 66.2
seg004:2834 or al, ds:0B1A2h ; OR 66.3
seg004:2838 shl ax, 1 ; Push STK
seg004:283A mov al, ds:1A2h ; RD.NOT.STK 66.0
seg004:283D or al, ds:0C0CCh ; OR 204.4
seg004:2841 ror ah, 1 ; Pop STK
seg004:2843 and al, ah ; AND.STK
seg004:2845 shl ax, 1 ; Push STK
seg004:2847 mov al, ds:21A2h ; RD.NOT.STK 66.2
seg004:284A or al, ds:3066h ; OR.NOT 102.3
seg004:284E ror ah, 1 ; Pop STK
seg004:2850 and al, ah ; AND.STK
seg004:2852 mov ds:0B065h, al ; WRT 101.3
seg004:2855 mov al, ds:0B1C5h ; RD 37.3
seg004:2858 or al, ds:0D1C5h ; OR 37.5
seg004:285C and al, ds:0C1C6h ; AND 38.4
seg004:2860 and al, ds:0CAh ; AND.NOT 202.0
seg004:2864 and al, ds:10CAh ; AND.NOT 202.1
seg004:2868 mov ds:0D0CCh, al ; WRT 204.5
seg004:286B mov ds:0F005h, al ; WRT 5.7
seg004:286E mov al, ds:0F005h ; RD 5.7
seg004:2871 call word ptr es:6
seg004:2871 ; ---------------------------------------------------------------------------
seg004:2876 dw 0Ah ; TMR 10
seg004:2878 ; ---------------------------------------------------------------------------
seg004:2878 mov ds:0E0CCh, al ; WRT 204.6
seg004:287B mov al, ds:0B1C5h ; RD 37.3
seg004:287E and al, ds:51C5h ; AND.NOT 37.5
seg004:2882 and al, ds:0E0CCh ; AND 204.6
seg004:2886 mov ds:0D001h, al ; WRT 1.5
seg004:2889 mov al, ds:0D1C5h ; RD 37.5
seg004:288C and al, ds:31C5h ; AND.NOT 37.3
seg004:2890 and al, ds:0E0CCh ; AND 204.6
seg004:2894 mov ds:0E001h, al ; WRT 1.6
seg004:2897 jmp far ptr EndSub2 ; END.2
seg004:2897 ; ---------------------------------------------------------------------------
seg004:289C db 1764h dup(0) ; Не занятая область пары ROM
seg004:6000 seg004 ends
end

23
А.Геринг «Анатомия PLC-A,B ЧПУ FANUC 6T/M», Тольятти 2007г