теперь уже не важно написано где-то или нет) что мне с этим делать? придется самому побитово пересобирать REAL из LREAL и обратно?
теперь уже не важно написано где-то или нет) что мне с этим делать? придется самому побитово пересобирать REAL из LREAL и обратно?
в справке имеется замечание по поводу работы длинного реала
А как поступить, можно воспользоваться поиском, у Вас не первого же встречается такая проблема
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран
Нашел вот это. Библиотеку в КДС3 подключить не смог. А код товарища vitiali по моему не совсем верен.
в частности мне не совсем понятно это условие:
Написал свои функции для преобразования LREAL в REAL:Код:IF mant>0 THEN (*чтобы при нулевой мантисе не вылизло какое-нибудь число*) expon:=expon-1023; expon:=expon+127; (*если мантиса больше 0 экспон. приймет значения *) END_IF
и обратно:Код:FUNCTION LREAL2REAL : REAL VAR_INPUT IN: LWORD; END_VAR VAR lwMant: LWORD; lwExpon: LWORD; lwSign: LWORD; lwREAL: LWORD; pREAL: POINTER TO REAL; END_VAR lwMant:=SHR(IN,29) AND 16#7FFFFF; lwExpon:=SHR(IN,52) AND 16#7FF; IF lwExpon<896 THEN lwExpon:=0; ELSIF lwExpon>1151 THEN lwExpon:=255; ELSE lwExpon:=lwExpon+127-1023; END_IF lwExpon:=SHL(lwExpon,23); lwSign:=SHR(IN,32) AND 16#80000000; lwREAL:=lwMant OR lwExpon OR lwSign; pREAL:=ADR(lwREAL); LREAL2REAL:=pREAL^;
Код:FUNCTION REAL2LREAL : LWORD VAR_INPUT IN: REAL; END_VAR VAR lwMant: LWORD; lwExpon: LWORD; lwSign: LWORD; pIN: POINTER TO LWORD; aIN: ARRAY [0..1] OF REAL; END_VAR aIN[0]:=IN; pIN:=ADR(aIN); lwMant:=SHL(pIN^ AND 16#7FFFFF,29); lwExpon:=SHL((SHR(pIN^,23) AND 16#FF)+1023-127,52); lwSign:=SHL(pIN^ AND 16#80000000,32); REAL2LREAL:=lwMant OR lwExpon OR lwSign;
Новая проблема с Modbus.
Пытаюсь настроить обмен двух контроллеров по ModbusTCP. В слейве указываю нужное кол-во регистров на чтение и запись:
Снимок.PNG
делаю соотнесение входов и выходов с соответствующими массивами, которые будут использоваться в качестве буферов:
Снимок2.PNG
и тут возникает вопрос: а мастеру по каким адресам надо обращаться?
В слейве не нашел где указан адрес (начальный адрес регистров чтения/записи). Где-то читал, что одни регистры начинаются с адреса 2000, другие с 3000, но какие именно не помню, и вообще к ПЛК/КДС это относилось ли. Сейчас этот документ найти не могу.
На "странице конфигурации" вроде как есть нужные поля, но они почему-то затенены.
Еще не понятно вот это:
А если мне надо передать 1000 регистров?Регистры временного хранения – определяют количество holding регистров
канала. Параметр может принимать значения от 2 до 40 (см. рис. 11.25);
Входные регистры – определяют количество input регистров канала. Параметр
может принимать значения от 2 до 40 (см. рис. 11.25).
Последний раз редактировалось GIR; 02.03.2016 в 12:32.
Предположим регистры %IW начинаются с 0, а %QW тогда с какого? Тоже с 0?
так то их требуется опрашивать разными функциями модбаса почему бы и нет, проверить то трех минут достаточно
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран
А, похоже дошло.
Если мастер делает запрос с командой 03 и адресом регистра 0, то он обращается к регистрам IW (временного хранения).
Если команда 04 и адрес 0, то он читает регистры QW (входные).
Если команда 16 и адрес 0, то запись регистров QW.
Так?
а что с 1000 регистров делать? Для каждых 40 регистров отдельное устройство создавать?
по логике, да. Но если не пойдет попробуйте стучаться по адресам которые выставили в настройках, вдруг это не количество а адресацияЕсли мастер делает запрос с командой 03 и адресом регистра 0, то он обращается к регистрам IW (временного хранения).
Если команда 04 и адрес 0, то он читает регистры QW (входные).
Если команда 16 и адрес 0, то запись регистров QW.
Так?
Последний раз редактировалось capzap; 02.03.2016 в 13:04.
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран