Каким образом, кроме прямой адресации, можно обратиться к регистрам "Last address" и "Last error" в модулях управления периферией? АТ нельзя поменять на глобальную переменную, а чем они отличаются от регистров данных?
Вид для печати
Каким образом, кроме прямой адресации, можно обратиться к регистрам "Last address" и "Last error" в модулях управления периферией? АТ нельзя поменять на глобальную переменную, а чем они отличаются от регистров данных?
Попробуйте назвать эти переменные и обращатся по имени.
Или взять указатель функцией ADR()
Как привязано обновление "Last address" и "Last error" к циклу ПЛК?
Возможна ли такая ситуация, когда Master за время одного цикла проведет опрос нескольких каналов, и значения "Last address" и "Last error" кроме последнего будут утеряны?
Поскольку сам обмен к циклу не привязан, то не привязаны и изменения этих переменных. В обычных условиях цикл ПЛК работает быстрее, чем производится запрос/ответ. Если только вы сами не подкрутили минимальное время цикла до, скажем, 10-15 мс.
Принципиально, описанная ситуация с опросом нескольких каналов за цикл возможна в случае больших программ или перенастроенного времени цикла.
Попробуйте назвать эти переменные и обращатся по имени.
Или взять указатель функцией ADR()
Откройте файл hardware.cfg в каталоге, куда установлен таргет
Найдите описание модуля [Module.MODBUS_MASTER_ID450]
В строке SymbolicNames=locked вместо locked напишите unlocked
Данке шон, теперь понятно!:)
Возможна ли прогнозируемая адресация через POINTER к элементам ModBus(Master) отталкиваясь, например, от адреса "Last address"? Просто хотелось бы как то унифицировать свои функциональные блоки для МДВВ, МВУ, МВА в зависимости от их количества и определенного порядка их подключения в ModBus(Master) и избавиться от глобальных имен, а пользоваться, например, массивами или структурами.
Если Вы расположите свои UMD соответствующим, "прогнозируемым" образом, то возможно. Однако при обновлении среды разработки не гарантируется, что расположение каналов памяти не сдвинется. Уже было такое.
Лучше:
а) в гл. переменных создайте массив структур, и проинициализируйте указатели через ADR()
б) поименуйте все переменные именем, содержащим адрес и номер регистра и обращайтесь к ним по имени через библиотеку SymLib.lib
Библиотека для доступа к значениям переменных в ПЛК по их имени
Диск какой версии? Выложите мыло, вышлем.
Диск 8 версии. Но, я думаю, что от версии диска это не зависит, т.к. когда-то я обнаружил появляющееся предупреждение при использовании ФБ Blink из Util 2006г. В результате общения в форуме мне прислали Util 2007г, однако на диске как были библиотеки старые так они и остались. Наклеить бирочку 6.08.zip на новый диск оказывается проще, чем поменять его содержание. А то народ перестанет ходить на форум!:(
Тогда мыло дайте, вышлю. На сайте выкладывать сам не могу, прав нет.
Пордон, забыл... :) stint_nag@bk.ru
ЗАвтра вышлю
Выяснил, что на новом проекте все Ok'. А вот там, где я менял конфигурацию контроллера со 150 на 100 разлочка не помогает. Что делать?
Надо создать модуль заново.
Спасибо за ответ, уже перебил всю конфигурацию, а можно было только модуль.... не подумал!:)