Export translations
Views
Special page
From OpenSCADAWiki
Jump to:
navigation
,
search
Settings
Group
About
Documents
Documents/API
Documents/DAQ
Documents/FAQ
Documents/How to
Documents/How to/Build from source
Documents/How to/Crash report
Documents/How to/Create module
Documents/How to/Create multi language project
Documents/How to/Cyclic programming
Documents/How to/Debug
Documents/How to/Install
Documents/How to/Live disk
Documents/How to/Release
Documents/How to/Transferring project configuration
Documents/How to/Violations, alarms and notifications
Documents/Program manual
Documents/Quick start
Documents/Release 0.8.0
Documents/Release 0.8.0/Update10
Documents/Release 0.8.0/Update11
Documents/Release 0.8.0/Update12
Documents/Release 0.8.0/Update13
Documents/Release 0.8.0/Update14
Documents/Release 0.8.0/Update15
Documents/Release 0.8.0/Update16
Documents/Release 0.8.0/Update17
Documents/Release 0.8.0/Update18
Documents/Release 0.8.0/Update19
Documents/Release 0.8.0/Update20
Documents/Release 0.8.0/Update3
Documents/Release 0.8.0/Update4
Documents/Release 0.8.0/Update5
Documents/Release 0.8.0/Update6
Documents/Release 0.8.0/Update7
Documents/Release 0.8.0/Update8
Documents/Release 0.8.0/Update9
Documents/Release 0.9
Documents/Release 0.9/Update 7
Documents/Release 0.9/Update1
Documents/Release 0.9/Update2
Documents/Release 0.9/Update3
Documents/Release 0.9/Update4
Documents/Release 0.9/Update5
Documents/Release 0.9/Update6
Documents/Release 0.9/Updating 0.8.0 LTS
Documents/Terms
Documents/User API
Functions and demands
Home
Libs
Libs/Devices
Libs/Documents
Libs/Electrical elements
Libs/Generic list
Libs/LowLevelDevices
Libs/Main
Libs/Main graphical elements
Libs/Mnemo elements
Libs/Prescriptions
Libs/Regulation elements
Libs/Service procedures
Libs/Technological apparatuses
Modules
Modules/BFN
Modules/BlockCalc
Modules/Comedi
Modules/DAQGate
Modules/DBArch
Modules/DBF
Modules/DBGate
Modules/DCON
Modules/DiamondBoards
Modules/FireBird
Modules/FLibComplex1
Modules/FLibMath
Modules/FLibSYS
Modules/FSArch
Modules/GPIO
Modules/HTTP
Modules/ICP DAS
Modules/JavaLikeCalc
Modules/LDAP
Modules/LogicLev
Modules/ModBus
Modules/MySQL
Modules/OPC UA
Modules/PostgreSQL
Modules/QTCfg
Modules/QTStarter
Modules/SelfSystem
Modules/Serial
Modules/Siemens
Modules/SMH2Gi
Modules/SNMP
Modules/Sockets
Modules/SoundCard
Modules/SQLite
Modules/SSL
Modules/System
Modules/SystemTests
Modules/UserProtocol
Modules/VCAEngine
Modules/Vision
Modules/WebCfg
Modules/WebCfgD
Modules/WebUser
Modules/WebVision
Sub-projects
Sub-projects/Automatic Builder of OpenSCADA
Sub-projects/Automation Linux distributive
Sub-projects/Embedding and PLC
Sub-projects/Server
Sub-projects/VCA
User:RomanSavochenko
Using
Using/HouseSpirit
Using/Kramatorsk Ball Mills
Using/Kramatorsk Water
Using/Model AGLKS
Using/Model Boiler
Using/OpenWrt TELEOFIS RTU968
Using/Yaroslavskij broiler
Works
Works/Road map
Works/Technical Support
Works/Technical Support/Agreement
Works/To do
Language
aa - Afar
ab - Abkhazian
ace - Achinese
ady - Adyghe
ady-cyrl - адыгабзэ
aeb - Tunisian Arabic
aeb-arab - تونسي
aeb-latn - Tûnsî
af - Afrikaans
ak - Akan
aln - Gheg Albanian
am - Amharic
an - Aragonese
ang - Old English
anp - Angika
ar - Arabic
arc - Aramaic
arn - Mapuche
arq - Algerian Arabic
ary - Moroccan Arabic
arz - Egyptian Arabic
as - Assamese
ase - American Sign Language
ast - Asturian
av - Avaric
avk - Kotava
awa - Awadhi
ay - Aymara
az - Azerbaijani
azb - تۆرکجه
ba - Bashkir
bar - Bavarian
bbc - Batak Toba
bbc-latn - Batak Toba
bcc - Southern Balochi
bcl - Bikol Central
be - Belarusian
be-tarask - Belarusian (Taraškievica orthography)
bg - Bulgarian
bgn - Western Balochi
bho - Bhojpuri
bi - Bislama
bjn - Banjar
bm - Bambara
bn - Bengali
bo - Tibetan
bpy - Bishnupriya
bqi - Bakhtiari
br - Breton
brh - Brahui
bs - Bosnian
bto - Iriga Bicolano
bug - Buginese
bxr - буряад
ca - Catalan
cbk-zam - Chavacano de Zamboanga
cdo - Min Dong Chinese
ce - Chechen
ceb - Cebuano
ch - Chamorro
cho - Choctaw
chr - Cherokee
chy - Cheyenne
ckb - Central Kurdish
co - Corsican
cps - Capiznon
cr - Cree
crh - Crimean Turkish
crh-cyrl - Crimean Turkish (Cyrillic script)
crh-latn - Crimean Turkish (Latin script)
cs - Czech
csb - Kashubian
cu - Church Slavic
cv - Chuvash
cy - Welsh
da - Danish
de - German
de-at - Austrian German
de-ch - Swiss High German
de-formal - German (formal address)
diq - Zazaki
dsb - Lower Sorbian
dtp - Central Dusun
dty - डोटेली
dv - Divehi
dz - Dzongkha
ee - Ewe
egl - Emilian
el - Greek
eml - Emiliano-Romagnolo
en - English
en-ca - Canadian English
en-gb - British English
eo - Esperanto
es - Spanish
et - Estonian
eu - Basque
ext - Extremaduran
fa - Persian
ff - Fulah
fi - Finnish
fit - Tornedalen Finnish
fj - Fijian
fo - Faroese
fr - French
frc - Cajun French
frp - Arpitan
frr - Northern Frisian
fur - Friulian
fy - Western Frisian
ga - Irish
gag - Gagauz
gan - Gan Chinese
gan-hans - Simplified Gan script
gan-hant - Traditional Gan script
gd - Scottish Gaelic
gl - Galician
glk - Gilaki
gn - Guarani
gom - Goan Konkani
gom-deva - Goan Konkani (Devanagari script)
gom-latn - Goan Konkani (Latin script)
got - Gothic
grc - Ancient Greek
gsw - Swiss German
gu - Gujarati
gv - Manx
ha - Hausa
hak - Hakka Chinese
haw - Hawaiian
he - Hebrew
hi - Hindi
hif - Fiji Hindi
hif-latn - Fiji Hindi (Latin script)
hil - Hiligaynon
ho - Hiri Motu
hr - Croatian
hrx - Hunsrik
hsb - Upper Sorbian
ht - Haitian Creole
hu - Hungarian
hy - Armenian
hz - Herero
ia - Interlingua
id - Indonesian
ie - Interlingue
ig - Igbo
ii - Sichuan Yi
ik - Inupiaq
ike-cans - Eastern Canadian (Aboriginal syllabics)
ike-latn - Eastern Canadian (Latin script)
ilo - Iloko
inh - Ingush
io - Ido
is - Icelandic
it - Italian
iu - Inuktitut
ja - Japanese
jam - Jamaican Creole English
jbo - Lojban
jut - Jutish
jv - Javanese
ka - Georgian
kaa - Kara-Kalpak
kab - Kabyle
kbd - Kabardian
kbd-cyrl - Адыгэбзэ
kg - Kongo
khw - Khowar
ki - Kikuyu
kiu - Kirmanjki
kj - Kuanyama
kk - Kazakh
kk-arab - Kazakh (Arabic script)
kk-cn - Kazakh (China)
kk-cyrl - Kazakh (Cyrillic script)
kk-kz - Kazakh (Kazakhstan)
kk-latn - Kazakh (Latin script)
kk-tr - Kazakh (Turkey)
kl - Kalaallisut
km - Khmer
kn - Kannada
ko - Korean
ko-kp - 한국어 (조선)
koi - Komi-Permyak
kr - Kanuri
krc - Karachay-Balkar
kri - Krio
krj - Kinaray-a
ks - Kashmiri
ks-arab - Kashmiri (Arabic script)
ks-deva - Kashmiri (Devanagari script)
ksh - Colognian
ku - Kurdish
ku-arab - كوردي (عەرەبی)
ku-latn - Kurdish (Latin script)
kv - Komi
kw - Cornish
ky - Kyrgyz
la - Latin
lad - Ladino
lb - Luxembourgish
lbe - лакку
lez - Lezghian
lfn - Lingua Franca Nova
lg - Ganda
li - Limburgish
lij - Ligurian
liv - Livonian
lmo - Lombard
ln - Lingala
lo - Lao
loz - Lozi
lrc - Northern Luri
lt - Lithuanian
ltg - Latgalian
lus - Mizo
luz - Southern Luri
lv - Latvian
lzh - Literary Chinese
lzz - Laz
mai - Maithili
map-bms - Basa Banyumasan
mdf - Moksha
mg - Malagasy
mh - Marshallese
mhr - Eastern Mari
mi - Maori
min - Minangkabau
mk - Macedonian
ml - Malayalam
mn - Mongolian
mo - молдовеняскэ
mr - Marathi
mrj - Western Mari
ms - Malay
mt - Maltese
mus - Creek
mwl - Mirandese
my - Burmese
myv - Erzya
mzn - Mazanderani
na - Nauru
nah - Nāhuatl
nan - Min Nan Chinese
nap - Neapolitan
nb - Norwegian Bokmål
nds - Low German
nds-nl - Low Saxon
ne - Nepali
new - Newari
ng - Ndonga
niu - Niuean
nl - Dutch
nl-informal - Nederlands (informeel)
nn - Norwegian Nynorsk
nov - Novial
nrm - Nouormand
nso - Northern Sotho
nv - Navajo
ny - Nyanja
oc - Occitan
olo - Livvi-Karelian
om - Oromo
or - Oriya
os - Ossetic
pa - Punjabi
pag - Pangasinan
pam - Pampanga
pap - Papiamento
pcd - Picard
pdc - Pennsylvania German
pdt - Plautdietsch
pfl - Palatine German
pi - Pali
pih - Norfuk / Pitkern
pl - Polish
pms - Piedmontese
pnb - Western Punjabi
pnt - Pontic
prg - Prussian
ps - Pashto
pt - Portuguese
pt-br - Brazilian Portuguese
qu - Quechua
qug - Chimborazo Highland Quichua
rgn - Romagnol
rif - Riffian
rm - Romansh
rmy - Romani
rn - Rundi
ro - Romanian
roa-tara - tarandíne
ru - Russian
rue - Rusyn
rup - Aromanian
ruq - Megleno-Romanian
ruq-cyrl - Megleno-Romanian (Cyrillic script)
ruq-latn - Megleno-Romanian (Latin script)
rw - Kinyarwanda
sa - Sanskrit
sah - Sakha
sat - Santali
sc - Sardinian
scn - Sicilian
sco - Scots
sd - Sindhi
sdc - Sassarese Sardinian
sdh - Southern Kurdish
se - Northern Sami
sei - Seri
ses - Koyraboro Senni
sg - Sango
sgs - Samogitian
sh - Serbo-Croatian
shi - Tachelhit
shi-latn - Tašlḥiyt
shi-tfng - ⵜⴰⵛⵍⵃⵉⵜ
si - Sinhala
sk - Slovak
sl - Slovenian
sli - Lower Silesian
sm - Samoan
sma - Southern Sami
sn - Shona
so - Somali
sq - Albanian
sr - Serbian
sr-ec - Serbian (Cyrillic script)
sr-el - Serbian (Latin script)
srn - Sranan Tongo
ss - Swati
st - Southern Sotho
stq - Saterland Frisian
su - Sundanese
sv - Swedish
sw - Swahili
szl - Silesian
ta - Tamil
tcy - Tulu
te - Telugu
tet - Tetum
tg - Tajik
tg-cyrl - Tajik (Cyrillic script)
tg-latn - Tajik (Latin script)
th - Thai
ti - Tigrinya
tk - Turkmen
tl - Tagalog
tly - Talysh
tn - Tswana
to - Tongan
tokipona - Toki Pona
tpi - Tok Pisin
tr - Turkish
tru - Turoyo
ts - Tsonga
tt - Tatar
tt-cyrl - Tatar (Cyrillic script)
tt-latn - Tatar (Latin script)
tum - Tumbuka
tw - Twi
ty - Tahitian
tyv - Tuvinian
tzm - Central Atlas Tamazight
udm - Udmurt
ug - Uyghur
ug-arab - Uyghur (Arabic script)
ug-latn - Uyghur (Latin script)
uk - Ukrainian
ur - Urdu
uz - Uzbek
uz-cyrl - ўзбекча
uz-latn - oʻzbekcha
ve - Venda
vec - Venetian
vep - Veps
vi - Vietnamese
vls - West Flemish
vmf - Main-Franconian
vo - Volapük
vot - Votic
vro - Võro
wa - Walloon
war - Waray
wo - Wolof
wuu - Wu Chinese
xal - Kalmyk
xh - Xhosa
xmf - Mingrelian
yi - Yiddish
yo - Yoruba
yue - Cantonese
za - Zhuang
zea - Zeelandic
zh - Chinese
zh-cn - Chinese (China)
zh-hans - Simplified Chinese
zh-hant - Traditional Chinese
zh-hk - Chinese (Hong Kong)
zh-mo - 中文(澳門)
zh-my - 中文(马来西亚)
zh-sg - Chinese (Singapore)
zh-tw - Chinese (Taiwan)
zu - Zulu
qqq - Message documentation
Format
Export for off-line translation
Export in native format
{{DISPLAYTITLE:Модули/ModBus}}<languages/> {| class="wikitable" |- ! Модуль !! Имя !! Версия !! Лицензия !! Источник !! Языки !! Платформы !! Тип !! Автор |- <section begin=info /> | [[Special:MyLanguage/Modules/ModBus|ModBus]] || ModBus | 3.8 || GPL2 || daq_ModBus.so || en,uk,ru,de || x86,x86_64,ARM <section end=info /> | Сбор Данных || Роман Савоченко |- ! colspan="9" | Описание |- | colspan="9" | Предоставляет реализацию клиентского сервиса протокола ModBus. Поддерживаются ModBus/TCP, ModBus/RTU и ModBus/ASCII протоколы. |- <section begin=info2 /> | [[Special:MyLanguage/Modules/ModBus|ModBus]] || ModBus | 2.10 || GPL2 || daq_ModBus.so || en,uk,ru,de || x86,x86_64,ARM <section end=info2 /> | Протокол || Роман Савоченко |- ! colspan="9" | Описание |- | colspan="9" | Предоставляет реализацию протоколов ModBus. Поддерживаются ModBus/TCP, ModBus/RTU и ModBus/ASCII протоколы. * '''Общая трудоёмкость:''' > 20 {{CtxDetails|ЧД|человеко-дней, 1ЧД — 10 часов}} * '''[[Special:MyLanguage/Works/To_do|Задачи (To Do)]]:''' <section begin=ToDo /> : - <section end=ToDo /> |} ModBus — коммуникационный протокол, основанный на клиент-серверной архитектуре. Разработан фирмой Modicon для использования в контроллерах с программируемой логикой (PLC). Стал стандартом де-факто в промышленности и широко применяется для организации связи промышленного электронного оборудования. Используется для передачи данных через последовательные линии связи RS-485, RS-422, RS-232, а также сети TCP/IP. В настоящее время поддерживается некоммерческой организацией ModBus-IDA. Существуют три режима протокола: ModBus/RTU, ModBus/ASCII и ModBus/TCP. Первые два используют последовательные линии связи (в основном RS-485, реже RS-422/RS-232), последний использует сети TCP/IP для передачи данных. Модуль сбора данных предоставляет возможность собирать информацию у различных устройств по протоколу ModBus во всех режимах. Также, модулем реализуются функции горизонтального резервирования, а именно — совместной работы с удалённой станцией этого-же уровня. В то же время, модуль протокола позволяет сформировать и выдать данные по протоколу ModBus в различных режимах и через интерфейсы, поддерживаемые модулями [[Special:MyLanguage/Documents/Program_manual#Communication|подсистемы "Транспорты"]]. == Общее описание протокола ModBus == Протокол ModBus/{RTU,ASCII} предполагает одно ведущее (запрашивающее) устройство в линии (master), которое может передавать команды одному или нескольким ведомым устройствам (slave), обращаясь к ним по уникальному адресу в линии. Синтаксис команд протокола позволяет адресовать 247 устройств на одной линии связи стандарта RS-485 (реже RS-422 или RS-232). В случае с режимом TCP, адресация исключена из протокола, поскольку выполняется на уровне TCP/IP стека. Инициатива осуществления обмена всегда исходит от ведущего устройства. Ведомые устройства прослушивают линию связи. Мастер подаёт запрос (посылка, последовательность байт) в линию и переходит в режим прослушивания линии связи. Ведомое устройство отвечает на запрос, пришедший на его адрес. Окончание ответной посылки определяется в зависимости от режима. В режиме RTU окончание посылки определяется по временному интервалу между окончанием приёма предыдущего байта и началом приёма следующего — время символа. Если этот интервал превысил время, необходимое для приёма полтора байта на заданной скорости передачи то приём фрейма ответа считается завершённым. В режиме ASCII критерием окончания посылки является символ '\r', а в режиме TCP — ожидаемый размер посылки, информация о котором присутствует в заголовке пакета. === Адресация === Все операции с данными привязаны к нулю, каждый вид данных (регистр, бит, регистр входа или бита входа) начинаются с адреса '''0''' и заканчиваются '''65535'''. === Стандартные коды функций === В протоколе ModBus можно выделить несколько подмножеств команд (Таблица 1). '''Таблица 1''': Подмножества команд протокола ModBus {| class="wikitable" |- | '''Подмножество''' || '''Диапазон кодов''' |- | Стандартные || 1-21 |- | Резерв для расширенных функций || 22-64 |- | Пользовательские || 65-119 |- | Резерв для внутренних нужд || 120-255 |} Модулем сбора данных используются команды '''3''' и '''6(16)''' для чтения и записи регистров, '''1''' и '''5(15)''' для чтения и записи битов, '''2''' и '''4''' для чтения бита и регистра входа, соответственно. Для реализации остальных и нетипичных команд модулем предусмотрена функция [[#UserAPI|API пользовательского программирования]], которую можно вызывать из [[Special:MyLanguage/Documents/DAQ#LogicLev|процедуры шаблона логического уровня]], отправляя произвольные PDU пакеты и обрабатывая полученные в ответ. Модуль протокола обрабатывает запросы командами '''3''' и '''6(16)''' для чтения и записи регистров, '''1''' и '''5(15)''' для чтения и записи битов. == Модуль реализации протокола == Модуль протокола ModBus содержит код реализации протокольной части ModBus, а именно — особенности вариантов протоколов ModBus/TCP, ModBus/RTU и ModBus/ASCII. Модуль протокола, совместно с выбранным транспортом, активно используется модулем сбора данных для осуществления непосредственных запросов. Поскольку модуль протокола является автономным то, используя его, можно создавать дополнительные модули сбора данных посредством нестандартных функций расширения ModBus различного оборудования автоматизации. === API функции исходящих запросов === API функции исходящих запросов ([[Special:MyLanguage/Documents/User_API#SYSTransport|messIO()]]) оперируют обменом блоками PDU, завёрнутыми в XML-пакеты, со следующей структурой: * '''<{prt} id="{sId}" reqTm="{reqTm}" node="{node}" reqTry="{reqTry}">{pdu}</{prt}>''' :Где: :* ''prt'' — имя тега запроса с названием используемого варианта протокола (TCP, RTU или ASCII). :* ''sId'' — идентификатор источника запроса. Используется для помещения в [[#Report|отчёт выходного протокола]]. :* ''reqTm'' — время запроса, а именно — время, в течение которого, ожидать ответ, в миллисекундах. :* ''node'' — номер узла назначения или идентификатор юнита ModBus/TCP. :* ''reqTry'' — количество попыток повторения запроса с ошибкой в ответе. Только для вариантов ModBus/{RTU,ASCII}. :* ''pdu'' — непосредственно блок юнита данных (PDU) протокола ModBus. Результирующий ''pdu'' в XML-пакете заменяет ''pdu'' запроса, а также устанавливается атрибут "err" с кодом и текстом ошибки, если таковая имела место. === Обслуживание запросов по протоколу ModBus === Входная часть, обслуживания запросов к модулю протокола, осуществляет проверку и обработку запросов посредством предусмотренных модулем объектов узлов (рис.1). Фактически, реализуется механизм, позволяющий OpenSCADA выполнять роль сервера ModBus/TCP или подчинённого устройства ModBus/{RTU,ADCII}. Таким образом, OpenSCADA получает возможность использоваться в роли любого участника сети ModBus. [[File:ModBus_prt_nodes_ru.png|center|frame|Рис.1. Вкладка перечня узлов обслуживания входящих запросов протокола.]] Узел протокола эквивалентен физическому узлу устройства сети ModBus и может работать в трёх режимах: * "Данные" — режим отражения данных OpenSCADA на массивы регистров и битов ModBus с передачей их по запросу клиентского узла или мастера. * "Шлюз узла" — режим перенаправления (шлюзования) запросов к узлу в другой сети ModBus через данный узел. * "Шлюз сети" — режим перенаправления запросов к любому узлу в другую сеть ModBus, фактически выполняя интеграцию нескольких сетей ModBus в одну. Поскольку узлов протокола может быть создано множество то получается, что на одном интерфейсе, т.е. в одной сети, одна станция на основе OpenSCADA может прозрачно представлять несколько узлов сети ModBus с различными данными. Рассмотрим особенности конфигурации узла протокола в различных режимах. ==== Режим "Данные" ==== Режим используется для отражения данных OpenSCADA на массивы регистров и битов ModBus. Общая конфигурация узла осуществляется во вкладке "Узел" (рис.2) параметрами: * Состояние узла, а именно: статус, "Включен" и имя БД, содержащей конфигурацию, с отслеживанием наличия данных в различных хранилищах и предоставлением последовательного удаления дубликатов. * Идентификатор, имя и описание узла. * Состояние "Включен", в которое переводить узел при загрузке. * Адрес узла сети ModBus от 1 до 247. * Входной транспорт, к сети которого относится узел. Выбирается из перечня [[Special:MyLanguage/Documents/Program_manual#TransportIn|входных транспортов]] подсистемы "Транспорты" OpenSCADA. Указание символа "*" в качестве транспорта делает данный узел участником любой сети ModBus с обработкой запросов от любого транспорта. * Вариант протокола ModBus, запросы в котором должен обрабатывать узел, из списка: Все, RTU, ASCII, TCP/IP. * Выбор режима, в данном случае этот режим "Данные". * Период обсчёта данных в секундах. Указывает период обработки формируемых для запросов данных, а именно: таблицы данных ModBus, программы обсчёта данных и обслуживание ссылок на данные OpenSCADA. * [[Special:MyLanguage/Documents/Program_manual#DAQTmpl|DAQ шаблон]] или язык прямой процедуры. Предусматривает выбор шаблона или языка прямой процедуры для формирования и вычисления таблиц данных ModBus, а также для обслуживания внешних ссылок на модель данных подсистемы "Сбор Данных". Узлом в этом режиме обрабатываются следующие стандартные команды протокола ModBus: * '''1''' — чтение группы битов; * '''2''' — чтение группы битов входов; * '''3''' — чтение группы регистров; * '''4''' — чтение группы регистров входов; * '''5''' — установка одного бита; * '''6''' — установка одного регистра; * '''15''' — установка группы битов; * '''16''' — установка группы регистров. [[File:ModBus_prt_node_node_ru.png|center|frame|Рис.2. Вкладка "Узел" страницы конфигурации узла протокола в режиме "Данные".]] To form the table of reflection the ModBus network data, that is registers and bits, the tab "Data" is provided (Fig.3). The tab "Data" contains a table of parameters and program of processing the parameters with the specified programming language which is available in OpenSCADA, but in the template there is only the table available and in the "Enabled" mode. The table contains parameters with the properties: * ''Identifier'' — identifier of the parameter. It is the key for formation of the tables of registers and bits of ModBus. Registers and bits of ModBus set as follows: :* '''R{N}[w~]''', '''RI{N}[w~]''' — specific register and input register form, can be expanded by the suffixes: "i"—Int32, "f"—Float, "d"—Double, "s"—String (by default the size is 10 and up to 100 registers); :* '''R:{N}[:w~]''', '''RI:{N}[:w~]''' — classic register and input register form, can be expanded by the suffixes: "i4"—Int32, "i8"—Int64, "f"—Float, "d"—Double, "s"—String :* '''C{N}[w]''', '''CI{N}[w]''', '''C:{N}[:w]''', '''CI:{N}[:w]''' — coil and input coil. :Where: :* '''{N}''' — ModBus device's data address (decimal, hexadecimal or octal) [0...65535]; :* '''w~e''' — flags: write mode 'w', registers order inversion '~', register 'e'ndian toggle (to LE in generic and BE for strings). :Examples: ::"R0x300w" — register access; ::"C100w" — coil access, allowed to write; ::"R_f200", "R_f200~" — get float from registers 200 and 201, 201 and 200; ::"R_i400,300" — get int32 from registers 400 and 300; ::"R_s15,20" — get string, registers block, from register 15 and size 20. ::"R_i8:0x10:w" — get and set int64 into registers [0x10-0x13]; ::"R_d:0x20,0x30" — get double float point (8 byte) from registers [0x20,0x30-0x32]. ; All other parameters are internal and used for a variety of intermediate calculations, processing, conversion and their values can be operative controlled and changed from the table into execution mode. * ''Name'' — name of the parameter, is used for the naming of the connection. * ''Type'' — type of the parameter from the list: "Real", "Integer", "Boolean" and "String". For the registers and bits of ModBus it makes sense to set the "Integer" and "Boolean" type, respectively. For registers, extended by "f" and "s" prefixes, you must specify the "Real" and "String" types respectively. * ''Link'' — a sign that this parameter should be connected with the parameter attribute of the subsystem "Data acquisition". The links indicated by this sign are set in the "Template configuration" tab. * ''Value'' — original or current value of the parameter, if the node is switched on. В таблице, по умолчанию, определяется несколько параметров специального назначения: * ''f_frq'' — частота вычисления таблицы программой; * ''f_start'' — признак первого исполнения — запуска программы. * ''f_stop'' — признак последнего исполнения — останова программы. [[File:at.png]] Поскольку в указателе расширенных типов регистров может использоваться недопустимый символ ',' то доступ к нему из программы можно осуществить только альтернативным способом, через объект "arguments": <syntaxhighlight lang="JavaScript"> arguments["R_s10,5w"] = "9876543210";</syntaxhighlight> [[File:ModBus_prt_node_data_ru.png|center|frame|Рис.3. Вкладка "Данные" страницы конфигурации узла протокола в режиме "Данные".]] Для параметров указанных в качестве связей, связи можно установить для включенного узла протокола и во вкладке "Конфигурация шаблона" (рис.4). [[File:ModBus_prt_node_lnk_ru.png|center|frame|Рис.4. Вкладка "Связи" страницы конфигурации узла протокола в режиме "Конфигурация шаблона".]] ==== Режим "Шлюз узла" ==== Режим используется для перенаправления запросов к отдельному устройству в другой сети ModBus, из сети ModBus для которой сконфигурирован данный узел. Общая конфигурация узла осуществляется во вкладке "Узел" (рис.5) параметрами: * Состояние узла, а именно: статус, "Включен" и имя БД, содержащей конфигурацию. * Идентификатор, имя и описание узла. * Состояние "Включен", в которое переводить узел при загрузке. * Адрес узла исходной сети ModBus от 1 до 247. * Входной транспорт, к сети которого относится узел. Выбирается из перечня [[Special:MyLanguage/Documents/Program_manual#TransportIn|входных транспортов]] подсистемы "Транспорты" OpenSCADA. Указание символа "*" в качестве транспорта делает данный узел участником любой сети ModBus с обработкой запросов от любого транспорта. * Вариант протокола ModBus запросы, в котором должен обрабатывать узел, из списка: Все, RTU, ASCII, TCP/IP. * Выбор режима, в данном случае этот режим "Шлюз узла". * Транспорт, в который перенаправлять запрос, из перечня [[Special:MyLanguage/Documents/Program_manual#TransportOut|исходящих транспортов]] подсистемы "Транспорты". * Протокол, в котором перенаправлять запрос. * Адрес узла сети ModBus, от 1 до 247, в которую перенаправляется запрос. [[File:ModBus_prt_node_nodeGwNode_ru.png|center|frame|Рис.5. Вкладка "Узел" страницы конфигурации узла протокола в режиме "Шлюз узла".]] ==== Режим "Шлюз сети" ==== Режим используется для перенаправления запросов сети целиком в другую сеть ModBus, из сети ModBus для которой сконфигурирован данный узел протокола. Т.е., запрос на устройство с любым адресом будет направляться в другую сеть, без переадресовки. Общая конфигурация узла протокола осуществляется во вкладке "Узел" (рис.6) параметрами: * Состояние узла, а именно: статус, "Включен" и имя БД, содержащей конфигурацию. * Идентификатор, имя и описание узла. * Состояние "Включен", в которое переводить узел при загрузке. * Входной транспорт сети, из которой перенаправляются запросы. Выбирается из перечня [[Special:MyLanguage/Documents/Program_manual#TransportIn|входных транспортов]] подсистемы "Транспорты" OpenSCADA. * Вариант протокола ModBus, запросы в котором должен обрабатывать узел, из списка: Все, RTU, ASCII, TCP/IP. * Выбор режима, в данном случае этот режим "Шлюз сети". * Транспорт сети, в которую перенаправлять запрос, из перечня [[Special:MyLanguage/Documents/Program_manual#TransportOut|выходных транспортов]] подсистемы "Транспорты". * Протокол, в котором перенаправлять запрос. [[File:ModBus_prt_node_nodeGwNet_ru.png|center|frame|Рис.6. Вкладка "Узел" страницы конфигурации узла протокола в режиме "Шлюз сети".]] === {{Anch|Report|Отчёт запросов ModBus}} === Для контроля и диагностики за корректностью осуществления запросов различными компонентами, модулем предоставляется возможность включения отчёта запросов, проходящих через модуль протокола. Отчёт включается указанием ненулевого количества записей во вкладе "Отчёт" страницы модуля протокола (рис.7). [[file:at.png]] Этот механизм в основном является устаревшим, поскольку его функции сейчас исполняются ядром программы: * [[Special:MyLanguage/Documents/Program_manual#DAQDiagnostic|диагностика источника данных]]; * [[Special:MyLanguage/Documents/Program_manual#TrDiagnostic|протокол трафику через транспорт]]. [[File:modbus_prt_rep_ru.png|center|frame|Рис.7. Вкладка "Отчёт" страницы модуля протокола.]] == {{Anch|DAQ|Модуль сбора данных}} == Модуль сбора данных предоставляет возможность опроса и записи регистров и битов устройств посредством режимов протокола TCP, RTU, ASCII и команд запроса '''1''' — '''6''', '''15''', '''16'''. === Объект контроллера === Для добавления источника данных ModBus создаётся и конфигурируется объект контроллера OpenSCADA. Пример вкладки конфигурации объекта контроллера данного типа изображен на рисунке 8. [[File:ModBus_cntr.png|center|frame|Рис.8. Вкладка конфигурации объекта контроллера.]] Using this tab you can set: * The state of the controller object, as follows: Status, "Enabled", "Running" and the name of the storage containing the configuration. :[[file:at.png]] Manual restart of the enabled controller object causes the force reformation of the acquisition blocks. * Identifier, name and description of the controller. * The state "Enabled" and "Running", in which the controller object must be translated at boot. * Policy of scheduling and priority of the data acquisition task. * ModBus protocol, used for requesting the real device (TCP/IP, RTU or ASCII). * Address of [[Special:MyLanguage/Documents/Program_manual#TransportOut|the output transport]] using the unified connection with navigation. Default port of the ModuBus/TCP is 502. The field may be set to empty and be changed at the runtime. Format of the address is: ** "'''{TrModule}.[out_]{TrID}[:{TrAddr}]'''" — typical output with automatic creation ''TrID'' at it missing and providing ''TrAddr''; ** "'''{TrModule}.in_{TrID}:{RemConId}'''" — initiative input with the connection identifier in ''RemConId''. * ModBus destination node. In the case of protocols RTU and ASCII this is the unique address of the physical device, and when TCP/IP this is the identifier of the unity. * Merging of the data fragments. Standard functions '''1'''-'''4''' let to request at once multiple adjacent registers or bits. This strategy often allows to optimize the traffic and time. However, the required registers are not always located adjacent to each other, this option allows you to gather them in blocks of up to 100 registers, or 1600 bits. :[[File:at.png]] Installing of this parameter must be approached with caution, since not all devices support access to the registers between fragments. * Using the multi-items writing functions ('''15''', '''16'''). Instead one-item writing will be used the multi-items functions. * Asynchronous write. Enables asynchronously writing of the changes to the controller, in the general acquisition cycle and after the data acquisition itself, blocking of reading the written values on one cycle (before the writing buffer clearing). : [[file:at.png]] This mode also prevents for loss the writing data at the connection loss and the wrote data will be transmitted just the connection will be restored. * Omit cycles for read back of written. Can be useful for PLC which applying the changes not fast and they are processed in some significant time depending on the PLC load. So, the cycles value then specifies count of the omitting read cycles before reading back the changed value, preventing the value twinkle. * Timeout of connection in milliseconds. Specifies the time interval during which the answer is expected. If there is zero waiting time the transport waiting time by default is used. Allows taking into account individual properties of the controller in the common network. * Timeout of restore in seconds. Specifies the time interval after which the re-attempt of the request to previously inaccessible device is done. * Request tries for the protocols RTU and ASCII. Indicates the number of attempts by the repetition of the request in case of incomplete or damaged answer. * Maximum size of the request block in bytes, useful for controllers with such limits. === Параметры === Модуль сбора данных предоставляет два типа параметра: "Стандартный (Prm)" и "Логический (PrmL)". Дополнительными конфигурационными полями параметров данного модуля являются: * '''''Стандартный (Prm)''''': ** ''Перечень атрибутов'' — содержит структурированный список конфигурации атрибутов ModBUS. * '''''Логический (PrmL)''''': ** ''Шаблон параметра'' — адрес шаблона параметра DAQ. ==== Стандартный (Prm) ==== Главная страница конфигурации параметра стандартного типа представлена на рисунке 9. [[File:ModBus_prm_ru.png|center|frame|Рис.9. Вкладка конфигурации параметра стандартного типа.]] One attribute line in the parameter of the attributes list can be written as "'''{dt}:{numb}[:{flg}[:{id}[:{name}]]]'''".<br/> Where: * ''dt'' — Modbus data type ("R"—register[3,6(16)], "C"—coil[1,5(15)], "RI" — input register[4], "CI"—input coil[2]); :"R" and "RI" can be expanded by the suffixes: "i2"—Int16, "i4"—Int32, "i8"—Int64, "u2"—UInt16, "u4"—UInt32, "f"—Float, "d"—Double, "b5"—Bit5, "b"—Bit in address, "s[CHARSET]"—String (size by default is 10 and up to 100 registers); * ''numb'' — ModBus data address of the device (decimal, hexadecimal or octal) [0...65535]; * ''flg'' — flags: read/write mode (r-read, w-write), strict requesting mode (not combining) 's', registers order inversion '~', register 'e'ndian toggle (to LE in generic and BE for strings); * ''id'' — identifier of the created attribute; * ''name'' — name of the created attribute. Примеры: :"R:0x300:rw:var:Variable" — доступ к регистру; :"C:100:rw:var1:Variable 1" — доступ к биту; :"R_f:200:r:float:Float", "R_f:200:r~:float:Float" — получить вещественное из регистров 200 и 201, 201 и 200; :"R_i4:400,300:r:int32:Int32" — получить int32 из регистров 400 и 300; :"R_b10:25:r:rBit:Reg bit", "R_b:25.10:r:rBit:Reg bit" — получить бит 10 из регистра 25; :"R_s:15,20:r:str:Reg blk" — получить строку (блок регистров) из регистра 15 и размером 20. Линия, которая начинается с символа '#', считается комментарием и не обрабатывается. В соответствии с указанным списком атрибутов выполняется опрос и создание атрибутов параметра (рис.10). [[File:ModBus_prm_atr_ru.png|center|frame|Рис.10. Вкладка атрибутов параметра стандартного типа.]] ==== Логический (PrmL) ==== Главная страница конфигурации параметра логического типа представлена на рисунке 11. [[File:ModBusLog_prm_ru.png|center|frame|Рис.11. Вкладка конфигурации параметра логического типа.]] Link value, when configuring the template (Fig.12), is written in the form '''{dt}:{numb}[:{flg}]'''.<br/> Where: * ''dt'' — ModBus data type ("R"—register[3,6(16)], "C"—coil[1,5(15)], "RI"—input register[4], "CI"—input coil[2]); :"R" and "RI" can be expanded by the suffixes: "i2"—Int16, "i4"—Int32, "i8"—Int64, "u2"—UInt16, "u4"—UInt32, "f"—Float, "d"—Double, "b5"—Bit5, "b"—Bit in address, "s[CHARSET]"—String (size by default is 10 and up to 100 registers); * ''numb'' — ModBus data address of the device (decimal, hexadecimal or octal) [0...65535]; * ''flg'' — flags: read/write mode (r-read; w-write), registers order inversion '~', register 'e'ndian toggle (to LE in generic and BE for strings). Примеры: :"R:0x300:rw" — доступ к регистру; :"C:100:rw" — доступ к биту; :"R_f:200:r", "R_f:200:r~" — получить вещественное из регистров 200 и 201, 201 и 200; :"R_i4:400,300:r" — получить int32 из регистров 400 и 300; :"R_b10:25:r", "R_b:25.10:r" — получить бит 10 из регистра 25; :"R_s:15,20:r" — получить строку (блок регистров) из регистра 15 и размером 20. [[File:modbusLog_tmpl_ru.png|center|frame|Рис.12. Вкладка "Конфигурация шаблона" параметра логического типа.]] Модулем предусмотрена особая обработка ряда атрибутов шаблона: * ''f_frq'' — частота вычисления процедуры шаблона или время после последнего вычисления (отрицательное в секундах) для планирования по CRON, только чтение. * ''f_start'' — флаг первого выполнения процедуры шаблона — запуск, только чтение. * ''f_stop'' — флаг последнего выполнения процедуры шаблона — останов, только чтение. * ''f_err'' — ошибка параметра, полный доступ. Значение этого атрибута шаблона попадает в атрибут ошибки параметра "err". Записать сюда '''EVAL''' для возможности установки извне атрибута "err" и всех других в режиме Только для Чтения. * ''SHIFR'' — значение шифра параметра, только чтение. * ''NAME'' — значение имени параметра, только чтение. * ''DESCR'' — значение описания параметра, только чтение. * ''this'' — объект данного параметра, позволяет получить доступ к атрибутам параметра, например, для доступа к архивам-истории. В соответствии с шаблоном, лежащим в основе параметра, мы получаем набор атрибутов параметра (рис.13). [[File:modbusLog_prm_atr_ru.png|center|frame|Рис.13. Вкладка атрибутов параметра логического типа.]] === {{Anch|UserAPI|API пользовательского программирования}} === В виду поддержки параметров логического типа, имеет смысл предоставление ряда функций пользовательского API для их вызова из шаблона логического параметра. <section begin=API /> [[File:Oscada UserOM ModBus_ru.png|right|Объектная модель пользователя модуля ModBus.]] '''Объект "Контроллер" [this.cntr()]''' * ''string messIO(string pdu)'' — отправка PDU ''pdu'' через транспорт объекта контроллера посредством ModBus протокола. PDU результата запроса помещается вместо запроса в ''pdu'', а ошибка возвращается в результате функции. '''Объект "Параметр" [this]''' * ''bool attrAdd( string id, string name, string tp = "real", string selValsNms = "" )'' [<span style="color: red">для включенного параметра логического типа</span>] — добавление атрибута ''id'' с именем ''name'' и типом ''tp''. Если атрибут уже присутствует то будут применены свойства, которые возможно изменить "на ходу": имя, режим выбора и параметры выбора. ** ''id, name'' — идентификатор и имя нового атрибута; ** ''tp'' — тип атрибута [boolean | integer | real | string | text | object] + режим выбора [sel | seled] + только для чтения [ro]; ** ''selValsNms'' — две строки со значениями в первой и их именами во второй, разделённые ";". * ''bool attrDel( string id )'' [<span style="color: red">для включенного параметра логического типа</span>] — удаление атрибута ''id''. <section end=API /> == Ссылки == * [[:File:Oscada UserOM ModBus_ru.odg|Диаграмма: Объектная модель пользователя модуля ModBus.]]
Navigation menu
OpenSCADA
Site
Download
Old Wiki
OpenSCADA Wiki
Home
About OpenSCADA
Functions and demands
Tasks
Using
Fund
Recent changes
Random page
Search
Tools
Special pages
Printable version
MediaWiki
Help
Personal tools
English
Log in