Хочу поделится своим опытом (пока не очень большим) разработки программы для указанного контроллера в комплекте с модулем последовательного порта 750-650/003-000, и возникавшими в процессе чудесми.
Начать с того что что адреса четырех входных и четырех выходных байтов модуля подключенного к контроллеру не только не начинаются с %QB0 и %IB2 как указанно в конфигураторе, но и расположены не по порядку. Например для тогоже модуля но в контроллере 750-819 контрольный байт и три байта выходных данных расположены по адресам %QB0-%QB3, а в контроллере 750-816 они раскиданы следующим образом
controlByte AT %QB2 outputByte0 AT %QB3 outputByte1 AT %QB6 outputByte2 AT %QB7
тоже самое и со адресами входных байтов. Но это еще не все. Я стал работать непосредственно с битами controlByte объявив соответствующую переменную, например
trControlFlag AT %QX2.0: BOOL;
и сталкнулся с тем что изменения битов не приводят к соответствующим изменениям в controlByte. тоесть:
controlByte := 16#00; trControlFlag := true;
после этого controlByte по прежнему равен 16#00. Долго играясь с памятью я обнаружил что trControlFlag нужно указать на другой адрес а именно:
в связи с этим у меня естественно возникающий вопрос "ПОЧЕМУ??!!!!!" Может кто нибудь просвятить меня на этот счет? Программу на данный момент почти закончил. Однако как в анекдоте "неприятный осадок остался".
И еще один вопрос. Может буду я не очень точен в терминологии. Цикл работы контроллера построен так что сначала работает ОС потом работает один цикл программы потом снова ОС. Если я в программе изменил значение какого либо адреса например дискретного выхода (то есть изменил состояние бита отвечающего за этот выход) то сам дискретный выход примет соответствующее этому биту состояние только после выхода из программы и то может быт даже не в текущем цикле а в следующем или через два. В связи с этим вопрос, есть ли какие либо методы которые обеспечивают фактическое изменение состояния модулей при изменении соответствующих им переменных не выходя из программы? Или необходимо отлавливать эти изменения при выполнении следующих циклов программы по любому?
Добрый день
К сожалению однозначно ответить Вам на вопрос по адресам нельзя, т.к. недостаточно информации. Состав контроллера может быть важен. Например, если у вас установлены
750-819
750-454 - 2ai
750-650 RS232
750-600
то адреса будут соответственно,
750-454
_ _ _ AT %IW0: WORD;
_ _ _ AT %IW1: WORD;
750-650
_ _ _ AT %IW2: WORD;
_ _ _ AT %IW3: WORD;
_ _ _ AT %QW0: WORD;
_ _ _ AT %QW1: WORD;
Если поменять местами
750-650
_ _ _ AT %IW0: WORD;
_ _ _ AT %IW1: WORD;
_ _ _ AT %QW0: WORD;
_ _ _ AT %QW1: WORD;
750-454
_ _ _ AT %IW2: WORD;
_ _ _ AT %IW3: WORD;
Вышлите мне по почте точный состав контроллера
zai@spb.prosoft.ru
Приношу извинения за возможную задержку - выставка на следующей неделе, могу тормозить
Комплектация простая
750-816
750-650/003-000
750-600.
все
Dr. kiran !
Не могу безучастно созерцать этот вандализм.
Mikle спросил у Вас не состав, а последовательность!
Поймите разницу и проблемы исчезнут.
Vladimir Voronenkov
"Первая Миля", Authorized ICONICS Systems Integrator
Уважаемый Voronenkov.
Не вижу никакого вандализма, и если Вы не в курсе системы WAGO I/O то объясняю что модуль 750-816 - это контроллер, 750-650/003-000 - RS-232 порт, 750-600 - оконечный модуль. Так что даже если бы я перечислил их в другом порядке собрать их можно только в одном единственном. А если Вы придираетесь к словам то это уже другой вопрос.
все точно в соответствии с документацией - у ВАГО адресное пространство модулей ввода-вывода не зависит от типа контроллера
Вы имеете под модуль 7 бит управления (qx0.0 - qx0.6) и 7 бит статуса (ix0.0 - ix0.6) и по три байта для input и output, соответственно (%ib1(%qb1) - %ib3(%qb3))
Это я в курсе, и про статус с управлением и про три байта данных. У меня программа работает. Меня интересует ответ на вопрос почему такая нестыковка адресов в 750-816
controlByte AT %QB: BYTE trControlFlag AT %QX1.0: BOOL
Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме