Буду пятым!
Буду пятым!
Алексей, присоединяюсь к пожеланию из поста №118. Проблемы со связью продолжаются, происходит аналогично как в посте №54. Связка СПК207+16ДН+16Р+4ТД. При потере связи 16ДН устанавливает переменные в ZERO (необходимо для безопасности), соответственно оборудование останавливается. При увеличении времени цикла PLC_PRG, модули "отваливаются" реже, но для данного оборудования очень критична частота опроса модулей, соответственно обратная реакция на исполнительные механизмы, поэтому увеличивать время цикла не вариант. Уже не знаю даже где что попробовать изменить, чтобы работало как надо, не пойму где "засада".
Добрый вечер! Насколько я понял "авто перезапуск соединения" перезагружает modbus master. Вопрос в том надо ли перезагружать Slave или нет. Дело в том, что мне посоветовали сделать перезагрузку Slave, но как это сделать я до конца так и не разобрался. В библиотеке нашел ModbusSerialSlaveBase но что подавать на входы-выходы не понял. И еще вопрос. Как присвоить переменную к каналу модуля, например к mv110_32dn.rInput1? Сколько ни пробовал кодесис выдает ошибку! Заранее благодарен за помощь!
Добрый вечер.
Установка галочки "Авто перезапуск соединения" - все, что нужно для восстановления связи с модулем в случае сбоя.
Больше ничего в программной части трогать не нужно.
Название канала rInput означает, что канал входной.
Т.е. это состояние входа. Чего вы хотите добиться, присвоив ему какое-либо значение?
Последний раз редактировалось Осинский Алексей; 15.09.2015 в 08:21.
Когда использовал шаблоны присваивал каналу имя, например Start, Stop, SB, LE и так далее. У меня 5 модулей в проекте + 3 частотника, 1 ПР114 и 5 СМИ, в общем много каналов которые я в свое время "обозвал" понятными обозначениями. При написании программы ориентироваться на rInput и иже с ними не удобно. Пробовал SA1: BOOL:=mv110_32dn.rInput1; не помогает.
Программа на CFC. А проще никак ко входу переменную присвоить нельзя? Простите может я не явно обозначил проблему? Задача поменять mv110_32dn.rInputХ на прописанные у меня в схемах названия. При написании и проверке программы для меня эти обозначения более понятны, чем mv110_32dn.rInputХ.
Я понял Вашу задачу. Вариант, предложенный мной - наиболее простой.
Либо Вы можете в каждом цикле присваивать переменной SA1 значение mv110_32dn.rInput1, а дальше обрабатывать значение SA1.
Что по-моему слишком сложно и затратно.
Может быть Вы не совсем поняли предложенный мной вариант?
Вы в теле своей программы можете работать со значением переменной по указателю (SA1^) как с любой другой переменной типа BOOL.
В таком случае не придется в каждом цикле присваивать переменной SA1 значение mv110_32dn.rInput1.
Изменить же, вручную, название выходов модуля Вы не сможете.
Последний раз редактировалось Осинский Алексей; 15.09.2015 в 10:57.
Значит я вас не понял. То есть строчкой SA1: POINTER TO BOOL := ADR(mv110_32dn.rInput1); присваиваю SA1 ко входу 1. А как обращаться в теле программы ко входу 1 - SA1?