Помогите. Нужен пример конфигураци CoDeSys для опроса измеренной величины и уставки ТРМ202 контролером ПЛК100-Р-L по протоколу Modbus RTU. Проблема в том, что значения отрицательные, и необходимо выводить информоцию с десятичное точкой.
Помогите. Нужен пример конфигураци CoDeSys для опроса измеренной величины и уставки ТРМ202 контролером ПЛК100-Р-L по протоколу Modbus RTU. Проблема в том, что значения отрицательные, и необходимо выводить информоцию с десятичное точкой.
коллеги отзовитесь, вопрос очень срочный!!!!!
прочитайте примеры на диске и этом сайте.
Если нет времени составлять конфигурацию, приведите хоть параметры PLC Configuretion, и кусок программы, для отображения отрицательных параметров с десятичной точкой
Господа согласен с вопросом!
Суть при попытке чтения данных с ТРМ202 в ПЛК в следующем:
Чтение\запись параметров приборов ТРМ202 (и прочих с новой линейки) предусматривается либо в формате Float (по протоколу ОВЕН, либо в формате Signed Integer16 по протоколу Modbus). Так вот по протоколу ОВЕН все проходит чинно и гладко без нюансов, а вот по протоколу MODBUS есть проблемы.
При опросе параметров измеренной величины по каналам прибора по протоколу Modbus мы должны прочитать переменную с прибора в формате Signed Integer16, сделать это напрямую через OPC достаточно просто, но при чтении их например в ПЛК100 возникает проблема, а именно: При подключении таргет-файла ПЛК100 в Codesys мы можем в PLC Configuration использовать посути только модуль Universal Modbus Module в котором можем посути выбрать только переменные области ввода-вывода либо в формате 8бит, WORD, Dword либо REAL,т.е. получается доступно чтение только переменной 8 или 32 бита. А как уже сказали нам нужно прочитать из прибора переменную типа Signed Integer16. Всё хорошо конечно когда переменная положительного значения -можно прочитать её значение целочисленное и в случае необходимости данных с запятой произвести деление на 10 (в нужной степени) но когда появляется необходимость чтения "минусового значения" и происходит сдвиг данных то уже явного значения пользователь в Codesys не видит и ему нужно пребразовывать данные в программе из типа word в тип integer.
Так вот вопрос:
почему нет возможности в ПЛК Конфигурации выбрать в явном виде чтение 2 байтовой переменной (small integer) чтобы не делать дополнительных преобразований типов данных и возведений их в степени 10 (-n)?
"в Codesys не видит и ему нужно пребразовывать данные в программе из типа word в тип integer." -формат ModBus не может передавать числа со знаком (как и с плавающей точкой). О сути параметра знает только его пользователь и то,что это число на самом деле со знаком и фиксированной точкой - становится известно только в момент написания программы. т.е. это функция программиста ПЛК.
Если добавить в мастер все возможные на свете типы данных, то это только усложнит его изучение и увеличит число возможных ошибок из-за непонимания, т.к., к сожалению, документацию у нас читают только в день сдачи проекта на объекте, когда осталось 5 минут до прихода заказчика а ничего не работает.
Если человек не может сделать простейших преобразований - доверять ему программирование сложных технологических процессов просто недопустимо.
Никто и не требует наверное по Modbus значения с десятичной точкой. Это все понимают и так, и преобразование сделать тоже несложно по типам данных, здесь нет вопросов. Хотя видимо все привыкли работать с OPC серверами и софтом для ПЛК других производителей где нет вопросов с типами данных.
Я так понимаю пользователям создает неудобство именно отсутствие возможности передачи 2 байтовой переменной как таковой по Modbus и отображения её в Конфигураторе ПЛК в явном виде, все привыкли сперва настраивать область ввода-вывода с проверкой качественности данных, а уже затем использовать эти данные для программирования (как в ОРС). Просто удобно иногда сразу смотреть и оценивать параметры по ветке данных.
Прошу прощения за всех ,если вернутся к нашим ПЛК, от философских вопросов если есть переменная в области конфигурации типа word по адресу %iW10.20 Для отображения ее в знаковое создайте в области глобальных переменных что то вроде value_t AT %IW10.20 :INT; (* В Кодесис INT и есть -32768 ...32767*).