PDA

Просмотр полной версии : Обращение к дискр. выходам через битовую строку WORD



Chupakabra
07.02.2007, 12:05
Как можно организовать программно (или сконфигурировать) работу с всеми дискретными выходами через переменную типа word, uint ? (для PLC 100)

Филоненко Владислав
07.02.2007, 13:18
Как можно организовать программно (или сконфигурировать) работу с всеми дискретными выходами через переменную типа word, uint ? (для PLC 100)

Прямое обращение невозможно, однако можно делать так:
написать задачу, к-я будет периодически считывать значение переменной типа DWORD, где хранится значение выходов и управлять физ. выходами.

Chupakabra
07.02.2007, 13:39
А не подскажете как можно перевести переменную word в массив boolean на 16 элементов?

Малышев Олег
07.02.2007, 14:15
А не подскажете как можно перевести переменную word в массив boolean на 16 элементов?

Для переменных типа BYTE, WORD, DWORD можно работать с битами так
my_var.x:=y; где x - число -номер бита, а y значение

Если хочется к битам обращаться в цикле через итератор
используйте функции util.lib PACK и EXTRACT

Малышев Олег
07.02.2007, 14:18
Прямое обращение невозможно, однако можно делать так:
написать задачу, к-я будет периодически считывать значение переменной типа DWORD, где хранится значение выходов и управлять физ. выходами.

Про задачу понятно, но переменную заводить не обязательно...
т.к. если обращаться по МЭК адресам можно написать
%QX1.0:=%IX0.0;
или
%QW1.0:=%IW0.0;

Chupakabra
07.02.2007, 15:01
Про задачу понятно, но переменную заводить не обязательно...
т.к. если обращаться по МЭК адресам можно написать
%QX1.0:=%IX0.0;
или
%QW1.0:=%IW0.0;

А что вы имелли ввиду, когда говорили что переменную заводить не обязательно ? Непонятно.

Малышев Олег
07.02.2007, 16:13
Область памяти в ПЛК, которая отвечает за ввод-вывод адресуется через т.н. МЭК адреса. %I... - адреса входов %Q... - адреса выходов, %IX0.0.0 - переменная типа bool (один битная )со смещением 0. %IX0.0.1 - тоже со смещением один бит. Кодесис поддерживает операции с использованием вместо переменных таких адресов. Вы можете написать %QX1.1:=%IX0.0 AND %IX0.1; Т.е. на второй бит первого байта области вывода записать результат операции "И" над битами со смещением 0 и 1 в области ввода.

Chupakabra
08.02.2007, 11:47
Всем спасибо поразрядная адресация (my_var.x: где x - число -номер бита) - то что нужно.

xoxa
21.07.2016, 20:20
Если выход/вход ПЛК типа dword, возможно ли эти входы/выходы интерпритировать в виде массива типа bool без конструкции вида my_var.x:=y ? а сразу перевести dword в массив?

capzap
22.07.2016, 07:02
Если выход/вход ПЛК типа dword, возможно ли эти входы/выходы интерпритировать в виде массива типа bool без конструкции вида my_var.x:=y ? а сразу перевести dword в массив?
нет, только через указатель

amn
22.07.2016, 09:11
Через указатель не получится в массив типа BOOL.

Борис_771
05.10.2021, 15:57
А как передавать данные типа WORD в "Аварии" и на диспетчеризацию?

kondor3000
05.10.2021, 16:02
А как передавать данные типа WORD в "Аварии" и на диспетчеризацию?

На первой странице есть все ответы.

keysansa
05.10.2021, 16:05
нет, только через указатель

Или через функции. Ответ не ответ.

keysansa
05.10.2021, 16:06
А как передавать данные типа WORD в "Аварии" и на диспетчеризацию?

Передавайте WORD. Как раз размерность Modbus. А в диспетчеризации разберетесь, что к чему.

capzap
05.10.2021, 18:10
Или через функции. Ответ не ответ.

Вы сейчас о чем? Внесение каждого бита в массив или наоборот через функцию, а чем это отличаться будет от просто через точку, как того требовалось
без конструкции вида my_var.x:=y
Указатель естественно тоже не одной строкой делается, но на него запроса показать не поступало, поэтому и развернутого ответа не было

keysansa
05.10.2021, 18:13
Вы сейчас о чем? Внесение каждого бита в массив или наоборот через функцию, а чем это отличаться будет от просто через точку
Функция позволяет установить любой бит любого целочисленного аргумента. Можете установить любой бит через точку в 64 INT? В 128?

capzap
05.10.2021, 18:40
Функция позволяет установить любой бит любого целочисленного аргумента. Можете установить любой бит через точку в 64 INT? В 128?

Вы сейчас точно зашли поговорить о плк ОВЕН?

keysansa
08.10.2021, 22:54
Вы сейчас точно зашли поговорить о плк ОВЕН?
А что не так?