Страница 191 из 250

Re: EasyBuilder - Скорая помощь новичкам

СообщениеДобавлено: 19 май 2022, 15:34
8bit
rv9can писал(а):Добрый день, может кто подскажет готовый код перевода из DEC в Hex, никак не могу сделать

вам для каких целей ?

Re: EasyBuilder - Скорая помощь новичкам

СообщениеДобавлено: 19 май 2022, 16:04
rv9can
Вводи на панели число в десятичном формате, например 2300, на выходе хочу иметь массив из двух элементов, 0x08 и 0хFC, а дальше хочу отправлять через free protocol

Re: EasyBuilder - Скорая помощь новичкам

СообщениеДобавлено: 19 май 2022, 16:33
8bit
rv9can писал(а):на выходе хочу иметь массив из двух элементов, 0x08 и 0хFC, а дальше хочу отправлять через free protocol

полагаете free protocol различает десятичное представление числа и шестнадцетиричное ?

Re: EasyBuilder - Скорая помощь новичкам

СообщениеДобавлено: 19 май 2022, 16:34
rv9can
8bit писал(а):
rv9can писал(а):на выходе хочу иметь массив из двух элементов, 0x08 и 0хFC, а дальше хочу отправлять через free protocol

полагаете free protocol различает десятичное представление числа и шестнадцетиричное ?

В любом случае, мне нужно как-то отправлять данные, пробовал напрямую отправить, получал только FC, если можно без перевода буду только рад

Что написать за место data?

Код: Выделить всё
sub  write_device(short address_in, short func_code, short address_station, short data, short value_data )      // Подфункция для записи
   FILL(command[0], 0, 32)
   command[0] = address_station
   command[1] = func_code
   address = address_in
   HIBYTE(0x00, command[2])
   LOBYTE(address, command[3])
   command[4] = data
   command[5] = data
   CRC(command[0], checksum, 6)
   LOBYTE(checksum, command[6])
   HIBYTE(checksum, command[7])
   OUTPORT(command[0], "Modbus RTU device", 8)   
end sub

Re: EasyBuilder - Скорая помощь новичкам

СообщениеДобавлено: 19 май 2022, 16:41
8bit
rv9can писал(а):
8bit писал(а):
rv9can писал(а):на выходе хочу иметь массив из двух элементов, 0x08 и 0хFC, а дальше хочу отправлять через free protocol

полагаете free protocol различает десятичное представление числа и шестнадцетиричное ?

В любом случае, мне нужно как-то отправлять данные, пробовал напрямую отправить, получал только FC, если можно без перевода буду только рад


посмотрите в документации про функцию INPORT - там в примере Modbus реализован

Re: EasyBuilder - Скорая помощь новичкам

СообщениеДобавлено: 19 май 2022, 16:47
rv9can
посмотрите в документации про функцию INPORT - там в примере Modbus реализован[/quote]

Только там реализация с данными которые вписаны в функцию, а мне нужно чтоб, например, если я хочу отправить 2300, первый бит данных был 0х08, а второй 0хFC, и если пользовать введет другое число оно так же переводилось в 16ную сс и делилось на два бита для отправки

Re: EasyBuilder - Скорая помощь новичкам

СообщениеДобавлено: 19 май 2022, 16:50
8bit
rv9can писал(а):Только там реализация с данными которые вписаны в функцию, а мне нужно чтоб, например, если я хочу отправить 2300, первый бит данных был 0х08, а второй 0хFC, и если пользовать введет другое число оно так же переводилось в 16ную сс и делилось на два бита для отправки


смотрите функции SWAPW , LOBYTE , HIBYTE, LOWORD, HIWORD

Re: EasyBuilder - Скорая помощь новичкам

СообщениеДобавлено: 19 май 2022, 16:59
rv9can
8bit писал(а):
rv9can писал(а):Только там реализация с данными которые вписаны в функцию, а мне нужно чтоб, например, если я хочу отправить 2300, первый бит данных был 0х08, а второй 0хFC, и если пользовать введет другое число оно так же переводилось в 16ную сс и делилось на два бита для отправки


смотрите функции SWAPW , LOBYTE , HIBYTE, LOWORD, HIWORD


Спасибо за наводку, за минуту до этого ответа допер)

Re: EasyBuilder - Скорая помощь новичкам

СообщениеДобавлено: 19 май 2022, 17:16
dimensy
удалено

Re: EasyBuilder - Скорая помощь новичкам

СообщениеДобавлено: 23 май 2022, 08:59
rv9can
Добрый день, пытаюсь прочитать данные с устройства с помощью free protocol, и не могу понять как мне сделать один регистр данных, а не массивом как в мануале,
Код: Выделить всё
sub short read_device(short address_in, short func_code, short address_station, short data)                  // Подфункция для опроса
   FILL(command[0], 0, 32)
   FILL(response[0], 0, 32)
   command[0] = address_station
   command[1] = func_code
   address = address_in
   HIBYTE(0x00, command[2])
   LOBYTE(address, command[3])
   read_no = 1
   HIBYTE(0x00, command[4])
   LOBYTE(read_no, command[5])
   CRC(command[0], checksum, 6)
   LOBYTE(checksum, command[6])
   HIBYTE(checksum, command[7])
   OUTPORT(command[0], "Modbus RTU device", 8)
   INPORT(response[0], "Modbus RTU device", 9, return_value)
   if(return_value > 0) then
      read_data[0] = response[4] + (response[3] << 8)
      read_data[1] = response[6] + (response[5] << 8)
   end if
   return read_data[0], read_data[1], data
end sub

Как объединить read_data[0] и read_data[1] в один регистр?


!! Используйте кнопку [Code] над окно ввода сообщения для подсветки синтаксиса макроса. Admin