Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Shneider M238
Диалог специалистов АВОК > ОБЩИЙ ФОРУМ > Автоматизация систем
All_Ex81
есть контроллер м238 от шнайдера,
настраиваю в нем relocation table для приема-передачи данных по modbus,
в relocation table битовые поля преобразуются в int,
поэтому из скады я не могу установить бит моментно (т.е. установить бит и сразу его обнулить),
а могу только послать значение равное 1.
Вопрос к знающим - как моментно управлять битовыми данными в этом контроллере?
AlexG
Какие функции протокола Modbus вы предполагаете использовать для "моментной" установки и сброса бита?
Все известные мне функции протокола делают запись один раз и соответственно, вам потребуется два запроса к контроллеру, один чтобы установить бит и один чтобы сбросить. То что биты упакованы в регистры по 16 значения не имеет. При побитном доступе функциями 1, 5, 15 "моментного" изменения бита всерано не получить.
All_Ex81
под моментным сигналом я подразумевал возможности скада устанавливать бит моментно, с интами скада так не работает.
san
Цитата(All_Ex81 @ 12.4.2013, 13:09) *
под моментным сигналом я подразумевал возможности скада устанавливать бит моментно, с интами скада так не работает.

я тоже не понял, что значит моментно. Если это поставить лог "1", чтоб после этого этот бит скинулся в "0", то это либо должна сделать сама СКАДА, либо ПЛК программным путём (незавсимо от типа ПЛК). Если имеется в виду побитовый доступ, то нужно использовать функции записи COILS. Отображение в ПЛК Modbus переменных как int - это всего лишь отображение.
All_Ex81
перефразирую
предположим есть ключ управления, когда его переводим - цепь замкнута, и остается замкнутой пока ключ в этом положении.
есть кнопка управления - когда ее нажимаем - цепь замыкается, когда отпускаем - размыкается.

вот мне и требуется получить кнопку
san
Цитата(All_Ex81 @ 12.4.2013, 16:06) *
перефразирую
предположим есть ключ управления, когда его переводим - цепь замкнута, и остается замкнутой пока ключ в этом положении.
есть кнопка управления - когда ее нажимаем - цепь замыкается, когда отпускаем - размыкается.

вот мне и требуется получить кнопку

Тогда Modbus тут не при чём. Это может сделать или SCADA (во многих такой функционал есть) или SCADA+PLC. В СКАДЕ устанвливайте бит (послать 1), а в ПЛК при его установке - скидывайте. Надеюсь до бита INT в программе ПЛК Вы умеете добираться?
All_Ex81
во всех скада есть функционал самосброса bool, инты они не сбрасывают, вот и спрашиваю может кто сталкивался, в плк городить огород сброса не хотел
san
Цитата(All_Ex81 @ 13.4.2013, 11:15) *
во всех скада есть функционал самосброса bool, инты они не сбрасывают, вот и спрашиваю может кто сталкивался, в плк городить огород сброса не хотел
А при чём тут инты? Доступайтесь к этой зоне как к битам и всё.
All_Ex81
Цитата(san @ 13.4.2013, 14:14) *
А при чём тут инты? Доступайтесь к этой зоне как к битам и всё.

подскажите пожалуйста как это сделать?
san
Вы ж не сказали какая СКАДА и в какую ячейку помещена переменная. По идее надо обратится к Coils, указав (адрес Holding Registers)*16+номер_бита.
All_Ex81
Цитата(san @ 13.4.2013, 16:50) *
Вы ж не сказали какая СКАДА и в какую ячейку помещена переменная. По идее надо обратится к Coils, указав (адрес Holding Registers)*16+номер_бита.

все и дело что к Coils я обратится не могу, 238 (через relocation table) воспринимает только 6 команду модбас,
загрузил шнайдеров этой темой, уже 4 дня думают
san
А как же это:
Цитата("SoMachine Help")
When the controller is configured as Modbus Slave, the following Modbus requests are supported:
Types Function Function Codes
Code/Sub Code
Data Access (1 Bit) Physical Discrete Inputs and Outputs Read Coils 01
Read Discrete Inputs 02
Write Multiple Coils 15
Data Access (16 Bits) Physical Input Registers Read Holding Registers 03
Write Single Register 06
Write Multiple Registers 16
Read/Write Multiple Registers 23
Diagnostics Diagnostics 08
Read Device Identification 43/14

Так всё таки какая ячейка регистра и какая скада? К регистру удалось доступиться?

Тут ещё можно спросить: http://forum.se-automation.in.ua/index.php, там есть хороший спец по Сомашин.
All_Ex81
скада без разницы какая,
регистр например MW0 - но он int!!! а не MB0
san
СКАДА имеет значение, так как формат записи у всех скад разный. Если Вы в СКАДЕ обращаетесь к переменной как например к %MW20, и попадаете в тот регистр который нужно, то чтоб обратится к 3 му биту этого инта попробуйте вписать %M323 (20*16+3). Если обращаетесь как 400020, тогда попробуйте к 100323.
Ссылку на хелп я Вам привёл к тому, чтоб показать, что к памяти М238 можно обращаться как к битовой области. То есть битовая и регистровая область там совпадают. К сожалению наш стенд уехал на время, так что проверить не смогу. Если всё-таки хотите попробовать решить проблему - вылаживайте все детали.
All_Ex81
у заказчиков стоит какаято самописная скада,
я имитирую скаду с помощью панельки weintek,
relocation table начинает адресацию modbus с адреса %MW62200,
из панели получилось обратится к биту если задать формат %MW_Bit и адрес 62200.1
сейчас буду пробовать обратится и скады
san
Цитата(All_Ex81 @ 15.4.2013, 7:48) *
relocation table начинает адресацию modbus с адреса %MW62200,
из панели получилось обратится к биту если задать формат %MW_Bit и адрес 62200.1

...это сложнее, помогут только скрипты
TEA_S7
Используйте не relocation table, а прямую адресацию.

Пример(объявления переменной с прямой адресацией):

VAR
wVar1 AT %MW100 :WORD;
END_VAR;
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2025 IPS, Inc.