1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

weintek - макрос

Модератор: специалисты Weintek

Ответить

Автор темы
Booker
здесь недавно
здесь недавно
Сообщения: 30
Зарегистрирован: 02 июл 2014, 15:49
Имя: Надыров Булат Наилович
Забанен: Бессрочно

weintek - макрос

Сообщение Booker »

Еще раз добрый день! Повторюсь в этом деле я нуб, впервые с панелями работаю.

есть макрос

Код: Выделить всё

macro_command main()
	int a
	GetData(a, "Local HMI", LW, 3, 1)

OUTPORT(a, "MODBUS RTU Device", 1)
end macro_command
В LW 3 вводится число с панели, которое потом отсылается по com-порту в плк.
Если я ничего не ввожу, то в ПЛК приходит "FF FF FF 00"
Аналогично если ввожу "0", то в ПЛК приходит "FF FF FF 00"
Если ввожу "1", то в ПЛК приходит "7F FF FF FF 00"
"2" - "3F FF FF 00"

немного переделываю макрос

Код: Выделить всё

macro_command main()
	int a
	GetData(a, "Local HMI", LW, 3, 1)

	char command[32]
	command[0] = a
	OUTPORT(command[0], "MODBUS RTU Device", 1)
end macro_command
Если я ничего не ввожу, то в ПЛК приходит "00"
"0" - "00"
"1" - "7F 00"
"2" - "3F 00"

Но в любом случае это не совсем то, что мне нужно, так как мне нужно чтоб приходило вводимое число, только в hex, а 1 в hex явно не 7F 00. В документации были пару методов для конвертирования, что-то типа DEC2ASCII - но желаемого результата это не дало. Что я делаю не так или не доделываю??
Аватара пользователя

FAM-Electric
специалист по WEINTEK
специалист по WEINTEK
Сообщения: 75
Зарегистрирован: 04 фев 2014, 15:44
Имя: Каримов Артем
Страна: Россия
город/регион: Санкт-Петербург

Re: weintek - макрос

Сообщение FAM-Electric »

Почему "MODBUS RTU Device", а не "Free protocol"?
и можно параметры ком-порта перепроверить
Информация взята с сайта компании "ФАМ-Электрик" - официального дистрибьютора Weintek в России http://www.rusavtomatika.com

Автор темы
Booker
здесь недавно
здесь недавно
Сообщения: 30
Зарегистрирован: 02 июл 2014, 15:49
Имя: Надыров Булат Наилович
Забанен: Бессрочно

Re: weintek - макрос

Сообщение Booker »

FAM-Electric писал(а):Почему "MODBUS RTU Device", а не "Free protocol"?
Имя - "MODBUS RTU Device"
Тип устройства - "Free protocol"

Я думаю какое имя не принципиально?? Или принципиально??
FAM-Electric писал(а): и можно параметры ком-порта перепроверить
Что именно перепроверить??
Аватара пользователя

skr
специалист по WEINTEK
специалист по WEINTEK
Сообщения: 208
Зарегистрирован: 22 мар 2013, 11:52
Имя: Денис Порфирьев
город/регион: Санкт-Петербург
Поблагодарили: 6 раз

Re: weintek - макрос

Сообщение skr »

Booker писал(а):
FAM-Electric писал(а):Почему "MODBUS RTU Device", а не "Free protocol"?
Имя - "MODBUS RTU Device"
Тип устройства - "Free protocol"

Я думаю какое имя не принципиально?? Или принципиально??
Если имя не менялось вручную, обычно оно автоматически меняется при смене протокола. В данном случае действительно не принципиально, макрос не скомпилируется с неправильным протоколом.
Booker писал(а):
FAM-Electric писал(а): и можно параметры ком-порта перепроверить
Что именно перепроверить??
Все параметры: скорость, число битов данных и стоповых битов, чётность.

Автор темы
Booker
здесь недавно
здесь недавно
Сообщения: 30
Зарегистрирован: 02 июл 2014, 15:49
Имя: Надыров Булат Наилович
Забанен: Бессрочно

Re: weintek - макрос

Сообщение Booker »

