PDA

Просмотр полной версии : Связь ПЛК100 и цифрового табло



Viktor40
22.09.2015, 06:46
Здравствуйте.
Имеется ПЛК 100 Р-М. Поставлена задача организовать передачу данных с этого ПЛК на промышленное цифровое табло из 9 сегментов отечественного производства компании Siliconlight. С этой задачей ранее ни когда не сталкивался. Из сопроводительных документов производитель табло предоставил только описание протокола обмена (см.ниже).

Протокол обмена
Пакет начинается с служебного символа 0х10.Затем идёт код адреса 0х01.Затем идут девять байта с кодами цифр на табло. Табло воспринимает коды цифр от 0х00 до 0х09, код пробела (0х0F) и код минуса (0х0Е).Чтобы зажечь в разряде точку необходимо установить старший бит в коде этого разряда. Например,если надо вывести 1- отправляем 0х01, если надо вывести 1 с точкой- отправляем 0х01\ 0х80= 0х81.Затем идёт байт контрольной суммы. Контрольная сумма – это операция XOR между адресом, кодом цифр и числом 0х55.Заканчивается пакет последовательностью служебных символов 0х10 и 0хFE. Например, чтобы зажечь на табло 123 456 789, необходимо отправить пакет 0х10 0х01 0х01 0х02 0х03 0х04 0х05 0х06 0х07 0х08 0х09 0х55 0х10 0хFE. Скорость порта 9600, 1 стоп бит, проверки чётности нет.

У табло имеется интерфейс RS485 подключенный к адаптеру RS485-USB. Я отсоединил адаптер и присоединил RS485 табло к порту RS485 (B-A) контроллера. В конфигурацию ПЛК добавил модуль ModBus(Master) и настроил в нем интерфейс RS485 :скорость 9600, стоп бит, проверки четности нет, RTU. В ModBus(Master) добавил модуль Universal Modbus device, где добавил 14 переменных типа 8 bit output module по числу байтов в пакете обмена (см.выше). В параметрах модуля Universal Modbus device назначил адрес слейв модулю 1 (согласно кода адреса указанного в протоколе обмена производителем табло). Непонятно только какие адреса назначить регистрам 8 bit output module переменных.
Вопрос. Верны ли мою действия по аппаратному конфигурированию в данном случае или это в корне не правильно? Если нет, с чего начать в данном случае?

Yegor
22.09.2015, 07:03
Нет, в корне неправильно. Описанный протокол — это не модбас. Средствами конфигуратора здесь не обойтись. Нужно добавлять в проект библиотеку SysLibCom и через её функции отправлять последовательности байтов как описано в порт.