Просмотр полной версии : Расположение (адреса) Modbus регистров в памяти контроллера.
ПЛК100-РМ.
Modbus TCP|IP Slave.
Адрес переменной %QW.10.1.0.
В Модбасе это нулевой регистр. Прекрасно читается-пишется.
Пытаюсь обратиться к нему через %MW0, но это другая ячейка памяти.
Классическая картинка, когда нулевой регистр модбаса находится в нулевой области памяти не срабатывает.
Вопрос:Какой у него адрес в контроллере?
Т.е. как к нему обратиться по %MW....
Другими словами, Если я правильно понимаю..
В TargetSettings - MemoryLayout есть значения Base. Но их не видно, стоят галочки Auto.
Где бы посмотреть эти значения..
какая необходимость обращаться к переменным по %XXXXX ?
просто назначить имена переменным не судьба ?
просто назначить имена переменным не судьба ?
ОК. Имеем.
MyWord AT %QW10.1.0 ;
Как описать переменные к каждому биту?
Например переменная temp типа word - ее биты temp.0 , temp.1 ... temp.15
для вашего случая MyWord.0 MyWord.15
все будет еще хуже, когда доберетесь до взаимодействия Scada и ПЛК. Так что сразу разделите переменные Modbus и программы. В начале цикла копируйте и делайте что хотите, в конце цикла копируйте обратно.
А то будете удивляться, почему из Scada переменные записываются через раз...
Эта адресация ни какого отношения к конфигурации не имеет
Не понял, к какой конфигурации.
HoldingRegisters по-любому располагаются в памяти. У разных производителей контроллеров начинаются с разных областей физической памяти.
Распространённый вариант начала HoldingRegisters c 0х4000. Тут не получилось.
Например переменная temp типа word - ее биты temp.0 , temp.1 ... temp.15
для вашего случая MyWord.0 MyWord.15
Вот спасибо. Переменные для того и именуют, чтобы глядя на неё было понятно, что это.. А не держать всегда под рукой табличку, чего означает 13 бит MyWodr27..
а у вас в конфигураторе битовые переменные ?
Вот спасибо. Переменные для того и именуют, чтобы глядя на неё было понятно, что это.. А не держать всегда под рукой табличку, чего означает 13 бит MyWodr27..
Изучайте "Битовая адресация через глобальные константы"
Справка-->Указатель-->Bit addressing
и будет Вам счастье
Объявите глобальные константы с именами бит:
VAR_GLOBAL CONSTANT
enable:int:=2;
Start:int:=8;
Stop:int:=10;
END_VAR
И в теле программы вместо
MyWord.2, MyWord.8 и MyWord.10
будете обращаться к битам по именам
MyWord.enable, MyWord.Start и MyWord.Stop
будете обращаться к битам по именам
MyWord.enable, MyWord.Start и MyWord.Stop
Извращение, имхо... Ну за идею спасибо. В крайнем случае так сделаю.
Слов-то не одно..
Переношу проект с другого типа контроллеров и там было так.. Коротко, наглядно...
MEM_Service1 AT %MW200:WORD; // Слово целиком
MEM_GetRady AT %MX400.0:BOOL;
MEM_Pusk_Route AT %MX400.1:BOOL;
MEM_Stop_Route AT %MX400.2:BOOL;
MEM_Reset_Route AT %MX400.3:BOOL;
MEM_Hand_Routing AT %MX400.4:BOOL;
MEM_Cross AT %MX400.5:BOOL :=0;
и т.д. ещё строк двести... Описывать всё это через константы нумерации бит ...
поверхностно знаете про модбас, особенно его историю,
На знание истории не претендую, привёл как пример. Мне нужна ОДНА цифра. Адрес в памяти ПЛК100, с которого начинаются Holding (Output) Register.
её нет
Ну как нет?!? Если есть переменная в памяти, то к ней должен быть и адрес. Это ж как с попой. Если она есть, то к ней должно быть и слово.. :)
Другое дело, что мне, как пользователю, может быть закрыт туда доступ..
И почему бы не попенять на другие контроллеры? Тем более под тем же Codesys программируемые..
http://wiki2.iridiummobile.ru/Примеры_взаимодействия_с_переменными_Modbus
тут например, чудесно описана карта памяти Beckhoff.
Привожу не для начала обсуждения хуже-лучше, а как пример, чего хотел.
Вопрос, впринципе, по рецепту Мимохода решён (СПАСИБО!), так что продолжать тему можно только для поболтать, либо у кого-то есть такая карта памяти для ПЛК.
Как производитель придумал, так и будет. В данном случае конфигуратор придуман производителем. Полагаю, что можно сделать собственную карту, используя работу через библиотеки.
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot