![](https://cdn.userecho.com/characters/118.png?1)
0
чтение тега типа bool
имеем 1 word 2 байта по 8 бит каждый, с адресом 0
Там есть во втором байте бит ibSetDefSet.
как его считать по средствам modbus без скриптов (с возможностью записи)
![Image 201](/s/attachments/19809/1/0/0da8fe62c113492f46296b5d695e0251.jpg)
pic.JPG
Там есть во втором байте бит ibSetDefSet.
как его считать по средствам modbus без скриптов (с возможностью записи)
![Image 201](/s/attachments/19809/1/0/0da8fe62c113492f46296b5d695e0251.jpg)
pic.JPG
Сервис поддержки клиентов работает на платформе UserEcho
Если не ошибаюсь, то считать можно только слово целиком. И без скрипта в данном случае не обойтись.
examplebit_2016-04-01.zip
наваял примерно такое, но не работает.
[spoiler]
{Пример Pascal Script} var b0,b1,b2,b3,b4,b5,b6,b7: boolean; Var Out,: Integer; Begin B7:=ReadValue('bit_(7)'); B6:=ReadValue('bit_(6)'); B5:=ReadValue('bit_(5)'); B4:=ReadValue('bit_(4)'); B3:=ReadValue('bit_(3)'); B2:=ReadValue('bit_(2)'); B1:=ReadValue('bit_(1)'); B0:=ReadValue('bit_(0)'); out:= BinToWord('B7'); out:= out*2+BinToWord('B6'); out:= out*2+BinToWord('B5'); out:= out*2+BinToWord('B4'); out:= out*2+BinToWord('B3'); out:= out*2+BinToWord('B2'); out:= out*2+BinToWord('B1'); out:= out*2+BinToWord('B0'); WriteValue('outword',out); end.
[/spoiler]Смотрим документацию:
function BinToWord(ABin: String): Word (функция преобразует входное значение ABin строкового типа
в десятичное значение. Пример ABin = '01001001' , результат = 73)
В качестве параметра в функцию передается строка, в Вашем случае Вы отдаете out:= BinToWord('B7') строку вида "В7", поэтому и не работает. Нужно сделать примерно так:
var b0,b1,b2,b3,b4,b5,b6,b7: integer;
str := IntToStr(b7) + … IntToStr(b0);
out:= BinToWord(str);
вот рабочий код, может кому пригодится.
[spoiler]
{объявляем переменные} var b0,b1,b2,b3,b4,b5,b6,b7:int; var Out: word; var str: string; Begin {опрашиваем все биты и присваиваем промежуточным переменным} B7:=ReadValue('bit_(7)'); B6:=ReadValue('bit_(6)'); B5:=ReadValue('bit_(5)'); B4:=ReadValue('bit_(4)'); B3:=ReadValue('bit_(3)'); B2:=ReadValue('bit_(2)'); B1:=ReadValue('bit_(1)'); B0:=ReadValue('bit_(0)'); {набираем стринг из 0 и 1} str:=IntToStr(b7)+IntToStr(b6)+IntToStr(b5)+IntToStr(b4)+IntToStr(b3)+IntToStr(b2)+IntToStr(b1)+IntToStr(b0); {конвертируем стринг из нолей и единиц в ворд} out:= BinToWord(str); {записываем результат} WriteValue('outword',out); end.
[/spoiler]