skr писал(а):Если имя не менялось вручную, обычно оно автоматически меняется при смене протокола. В данном случае действительно не принципиально, макрос не скомпилируется с неправильным протоколом.
Имя не менялось, макрос компилируется, согласен, что с неправильным протоколом не скомпилируется, уже натыкался на эти грабли
skr писал(а):Все параметры: скорость, число битов данных и стоповых битов, чётность.
Ок. Вот сейчас вернулся к примеру из документации.

В документации написано:
Для использования функции OUTPORT, в начале должно быть добавлено устройство типа "Free Protocol".
Устройство с именем "MODBUS RTU Device". Атрибуты порта зависят от настроек устройства (текущие установки: "19200,E,8,1").
Ниже приведен пример выполнения записи в ПЛК (установления бита в ON) - устройство MODBUS.

macro_command main()
char command[32]
short address, checksum
FILL(command[0],0,32)
command[0] = 0x1
command[1] = 0x5
address = 0
HIBYTE(address, command[2])
LOBYTE(address, command[3])
command[4] = 0xff
command[5] = 0
CRC(command[0], checksum, 6)
LOBYTE(checksum, command[6])
HIBYTE(checksum, command[7])
OUTPORT(command[0], "MODBUS RTU Device", 8)
end macro_command
com-порт в плк, на компьютере, и в программе для чтения данных из ком-порта - все настроено так как в примере "19200,E,8,1"
При исполнении данного макроса в программе получаю "7F FD FF 01 FF E7 16 00".
но "7F" никак не соответствует передаваемому "command[0] = 0x1"
как "FD" тоже не соответствует передаваемому "command[1] = 0x5"

Или я чего-то не допонимаю/делаю не так??

P.S. программу для чтения данных из ком-порта использую wTerm. Самописная программа(не мной), может косяк в ней??
Аватара пользователя

skr
специалист по WEINTEK
специалист по WEINTEK
Сообщения: 208
Зарегистрирован: 22 мар 2013, 11:52
Имя: Денис Порфирьев
город/регион: Санкт-Петербург
Поблагодарили: 6 раз

Re: weintek - макрос

Сообщение skr »

Скорей всего дело в параметрах порта в программе. Попробуйте отключить всё, что связано с управлением потоком (flow control).
А как у вас устройства подключены друг к другу?

Автор темы
Booker
здесь недавно
здесь недавно
Сообщения: 30
Зарегистрирован: 02 июл 2014, 15:49
Имя: Надыров Булат Наилович
Забанен: Бессрочно

Re: weintek - макрос

Сообщение Booker »

skr писал(а):Скорей всего дело в параметрах порта в программе. Попробуйте отключить всё, что связано с управлением потоком (flow control).
накидал маленький консольный скрипт на perl для прослушивания ком-порта, приходит в принципе тоже самое что в программе

отправляю восемь "1"

получаю
⌂⌂⌂⌂⌂⌂⌂⌂
7f7f7f7f7f7f7f7f
skr писал(а):А как у вас устройства подключены друг к другу?
шнуром, RS-485 2W или вы что-то другое спрашивали??
Аватара пользователя

MuadDib
частый гость
частый гость
Сообщения: 462
Зарегистрирован: 31 июл 2010, 09:12
Имя: Павел
Страна: РФ
Благодарил (а): 8 раз
Поблагодарили: 13 раз

Re: weintek - макрос

Сообщение MuadDib »

У вас полярность проводов RS-485 случаем не перепутана? Попробуйте поменять "+" и "-" на одном из портов и посмотрите, что изменится.

Автор темы
Booker
здесь недавно
здесь недавно
Сообщения: 30
Зарегистрирован: 02 июл 2014, 15:49
Имя: Надыров Булат Наилович
Забанен: Бессрочно

Re: weintek - макрос

Сообщение Booker »

MuadDib писал(а):У вас полярность проводов RS-485 случаем не перепутана? Попробуйте поменять "+" и "-" на одном из портов и посмотрите, что изменится.
Прошу прощения... но где и как поменять "+" и "-"??
Аватара пользователя

skr
специалист по WEINTEK
специалист по WEINTEK
Сообщения: 208
Зарегистрирован: 22 мар 2013, 11:52
Имя: Денис Порфирьев
город/регион: Санкт-Петербург
Поблагодарили: 6 раз

Re: weintek - макрос

Сообщение skr »

Booker писал(а):
skr писал(а):А как у вас устройства подключены друг к другу?
шнуром, RS-485 2W или вы что-то другое спрашивали??
И это, но ещё интересно, правильно ли подключен компьютер к панели.
Booker писал(а):
MuadDib писал(а):У вас полярность проводов RS-485 случаем не перепутана? Попробуйте поменять "+" и "-" на одном из портов и посмотрите, что изменится.
Прошу прощения... но где и как поменять "+" и "-"??
2 провода RS485 - они и есть плюс и минус. А ещё, как выяснили где-то на этом форуме, в продукции разных производителей обозначения A/B могут иметь противоположные значения.

Автор темы
Booker
здесь недавно
здесь недавно
Сообщения: 30
Зарегистрирован: 02 июл 2014, 15:49
Имя: Надыров Булат Наилович
Забанен: Бессрочно

Re: weintek - макрос

Сообщение Booker »

skr писал(а):
Booker писал(а):
skr писал(а):А как у вас устройства подключены друг к другу?
шнуром, RS-485 2W или вы что-то другое спрашивали??
И это, но ещё интересно, правильно ли подключен компьютер к панели.
Booker писал(а):
MuadDib писал(а):У вас полярность проводов RS-485 случаем не перепутана? Попробуйте поменять "+" и "-" на одном из портов и посмотрите, что изменится.
Прошу прощения... но где и как поменять "+" и "-"??
2 провода RS485 - они и есть плюс и минус. А ещё, как выяснили где-то на этом форуме, в продукции разных производителей обозначения A/B могут иметь противоположные значения.
Уж не знаю, насколько я правильно подключил, но по-другому подключить и не получиться(только если использовать какие-то переходники). На компьютере свободен только один ком-порт, от него и пляшу. Но могу в этом вопросе ошибаться.

И еще такой момент. Отступив от настроек порта указанных в документации пробовал менять скорость паритет, и т.п. Данные приходящие на ком-порт порта меняются. Возможно, имеет значение какую именно скорость задавать, количество стоповых бит, паритет?? Просто перебирать все возможные варианты желания нет??
Аватара пользователя

MuadDib
частый гость
частый гость
Сообщения: 462
Зарегистрирован: 31 июл 2010, 09:12
Имя: Павел
Страна: РФ
Благодарил (а): 8 раз
Поблагодарили: 13 раз

Re: weintek - макрос

Сообщение MuadDib »

Booker писал(а): Уж не знаю, насколько я правильно подключил, но по-другому подключить и не получиться(только если использовать какие-то переходники). На компьютере свободен только один ком-порт, от него и пляшу. Но могу в этом вопросе ошибаться.
Выше вы написали, что у вас используется RS485-2W. Вы что, подключили RS485 к обычному встроенному последовательному порту компьютера (RS-232)? Или у вас на компе есть встроенный адаптер 485го? Схему подключения в студию!
Booker писал(а): И еще такой момент. Отступив от настроек порта указанных в документации пробовал менять скорость паритет, и т.п. Данные приходящие на ком-порт порта меняются. Возможно, имеет значение какую именно скорость задавать, количество стоповых бит, паритет?? Просто перебирать все возможные варианты желания нет??
Все настройки портов на панели и на компьютере должны быть абсолютно одинаковые.

Chenchukov
здесь недавно
здесь недавно
Сообщения: 87
Зарегистрирован: 19 май 2014, 08:48
Имя: Егор Дмитриевич Ченчуков
Страна: Россия

Re: weintek - макрос

Сообщение Chenchukov »

Booker писал(а): Уж не знаю, насколько я правильно подключил, но по-другому подключить и не получиться(только если использовать какие-то переходники). На компьютере свободен только один ком-порт, от него и пляшу. Но могу в этом вопросе ошибаться.
И еще такой момент. Отступив от настроек порта указанных в документации пробовал менять скорость паритет, и т.п. Данные приходящие на ком-порт порта меняются. Возможно, имеет значение какую именно скорость задавать, количество стоповых бит, паритет?? Просто перебирать все возможные варианты желания нет??
подключите два порта с панели друг к другу

RS485 A1=A2, B1=B2
или
RS232 RX1=TX2, RX2=TX1 и проверьте на них замкнутую петлю прием-передача
Ответить

Вернуться в «WEINTEK (операторские панели)»