diff --git a/_sources/example_applications.rst.txt b/_sources/example_applications.rst.txt index 5d0f91b..ed7abf7 100644 --- a/_sources/example_applications.rst.txt +++ b/_sources/example_applications.rst.txt @@ -64,7 +64,7 @@ ASCII however). # int noProcessEos); drvAsynIPPortConfigure("Koyo1","164.54.160.158:502",0,0,0) asynSetOption("Koyo1",0, "disconnectOnReadTimeout", "Y") - m#modbusInterposeConfig(const char *portName, + #modbusInterposeConfig(const char *portName, # modbusLinkType linkType, # int timeoutMsec, # int writeDelayMsec) diff --git a/acknowledgments.html b/acknowledgments.html index 6aa2a0b..387262d 100644 --- a/acknowledgments.html +++ b/acknowledgments.html @@ -102,7 +102,7 @@

Acknowledgments

© Copyright 2023, Mark Rivers. - Last updated on 2024-March-22. + Last updated on 2024-March-25.

diff --git a/creating_driver.html b/creating_driver.html index e80eafc..d88cfed 100644 --- a/creating_driver.html +++ b/creating_driver.html @@ -581,7 +581,7 @@

Number formats

© Copyright 2023, Mark Rivers. - Last updated on 2024-March-22. + Last updated on 2024-March-25.

diff --git a/debugging.html b/debugging.html index 9ea1a54..b69e575 100644 --- a/debugging.html +++ b/debugging.html @@ -222,7 +222,7 @@

asynRegister.adl

© Copyright 2023, Mark Rivers. - Last updated on 2024-March-22. + Last updated on 2024-March-25.

diff --git a/device_support.html b/device_support.html index a492d33..bb28f26 100644 --- a/device_support.html +++ b/device_support.html @@ -799,7 +799,7 @@

Template files

© Copyright 2023, Mark Rivers. - Last updated on 2024-March-22. + Last updated on 2024-March-25.

diff --git a/driver_architecture.html b/driver_architecture.html index feaa447..f9da71f 100644 --- a/driver_architecture.html +++ b/driver_architecture.html @@ -261,7 +261,7 @@

Platform independence

© Copyright 2023, Mark Rivers. - Last updated on 2024-March-22. + Last updated on 2024-March-25.

diff --git a/example_applications.html b/example_applications.html index ec050ea..2778337 100644 --- a/example_applications.html +++ b/example_applications.html @@ -133,7 +133,7 @@

Example Applications# int noProcessEos); drvAsynIPPortConfigure("Koyo1","164.54.160.158:502",0,0,0) asynSetOption("Koyo1",0, "disconnectOnReadTimeout", "Y") -m#modbusInterposeConfig(const char *portName, +#modbusInterposeConfig(const char *portName, # modbusLinkType linkType, # int timeoutMsec, # int writeDelayMsec) @@ -292,7 +292,7 @@

Example Applications

© Copyright 2023, Mark Rivers. - Last updated on 2024-March-22. + Last updated on 2024-March-25.

diff --git a/genindex.html b/genindex.html index 2db63f9..a5f6bef 100644 --- a/genindex.html +++ b/genindex.html @@ -91,7 +91,7 @@

Index

© Copyright 2023, Mark Rivers. - Last updated on 2024-March-22. + Last updated on 2024-March-25.

diff --git a/index.html b/index.html index d2f6663..1ee0fc5 100644 --- a/index.html +++ b/index.html @@ -167,7 +167,7 @@

Table of Contents

© Copyright 2023, Mark Rivers. - Last updated on 2024-March-22. + Last updated on 2024-March-25.

diff --git a/medm_screens.html b/medm_screens.html index bc25fe2..2885da6 100644 --- a/medm_screens.html +++ b/medm_screens.html @@ -187,7 +187,7 @@

Koyo_4ADC.adl

© Copyright 2023, Mark Rivers. - Last updated on 2024-March-22. + Last updated on 2024-March-25.

diff --git a/overview.html b/overview.html index cbced45..b21278f 100644 --- a/overview.html +++ b/overview.html @@ -383,7 +383,7 @@

More information on Modbus

© Copyright 2023, Mark Rivers. - Last updated on 2024-March-22. + Last updated on 2024-March-25.

diff --git a/search.html b/search.html index 2e57b84..6af48b8 100644 --- a/search.html +++ b/search.html @@ -99,7 +99,7 @@

© Copyright 2023, Mark Rivers. - Last updated on 2024-March-22. + Last updated on 2024-March-25.

diff --git a/searchindex.js b/searchindex.js index 03d2196..49e0a5b 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["acknowledgments", "creating_driver", "debugging", "device_support", "driver_architecture", "example_applications", "index", "medm_screens", "overview"], "filenames": ["acknowledgments.rst", "creating_driver.rst", "debugging.rst", "device_support.rst", "driver_architecture.rst", "example_applications.rst", "index.rst", "medm_screens.rst", "overview.rst"], "titles": ["Acknowledgments", "Creating a modbus port driver", "Debug tracing", "EPICS device support", "Driver architecture", "Example Applications", "modbus", "medm screens", "Overview of Modbus"], "terms": {"The": [0, 1, 2, 3, 4, 5, 7, 8], "modbu": [0, 2, 3, 5, 7], "packag": [0, 8], "i": [0, 1, 2, 3, 4, 5, 6, 7, 8], "base": [0, 1], "modtcp": 0, "plctcp": 0, "written": [0, 1, 2, 3, 4, 7], "rolf": 0, "keitel": 0, "from": [0, 1, 2, 3, 4, 5, 7, 8], "triumf": 0, "wa": [0, 3, 4], "origin": 0, "convert": [0, 1, 5], "linux": [0, 4, 5], "ivan": 0, "so": [0, 1, 3, 4, 8], "nsl": 0, "extens": [0, 4], "re": 0, "convers": [0, 1, 3, 5], "epic": [0, 1, 2, 4, 5, 6], "3": [0, 1, 2, 3, 4, 5, 7, 8], "14": [0, 1], "us": [0, 1, 2, 3, 4, 5, 6, 7, 8], "asyn": [0, 1, 2, 3, 4, 5, 6], "modul": [0, 1, 4, 6], "It": [0, 1, 3, 4, 5, 7, 8], "now": 0, "contain": [0, 1, 3, 8], "littl": [0, 1], "code": [0, 1, 3, 4, 5, 6, 7], "retain": 0, "much": [0, 4, 8], "architectur": [0, 6], "befor": [1, 4], "can": [1, 2, 3, 4, 5, 8], "necessari": [1, 3, 4], "first": [1, 3, 5], "least": 1, "one": [1, 2, 3, 4, 5], "commun": [1, 4, 6, 7], "hardwar": [1, 4], "command": [1, 2, 3, 4, 5], "requir": [1, 3, 4], "depend": [1, 3, 4], "link": [1, 3, 6], "being": [1, 2, 3, 4, 7], "For": [1, 2, 3, 4, 5, 8], "follow": [1, 2, 3, 4, 5, 7, 8], "standard": [1, 3, 4, 8], "drvasynipportconfigur": [1, 5], "portnam": [1, 3, 5], "hostinfo": [1, 5], "prioriti": [1, 5], "noautoconnect": [1, 5], "noprocesseo": [1, 5], "document": [1, 3, 8], "thi": [1, 2, 3, 4, 5, 6, 7, 8], "found": [1, 8], "asyndriv": 1, "exampl": [1, 2, 3, 4, 6, 7], "an": [1, 2, 3, 4, 5, 6, 7, 8], "call": [1, 4, 5], "koyo1": [1, 2, 5, 6], "502": [1, 2, 5, 8], "address": [1, 3, 4, 5, 6], "164": [1, 2, 5], "54": [1, 2, 5], "160": [1, 2, 5], "158": [1, 2, 5], "default": [1, 3], "flag": 1, "set": [1, 2, 3, 4, 5], "0": [1, 2, 3, 4, 5, 8], "asynmanag": [1, 4], "do": [1, 4, 5], "normal": [1, 3, 4, 5, 8], "automat": 1, "connect": [1, 2, 5, 8], "manag": 1, "asyninterposeeo": 1, "interfac": [1, 2, 3, 4, 5, 7], "handl": [1, 4], "end": [1, 3, 8], "string": [1, 3], "eo": 1, "process": [1, 2, 3, 4], "which": [1, 3, 5, 8], "need": [1, 4, 5], "howev": [1, 4, 5], "also": [1, 2, 3, 4, 5, 8], "issu": 1, "repeat": 1, "read": [1, 2, 3, 5, 6, 7, 8], "request": [1, 2, 4, 8], "until": [1, 3], "byte": [1, 3, 5, 8], "ha": [1, 3, 4, 5], "been": [1, 4, 5], "receiv": [1, 4], "low": [1, 4], "level": [1, 2, 4, 7, 8], "doe": [1, 3, 4, 5], "send": [1, 4], "respons": [1, 4, 8], "singl": [1, 3, 4, 5, 8], "packet": [1, 8], "mai": [1, 4, 5, 8], "asyninterpos": 1, "harm": 1, "definit": 1, "when": [1, 2, 3, 4, 5, 8], "talk": 1, "termin": [1, 3], "server": [1, 2, 4, 5, 8], "over": [1, 8], "becaus": [1, 3, 4], "well": 1, "broken": 1, "up": [1, 3, 4, 5], "multipl": [1, 3, 4, 5, 8], "recommend": 1, "even": [1, 4], "actual": [1, 2, 3], "drvasynserialportconfigur": [1, 5], "ttynam": [1, 5], "asynsetopt": [1, 5], "addr": [1, 2, 3], "kei": 1, "valu": [1, 2, 3, 4, 5, 7, 8], "local": 1, "dev": [1, 5], "ttys1": [1, 5], "paramet": [1, 3, 4, 5], "ar": [1, 2, 3, 4, 5, 7, 8], "configur": [1, 4, 5], "38400": [1, 5], "baud": [1, 5], "pariti": [1, 5], "8": [1, 3, 5, 8], "bit": [1, 3, 4, 5, 7, 8], "1": [1, 2, 3, 4, 5, 7, 8], "stop": [1, 5], "none": [1, 5], "same": [1, 3, 4, 5], "describ": [1, 4, 8], "abov": [1, 3, 4, 7, 8], "after": [1, 3, 4, 5], "asynoctetsetoutputeo": [1, 5], "asynoctetsetinputeo": [1, 5], "input": [1, 3, 4, 5, 6, 7], "output": [1, 2, 3, 4, 5, 7, 8], "cr": [1, 8], "lf": [1, 8], "r": [1, 3, 5, 8], "n": [1, 5], "asynipport": 1, "asynserialport": 1, "next": 1, "step": 1, "add": 1, "interpos": [1, 4], "take": 1, "independ": [1, 6], "frame": [1, 4, 8], "remov": 1, "specif": [1, 2, 3, 8], "inform": [1, 2, 6], "protocol": [1, 4, 8], "linktyp": [1, 5], "timeoutmsec": [1, 5], "writedelaymsec": [1, 5], "descript": [1, 3, 8], "name": [1, 3], "previous": 1, "int": [1, 5], "layer": [1, 4, 8], "2": [1, 2, 3, 4, 5, 8], "timeout": [1, 3], "millisecond": [1, 3], "write": [1, 2, 3, 5, 6, 7, 8], "oper": [1, 3, 4, 8], "underli": [1, 2, 4], "asynoctet": [1, 4, 6], "place": 1, "specifi": [1, 3, 4, 8], "support": [1, 4, 5, 6, 8], "If": [1, 3, 4], "zero": [1, 5], "2000": [1, 3, 4, 8], "delai": [1, 3, 4, 5], "each": [1, 2, 3, 4, 5, 7, 8], "typic": [1, 4, 8], "onli": [1, 3, 4, 5, 8], "modicon": 1, "refer": [1, 3], "guid": 1, "sai": 1, "must": [1, 4, 5], "5": [1, 2, 3, 4, 5, 7, 8], "charact": [1, 3, 4, 8], "time": [1, 2, 3, 4, 7, 8], "e": [1, 3, 4, 8], "g": [1, 3, 4], "about": [1, 8], "5m": 1, "9600": 1, "would": [1, 4, 5], "second": [1, 3, 4], "m": [1, 5], "1000": [1, 5], "onc": [1, 3, 4], "modbusinterpos": 1, "tcpportnam": 1, "slaveaddress": 1, "modbusfunct": [1, 2], "modbusstartaddress": [1, 2, 4], "modbuslength": [1, 2, 3], "datatyp": [1, 3], "pollmsec": 1, "plctype": [1, 2], "slave": [1, 5, 7, 8], "match": 1, "plc": [1, 2, 3, 4, 5, 7, 8], "unit": 1, "identifi": 1, "last": [1, 2, 3, 4, 5], "field": [1, 2, 3, 4], "mbap": 1, "header": 1, "ignor": 1, "most": [1, 5], "some": [1, 3, 4, 8], "function": [1, 3, 5, 6, 7], "4": [1, 2, 3, 4, 5, 7, 8], "6": [1, 2, 3, 4, 5, 7, 8], "15": [1, 3, 4, 5, 8], "16": [1, 3, 4, 5, 8], "17": [1, 2, 4, 8], "123": [1, 4, 8], "23": [1, 3, 4, 8], "223": [1, 4], "start": [1, 3, 4, 5, 8], "segment": 1, "access": [1, 2, 3, 4, 5, 7, 8], "rel": [1, 3, 4], "rang": [1, 3, 4], "65535": 1, "decim": [1, 5, 8], "0177777": 1, "octal": [1, 5, 8], "absolut": [1, 3, 4], "length": [1, 3, 5, 6], "word": [1, 3, 4, 5, 8], "limit": [1, 3, 4, 6], "1968": [1, 8], "125": [1, 3, 4, 8], "size": 1, "largest": 1, "all": [1, 2, 4, 5, 8], "64": [1, 3], "float": 1, "100": [1, 5], "int32": 1, "waveform": [1, 3, 5, 7], "record": [1, 2, 3, 4, 5, 7], "nelm": [1, 3], "50": 1, "modbusdatatyp": [1, 6], "drvuser": [1, 3], "empti": 1, "modbus_data": [1, 3], "list": [1, 3, 8], "tabl": [1, 3, 8], "below": [1, 4], "argument": [1, 2, 3], "either": [1, 3, 4], "shown": [1, 7], "defin": [1, 3, 8], "drvmodbusasyn": [1, 2, 5], "h": [1, 4], "numer": [1, 5], "modbusdatatype_t": 1, "enum": 1, "less": [1, 4, 8], "conveni": 1, "understand": 1, "equival": 1, "chang": [1, 4], "between": [1, 3, 4, 8], "r3": [1, 4], "startup": [1, 5], "script": [1, 5], "int16": [1, 3], "uint16": [1, 3], "were": [1, 3], "swap": 1, "everyth": 1, "beyond": 1, "int32_l": [1, 3], "differ": [1, 4, 5, 8], "poll": [1, 3, 4], "msec": [1, 2, 3, 4, 7], "thread": [1, 3, 4], "non": [1, 5], "mean": [1, 3, 4], "should": [1, 3, 4], "koyo": [1, 2, 3, 5, 7, 8], "etc": [1, 3, 4], "current": [1, 4, 8], "print": [1, 2, 3], "asynreport": [1, 2], "treat": 1, "special": [1, 3, 4, 8], "substr": 1, "see": 1, "how": [1, 2, 5], "interpret": 1, "sign": [1, 5], "unsign": [1, 5], "binari": [1, 5, 8], "bcd": [1, 5], "In": [1, 4, 5], "fact": [1, 4], "mani": [1, 4], "manufactur": [1, 8], "combin": 1, "encod": [1, 8], "32": [1, 2, 3, 5], "integ": [1, 8], "particular": [1, 4], "overrid": [1, 3], "transfer": [1, 2, 3, 8], "epicsuint32": [1, 3], "epicsint32": [1, 3], "epicsint64": [1, 3], "epicsfloat64": [1, 3], "appli": [1, 4], "asynint32": [1, 2, 4, 5, 6], "asynint64": [1, 4, 5, 6], "asynfloat64": [1, 2, 4, 5, 6, 7], "thei": [1, 4], "asynuint32digit": [1, 2, 4, 6], "alwai": 1, "": [1, 8], "complement": 1, "extend": 1, "int16sm": [1, 3], "magnitud": [1, 5], "adc": [1, 7], "bcd_unsign": 1, "consist": [1, 4, 5, 8], "nibbl": 1, "9": [1, 2, 5, 8], "A": [1, 4, 5, 8], "thu": [1, 3], "store": [1, 4], "9999": 1, "bcd_sign": [1, 3], "digit": [1, 3], "hold": [1, 3, 4, 5, 6], "7999": 1, "endian": 1, "signific": 1, "int32_le_b": 1, "within": [1, 4, 8], "int32_b": [1, 3], "big": 1, "int32_be_b": 1, "uint32_l": 1, "uint32_le_b": 1, "uint32_b": 1, "uint32_be_b": 1, "int64_l": 1, "int64_le_b": 1, "int64_b": 1, "int64_be_b": 1, "uint64_l": 1, "uint64_le_b": 1, "uint64_b": 1, "uint64_be_b": 1, "float32_l": [1, 3], "point": [1, 4], "float32_le_b": 1, "float32_b": [1, 3], "float32_be_b": 1, "float64_l": 1, "float64_le_b": 1, "float64_b": 1, "float64_be_b": 1, "string_high": [1, 3], "One": [1, 2, 4, 5], "high": 1, "string_low": [1, 3], "string_high_low": [1, 3], "two": 1, "string_low_high": [1, 3], "zstring_high": [1, 3], "zstring_low": [1, 3], "zstring_high_low": [1, 3], "zstring_low_high": [1, 3], "desir": 1, "transmit": [1, 8], "untransl": 1, "translat": 1, "done": [1, 3, 4], "case": [1, 4], "zstring_": [1, 3], "meant": 1, "ident": 1, "string_": 1, "counterpart": 1, "_be": 1, "order": [1, 3], "ieee": 1, "machin": 1, "_be_b": 1, "_le": 1, "compar": 1, "_le_b": 1, "backward": 1, "compat": 1, "previou": [1, 4], "version": 1, "ad": [1, 4], "ai": [1, 3, 5, 7], "templat": [1, 6], "p": [1, 3], "dtyp": [1, 3], "inp": [1, 3], "offset": [1, 3, 5, 8], "hopr": [1, 3], "lopr": [1, 3], "prec": [1, 3], "scan": [1, 3, 4], "initi": [1, 3, 4], "other": [1, 3, 4, 8], "back": [1, 4], "0x200": 1, "greater": 1, "than": [1, 4, 8], "readback": [1, 3, 7], "sensit": 1, "affect": 1, "user": 1, "separ": [1, 4, 5], "socket": 1, "possibl": [1, 4], "have": [1, 4], "share": 1, "o": [1, 2, 3, 4, 5, 7, 8], "fashion": 1, "transact": [1, 4], "complet": [1, 3], "anoth": [1, 5], "begin": [1, 5], "proce": 1, "parallel": 1, "rather": [1, 4, 8], "could": [1, 4, 5], "improv": [1, 4], "perform": [1, 2, 4, 5, 8], "expens": 1, "more": [1, 2, 6], "cpu": 1, "load": [1, 2, 5], "ioc": [1, 4, 5, 7], "network": [1, 8], "traffic": 1, "import": 1, "out": 1, "few": 1, "inact": 1, "problem": 1, "frequent": 1, "But": 1, "occasion": 1, "henc": [1, 3], "ones": 1, "through": 1, "usual": [1, 4], "avoid": [1, 4], "choic": 1, "per": [1, 3], "empir": 1, "versu": [1, 7], "resourc": 1, "usag": 1, "consider": 1, "gener": [1, 3, 4], "probabl": 1, "good": [1, 4], "idea": 1, "result": [1, 4], "satisfactori": 1, "convent": 1, "iocsh": [1, 2], "vxwork": [1, 2, 4, 5], "shell": [1, 2], "lead": [1, 5], "040400": [1, 2, 5, 8], "obtain": [2, 4], "diagnost": 2, "port": [2, 3, 4, 5, 6, 8], "driver": [2, 3, 5, 6, 7, 8], "dbior": 2, "asynprint": 2, "brief": 2, "report": [2, 8], "includ": [2, 3, 5, 8], "drvasynipport": [2, 4, 6], "drvasynserialport": [2, 4], "partial": 2, "applic": [2, 6, 7, 8], "via": [2, 4], "tcp": [2, 4, 5, 6, 7, 8], "multidevic": 2, "No": 2, "canblock": 2, "ye": 2, "autoconnect": 2, "k1_xn_bit": [2, 5], "enabl": [2, 3, 4, 5], "exceptionact": 2, "7": [2, 8], "k1_xn_word": [2, 5], "To": 2, "detail": 2, "numberconnect": 2, "ndevic": 2, "nqueu": 2, "block": [2, 4], "asynmanagerlock": 2, "synchronouslock": 2, "exceptionus": 2, "exceptionnotifi": 2, "interfacelist": 2, "asyncommon": [2, 3], "pinterfac": 2, "0x4001d180": 2, "drvpvt": 2, "0x8094f78": 2, "asyndrvus": [2, 3], "0x4001d10c": 2, "0x4001d118": 2, "0x4001d134": 2, "0x4001d148": 2, "asynint32arrai": [2, 6], "0x4001d158": 2, "010": [2, 5], "error": [2, 3], "ok": 2, "5728": 2, "polldelai": 2, "100000": 2, "max": 2, "12": [2, 3], "run": [2, 3, 4, 5, 7, 8], "asynsettracemask": [2, 5], "asynsettraceiomask": [2, 5], "show": [2, 5, 7], "traceiohex": 2, "traceerror": 2, "traceiodriv": 2, "2007": 2, "04": 2, "27": 2, "45": 2, "384": 2, "00": [2, 8], "01": 2, "07": 2, "ff": 2, "02": 2, "08": 2, "20": 2, "390": 2, "13": [2, 5, 7], "424": 2, "03": 2, "41": 2, "432": 2, "25": 2, "10": 2, "turn": 2, "off": 2, "k1_yn_in_word": [2, 5], "31": 2, "548": 2, "domodbusio": [2, 4], "read_regist": 2, "09": 2, "656": 2, "770": 2, "878": 2, "987": 2, "disabl": [2, 3], "channel": [2, 5], "medm": [2, 6], "screen": [2, 6], "method": [2, 4], "shot": [2, 7], "control": [2, 3, 4, 5, 7, 8], "y1": 2, "note": [2, 3, 4, 5, 6, 8], "select": [2, 3], "data": [2, 3, 4, 5, 6, 7], "sent": [2, 3, 8], "ifac": [2, 3], "tmod": [2, 3], "ui32out": 2, "implement": [3, 4], "entir": [3, 4], "provid": [3, 4, 7, 8], "itself": [3, 4], "There": [3, 4, 5], "part": [3, 4], "r4": 3, "later": [3, 4], "minor": 3, "enhanc": 3, "made": 3, "featur": [3, 5], "determin": 3, "what": [3, 4], "option": [3, 5], "type": [3, 5, 6, 7], "drvmodbusasynconfigur": [3, 4, 5, 6], "locat": [3, 4, 8], "discret": [3, 4, 6, 7], "coil": [3, 4, 5, 6, 7], "04000": [3, 5, 8], "04002": 3, "x": [3, 4, 5, 8], "x2": 3, "regist": [3, 4, 5, 6, 7], "040600": [3, 5, 8], "040602": 3, "c": [3, 4, 5, 8], "relai": [3, 5, 8], "third": [3, 4], "c40": 3, "c57": 3, "asynmask": 3, "mask": [3, 4], "bi": [3, 5], "mbbi": 3, "mbbidirect": [3, 5], "longin": [3, 5], "interest": [3, 4], "bo": [3, 5], "mbbo": 3, "mbbodirect": [3, 5], "longout": [3, 5], "0xffff": [3, 4], "els": 3, "modifi": [3, 4], "clear": 3, "ani": [3, 4, 5], "na": 3, "enable_histogram": 3, "return": 3, "histogram": [3, 7], "nbit": 3, "syntax": 3, "analog": 3, "number": [3, 5, 6, 7], "know": [3, 4], "cannot": [3, 4], "meaning": 3, "getbound": 3, "unipolar": 3, "4095": 3, "bipolar": [3, 5, 7], "2048": [3, 8], "2047": 3, "atom": [3, 4], "messag": [3, 8], "short": 3, "period": [3, 4], "incorrect": 3, "ao": [3, 5, 7], "modbus_read": 3, "forc": 3, "poller": [3, 4], "immedi": [3, 4], "regardless": 3, "poll_delai": 3, "read_ok": 3, "success": 3, "write_ok": 3, "io_error": 3, "last_io_tim": 3, "max_io_tim": 3, "maximum": 3, "histogram_bin_tim": 3, "bin": [3, 5], "statist": [3, 7], "int64in": [3, 5], "epicsuint64": 3, "int64out": [3, 5], "epicsuint16": 3, "woken": 3, "epicsev": 3, "signal": 3, "happen": 3, "asynint32arrayin": 3, "asynint32arrayout": 3, "arrai": [3, 5], "read_histogram": 3, "sinc": 3, "histogram_time_axi": 3, "axi": 3, "element": 3, "asynoctetread": 3, "number_of_charact": 3, "asynoctetwrit": 3, "250": [3, 8], "stringout": 3, "On": 3, "lesser": 3, "minu": 3, "39": 3, "stringin": 3, "whether": 3, "truncat": 3, "guarante": [3, 4], "correct": [3, 4], "br": 3, "modbusapp": [3, 5, 7], "db": 3, "directori": [3, 5, 7, 8], "These": [3, 4, 5, 7], "macro": 3, "bi_bit": 3, "znam": 3, "onam": 3, "zsv": 3, "osv": 3, "bo_bit": 3, "bi_word": 3, "bo_word": 3, "longinint32": 3, "data_typ": 3, "longoutint32": 3, "linear": 3, "egul": 3, "eguf": 3, "ai_averag": 3, "asynint32averag": 3, "get": 3, "callback": 3, "averag": 3, "intarray_in": 3, "intarray_out": 3, "aifloat64": 3, "aofloat64": 3, "initial_readback": 3, "stringwaveformin": 3, "stringwaveformout": 3, "asynrecord": [3, 6], "trace": [3, 6], "debug": [3, 5, 6], "poll_trigg": 3, "trigger": 3, "explain": 3, "preced": 3, "prefix": 3, "sever": [3, 4, 5], "blank": 3, "allow": [3, 4, 5], "engin": 3, "lower": 3, "upper": 3, "displai": 3, "precis": 3, "mode": [3, 4], "rate": 3, "intr": [3, 4], "caution": 4, "memori": [4, 5, 6], "ladder": [4, 5], "logic": [4, 5, 8], "program": [4, 5, 8], "dumb": 4, "subsystem": 4, "resid": 4, "design": [4, 5], "carefulli": 4, "might": 4, "y": [4, 5, 8], "restrict": 4, "small": 4, "c200": [4, 7], "c240": 4, "monitor": 4, "consid": 4, "them": 4, "act": 4, "upon": 4, "safe": 4, "top": [4, 7], "down": 4, "devic": [4, 5, 6, 8], "purpos": [4, 5], "client": [4, 8], "prior": 4, "class": 4, "inherit": 4, "asynportdriv": 4, "export": 4, "its": 4, "wai": 4, "easi": 4, "addit": [4, 8], "rtu": [4, 5, 6, 8], "ascii": [4, 5, 6, 8], "both": [4, 5], "overli": 4, "ip": [4, 5, 6, 7, 8], "serial": [4, 5, 6, 8], "make": 4, "exist": 4, "facil": 4, "amount": 4, "quit": 4, "fewer": 4, "900": 4, "line": 4, "assign": 4, "contigu": 4, "creat": [4, 5, 6], "x0": [4, 5, 7], "x37": [4, 5, 7], "c0": [4, 5, 7], "c377": [4, 5, 7], "c300": 4, "space": [4, 8], "still": 4, "pass": 4, "arbitrari": 4, "io": 4, "behavior": 4, "spawn": 4, "buffer": 4, "asynchron": 4, "although": 4, "directli": [4, 8], "wait": 4, "mutex": 4, "indic": 4, "whenev": 4, "new": 4, "effici": [4, 8], "paragraph": 4, "where": 4, "caus": 4, "proc": 4, "reason": 4, "tell": 4, "execut": 4, "0x0": 4, "minimum": 4, "modbusinterposeconfig": [4, 5, 6], "wide": 4, "fit": 4, "model": [4, 8], "like": [4, 5], "test": [4, 5], "x86": [4, 5], "x86_64": 4, "ppc32": 4, "win32": 4, "window": 4, "x64": 4, "nativ": 4, "microsoft": 4, "visual": 4, "studio": 4, "compil": 4, "thing": 4, "structur": 4, "pack": 4, "pragma": 4, "direct": [4, 5], "gnu": 4, "appropri": [4, 5], "build": 5, "iocboot": 5, "ioctest": 5, "dl": 5, "seri": 5, "autom": 5, "cmd": [5, 7], "v": [5, 6], "koyo2": [5, 6], "d": 5, "plu": 5, "format": [5, 6], "st": 5, "simpl": 5, "just": 5, "invok": 5, "envpath": 5, "dbloaddatabas": 5, "dbd": 5, "modbusapp_registerrecorddevicedriv": 5, "pdbbase": 5, "const": 5, "char": 5, "disconnectonreadtimeout": 5, "modbuslinktyp": 5, "5000": 5, "we": 5, "nomenclatur": 5, "hex": 5, "dl205": [5, 7], "xn": 5, "4000": 5, "040": 5, "40400": 5, "128": 5, "yn": 5, "y0": [5, 7], "y37": 5, "k1_yn_in_bit": 5, "k1_yn_out_bit": 5, "40500": 5, "040500": [5, 8], "k1_yn_out_word": 5, "cn": 5, "6000": 5, "256": 5, "k1_cn_in_bit": 5, "06000": [5, 8], "0400": 5, "k1_cn_out_bit": 5, "k1_cn_out_bit_arrai": 5, "40600": 5, "k1_cn_in_word": 5, "020": 5, "k1_cn_out_word": 5, "k1_cn_out_word_arrai": 5, "asyn_traceio_hex": 5, "octet": 5, "asyn_trace_error": 5, "asyn_traceio_driv": 5, "255": 5, "dump": 5, "512": [5, 8], "asyntrac": 5, "asynsettraceiotruncates": 5, "dbloadtempl": 5, "substitut": [5, 7], "iocinit": 5, "demonstr": 5, "realist": 5, "practic": 5, "testdatatyp": [5, 7], "file": [5, 6, 7], "modbusf1_a0_128bit": 5, "mb": 5, "modbusf3_a200_80word": 5, "modbusf3_a300_80word": 5, "inexpens": 5, "emul": 5, "simul": [5, 7], "modbusf3_a100_80word": 5, "200": 5, "300": 5, "testclient": 5, "cpp": 5, "instanti": 5, "object": [5, 8], "extern": 5, "pure": 5, "without": [5, 8], "author": 6, "mark": 6, "river": 6, "univers": 6, "chicago": 6, "acknowledg": 6, "overview": 6, "platform": 6, "wago": 6, "adl": 6, "koyo_8input": 6, "koyo_8output": 6, "modbusarrai": 6, "modbusstatist": 6, "koyo_4adc": 6, "asynregist": 6, "op": 7, "agre": 7, "correctli": 7, "x7": 7, "c207": 7, "y7": 7, "event": 7, "cycl": 7, "posit": 8, "osi": 8, "buse": 8, "system": 8, "programm": 8, "232": 8, "422": 8, "485": 8, "crc": 8, "check": 8, "detect": 8, "though": 8, "common": 8, "lrc": 8, "reliabl": 8, "environ": 8, "primari": 8, "comment": 8, "alter": 8, "repli": 8, "vendor": 8, "id": 8, "commonli": 8, "dl05": 8, "06": 8, "240": 8, "260": 8, "430": 8, "440": 8, "450": 8, "sp": 8, "3072": 8, "timer": 8, "contact": 8, "t": 8, "6144": 8, "014000": 8, "counter": 8, "ct": 8, "6400": 8, "014400": 8, "stage": 8, "statu": 8, "012000": 8, "ta": 8, "cta": 8, "01000": 8, "global": 8, "vgx": 8, "16384": 8, "040000": 8, "vgy": 8, "16512": 8, "040200": 8, "vx": 8, "16640": 8, "vy": 8, "16704": 8, "vc": 8, "16768": 8, "16896": 8, "041000": 8, "vt": 8, "16960": 8, "041100": 8, "vct": 8, "16992": 8, "041140": 8, "vsp": 8, "17024": 8, "041200": 8, "400001": 8, "300001": 8, "offici": 8, "web": 8, "modbus_application_protocol_v1_1b": 8, "pdf": 8, "modbus_messaging_implementation_guide_v1_0b": 8, "modbus_over_serial_line_v1_02": 8}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"acknowledg": 0, "creat": 1, "modbu": [1, 4, 6, 8], "port": 1, "driver": [1, 4], "tcp": 1, "ip": 1, "serial": 1, "rtu": 1, "ascii": 1, "modbusinterposeconfig": 1, "drvmodbusasynconfigur": 1, "regist": [1, 8], "data": [1, 8], "type": [1, 8], "note": 1, "wago": 1, "devic": [1, 3], "number": 1, "drvasynipport": 1, "format": 1, "debug": 2, "trace": 2, "asynrecord": 2, "adl": [2, 7], "asynregist": 2, "epic": 3, "support": 3, "asynuint32digit": 3, "asynint32": 3, "asynint64": 3, "asynfloat64": 3, "asynint32arrai": 3, "asynoctet": 3, "templat": 3, "file": 3, "architectur": 4, "read": 4, "function": [4, 8], "write": 4, "platform": 4, "independ": 4, "exampl": 5, "applic": 5, "tabl": 6, "content": 6, "medm": 7, "screen": 7, "modbusdatatyp": 7, "koyo1": 7, "koyo_8input": 7, "koyo_8output": 7, "modbusarrai": 7, "modbusstatist": 7, "koyo2": 7, "koyo_4adc": 7, "overview": 8, "commun": 8, "link": 8, "code": 8, "address": 8, "discret": 8, "input": 8, "coil": 8, "hold": 8, "v": 8, "memori": 8, "length": 8, "limit": 8, "more": 8, "inform": 8}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 60}, "alltitles": {"Acknowledgments": [[0, "acknowledgments"]], "Creating a modbus port driver": [[1, "creating-a-modbus-port-driver"]], "TCP/IP": [[1, "tcp-ip"]], "Serial RTU": [[1, "serial-rtu"]], "Serial ASCII": [[1, "serial-ascii"]], "modbusInterposeConfig": [[1, "modbusinterposeconfig"]], "drvModbusAsynConfigure": [[1, "drvmodbusasynconfigure"]], "Modbus register data types": [[1, "modbus-register-data-types"]], "Note for Wago devices": [[1, "note-for-wago-devices"]], "Number of drvAsynIPPort drivers for TCP": [[1, "number-of-drvasynipport-drivers-for-tcp"]], "Number formats": [[1, "number-formats"]], "Debug tracing": [[2, "debug-tracing"]], "asynRecord.adl": [[2, "asynrecord-adl"]], "asynRegister.adl": [[2, "asynregister-adl"]], "EPICS device support": [[3, "epics-device-support"]], "asynUInt32Digital": [[3, "asynuint32digital"]], "asynInt32": [[3, "asynint32"]], "asynInt64": [[3, "asynint64"]], "asynFloat64": [[3, "asynfloat64"]], "asynInt32Array": [[3, "asynint32array"]], "asynOctet": [[3, "asynoctet"]], "Template files": [[3, "template-files"]], "Driver architecture": [[4, "driver-architecture"]], "Modbus read functions": [[4, "modbus-read-functions"]], "Modbus write functions": [[4, "modbus-write-functions"]], "Modbus write/read functions": [[4, "modbus-write-read-functions"]], "Platform independence": [[4, "platform-independence"]], "Example Applications": [[5, "example-applications"]], "modbus": [[6, "modbus"]], "Table of Contents": [[6, "table-of-contents"]], "medm screens": [[7, "medm-screens"]], "modbusDataTypes.adl": [[7, "modbusdatatypes-adl"]], "Koyo1.adl": [[7, "koyo1-adl"]], "Koyo_8inputs.adl": [[7, "koyo-8inputs-adl"]], "Koyo_8outputs.adl": [[7, "koyo-8outputs-adl"]], "modbusArray.adl": [[7, "modbusarray-adl"]], "modbusStatistics.adl": [[7, "modbusstatistics-adl"]], "Koyo2.adl": [[7, "koyo2-adl"]], "Koyo_4ADC.adl": [[7, "koyo-4adc-adl"]], "Overview of Modbus": [[8, "overview-of-modbus"]], "Modbus communication links": [[8, "modbus-communication-links"]], "Modbus data types": [[8, "modbus-data-types"]], "Modbus communications": [[8, "modbus-communications"]], "Modbus function codes": [[8, "modbus-function-codes"]], "Modbus addresses": [[8, "modbus-addresses"]], "Discrete inputs and coils": [[8, "discrete-inputs-and-coils"]], "Input registers and holding registers (V memory)": [[8, "input-registers-and-holding-registers-v-memory"]], "Modbus data length limitations": [[8, "modbus-data-length-limitations"]], "More information on Modbus": [[8, "more-information-on-modbus"]]}, "indexentries": {}}) \ No newline at end of file +Search.setIndex({"docnames": ["acknowledgments", "creating_driver", "debugging", "device_support", "driver_architecture", "example_applications", "index", "medm_screens", "overview"], "filenames": ["acknowledgments.rst", "creating_driver.rst", "debugging.rst", "device_support.rst", "driver_architecture.rst", "example_applications.rst", "index.rst", "medm_screens.rst", "overview.rst"], "titles": ["Acknowledgments", "Creating a modbus port driver", "Debug tracing", "EPICS device support", "Driver architecture", "Example Applications", "modbus", "medm screens", "Overview of Modbus"], "terms": {"The": [0, 1, 2, 3, 4, 5, 7, 8], "modbu": [0, 2, 3, 5, 7], "packag": [0, 8], "i": [0, 1, 2, 3, 4, 5, 6, 7, 8], "base": [0, 1], "modtcp": 0, "plctcp": 0, "written": [0, 1, 2, 3, 4, 7], "rolf": 0, "keitel": 0, "from": [0, 1, 2, 3, 4, 5, 7, 8], "triumf": 0, "wa": [0, 3, 4], "origin": 0, "convert": [0, 1, 5], "linux": [0, 4, 5], "ivan": 0, "so": [0, 1, 3, 4, 8], "nsl": 0, "extens": [0, 4], "re": 0, "convers": [0, 1, 3, 5], "epic": [0, 1, 2, 4, 5, 6], "3": [0, 1, 2, 3, 4, 5, 7, 8], "14": [0, 1], "us": [0, 1, 2, 3, 4, 5, 6, 7, 8], "asyn": [0, 1, 2, 3, 4, 5, 6], "modul": [0, 1, 4, 6], "It": [0, 1, 3, 4, 5, 7, 8], "now": 0, "contain": [0, 1, 3, 8], "littl": [0, 1], "code": [0, 1, 3, 4, 5, 6, 7], "retain": 0, "much": [0, 4, 8], "architectur": [0, 6], "befor": [1, 4], "can": [1, 2, 3, 4, 5, 8], "necessari": [1, 3, 4], "first": [1, 3, 5], "least": 1, "one": [1, 2, 3, 4, 5], "commun": [1, 4, 6, 7], "hardwar": [1, 4], "command": [1, 2, 3, 4, 5], "requir": [1, 3, 4], "depend": [1, 3, 4], "link": [1, 3, 6], "being": [1, 2, 3, 4, 7], "For": [1, 2, 3, 4, 5, 8], "follow": [1, 2, 3, 4, 5, 7, 8], "standard": [1, 3, 4, 8], "drvasynipportconfigur": [1, 5], "portnam": [1, 3, 5], "hostinfo": [1, 5], "prioriti": [1, 5], "noautoconnect": [1, 5], "noprocesseo": [1, 5], "document": [1, 3, 8], "thi": [1, 2, 3, 4, 5, 6, 7, 8], "found": [1, 8], "asyndriv": 1, "exampl": [1, 2, 3, 4, 6, 7], "an": [1, 2, 3, 4, 5, 6, 7, 8], "call": [1, 4, 5], "koyo1": [1, 2, 5, 6], "502": [1, 2, 5, 8], "address": [1, 3, 4, 5, 6], "164": [1, 2, 5], "54": [1, 2, 5], "160": [1, 2, 5], "158": [1, 2, 5], "default": [1, 3], "flag": 1, "set": [1, 2, 3, 4, 5], "0": [1, 2, 3, 4, 5, 8], "asynmanag": [1, 4], "do": [1, 4, 5], "normal": [1, 3, 4, 5, 8], "automat": 1, "connect": [1, 2, 5, 8], "manag": 1, "asyninterposeeo": 1, "interfac": [1, 2, 3, 4, 5, 7], "handl": [1, 4], "end": [1, 3, 8], "string": [1, 3], "eo": 1, "process": [1, 2, 3, 4], "which": [1, 3, 5, 8], "need": [1, 4, 5], "howev": [1, 4, 5], "also": [1, 2, 3, 4, 5, 8], "issu": 1, "repeat": 1, "read": [1, 2, 3, 5, 6, 7, 8], "request": [1, 2, 4, 8], "until": [1, 3], "byte": [1, 3, 5, 8], "ha": [1, 3, 4, 5], "been": [1, 4, 5], "receiv": [1, 4], "low": [1, 4], "level": [1, 2, 4, 7, 8], "doe": [1, 3, 4, 5], "send": [1, 4], "respons": [1, 4, 8], "singl": [1, 3, 4, 5, 8], "packet": [1, 8], "mai": [1, 4, 5, 8], "asyninterpos": 1, "harm": 1, "definit": 1, "when": [1, 2, 3, 4, 5, 8], "talk": 1, "termin": [1, 3], "server": [1, 2, 4, 5, 8], "over": [1, 8], "becaus": [1, 3, 4], "well": 1, "broken": 1, "up": [1, 3, 4, 5], "multipl": [1, 3, 4, 5, 8], "recommend": 1, "even": [1, 4], "actual": [1, 2, 3], "drvasynserialportconfigur": [1, 5], "ttynam": [1, 5], "asynsetopt": [1, 5], "addr": [1, 2, 3], "kei": 1, "valu": [1, 2, 3, 4, 5, 7, 8], "local": 1, "dev": [1, 5], "ttys1": [1, 5], "paramet": [1, 3, 4, 5], "ar": [1, 2, 3, 4, 5, 7, 8], "configur": [1, 4, 5], "38400": [1, 5], "baud": [1, 5], "pariti": [1, 5], "8": [1, 3, 5, 8], "bit": [1, 3, 4, 5, 7, 8], "1": [1, 2, 3, 4, 5, 7, 8], "stop": [1, 5], "none": [1, 5], "same": [1, 3, 4, 5], "describ": [1, 4, 8], "abov": [1, 3, 4, 7, 8], "after": [1, 3, 4, 5], "asynoctetsetoutputeo": [1, 5], "asynoctetsetinputeo": [1, 5], "input": [1, 3, 4, 5, 6, 7], "output": [1, 2, 3, 4, 5, 7, 8], "cr": [1, 8], "lf": [1, 8], "r": [1, 3, 5, 8], "n": [1, 5], "asynipport": 1, "asynserialport": 1, "next": 1, "step": 1, "add": 1, "interpos": [1, 4], "take": 1, "independ": [1, 6], "frame": [1, 4, 8], "remov": 1, "specif": [1, 2, 3, 8], "inform": [1, 2, 6], "protocol": [1, 4, 8], "linktyp": [1, 5], "timeoutmsec": [1, 5], "writedelaymsec": [1, 5], "descript": [1, 3, 8], "name": [1, 3], "previous": 1, "int": [1, 5], "layer": [1, 4, 8], "2": [1, 2, 3, 4, 5, 8], "timeout": [1, 3], "millisecond": [1, 3], "write": [1, 2, 3, 5, 6, 7, 8], "oper": [1, 3, 4, 8], "underli": [1, 2, 4], "asynoctet": [1, 4, 6], "place": 1, "specifi": [1, 3, 4, 8], "support": [1, 4, 5, 6, 8], "If": [1, 3, 4], "zero": [1, 5], "2000": [1, 3, 4, 8], "delai": [1, 3, 4, 5], "each": [1, 2, 3, 4, 5, 7, 8], "typic": [1, 4, 8], "onli": [1, 3, 4, 5, 8], "modicon": 1, "refer": [1, 3], "guid": 1, "sai": 1, "must": [1, 4, 5], "5": [1, 2, 3, 4, 5, 7, 8], "charact": [1, 3, 4, 8], "time": [1, 2, 3, 4, 7, 8], "e": [1, 3, 4, 8], "g": [1, 3, 4], "about": [1, 8], "5m": 1, "9600": 1, "would": [1, 4, 5], "second": [1, 3, 4], "m": 1, "1000": [1, 5], "onc": [1, 3, 4], "modbusinterpos": 1, "tcpportnam": 1, "slaveaddress": 1, "modbusfunct": [1, 2], "modbusstartaddress": [1, 2, 4], "modbuslength": [1, 2, 3], "datatyp": [1, 3], "pollmsec": 1, "plctype": [1, 2], "slave": [1, 5, 7, 8], "match": 1, "plc": [1, 2, 3, 4, 5, 7, 8], "unit": 1, "identifi": 1, "last": [1, 2, 3, 4, 5], "field": [1, 2, 3, 4], "mbap": 1, "header": 1, "ignor": 1, "most": [1, 5], "some": [1, 3, 4, 8], "function": [1, 3, 5, 6, 7], "4": [1, 2, 3, 4, 5, 7, 8], "6": [1, 2, 3, 4, 5, 7, 8], "15": [1, 3, 4, 5, 8], "16": [1, 3, 4, 5, 8], "17": [1, 2, 4, 8], "123": [1, 4, 8], "23": [1, 3, 4, 8], "223": [1, 4], "start": [1, 3, 4, 5, 8], "segment": 1, "access": [1, 2, 3, 4, 5, 7, 8], "rel": [1, 3, 4], "rang": [1, 3, 4], "65535": 1, "decim": [1, 5, 8], "0177777": 1, "octal": [1, 5, 8], "absolut": [1, 3, 4], "length": [1, 3, 5, 6], "word": [1, 3, 4, 5, 8], "limit": [1, 3, 4, 6], "1968": [1, 8], "125": [1, 3, 4, 8], "size": 1, "largest": 1, "all": [1, 2, 4, 5, 8], "64": [1, 3], "float": 1, "100": [1, 5], "int32": 1, "waveform": [1, 3, 5, 7], "record": [1, 2, 3, 4, 5, 7], "nelm": [1, 3], "50": 1, "modbusdatatyp": [1, 6], "drvuser": [1, 3], "empti": 1, "modbus_data": [1, 3], "list": [1, 3, 8], "tabl": [1, 3, 8], "below": [1, 4], "argument": [1, 2, 3], "either": [1, 3, 4], "shown": [1, 7], "defin": [1, 3, 8], "drvmodbusasyn": [1, 2, 5], "h": [1, 4], "numer": [1, 5], "modbusdatatype_t": 1, "enum": 1, "less": [1, 4, 8], "conveni": 1, "understand": 1, "equival": 1, "chang": [1, 4], "between": [1, 3, 4, 8], "r3": [1, 4], "startup": [1, 5], "script": [1, 5], "int16": [1, 3], "uint16": [1, 3], "were": [1, 3], "swap": 1, "everyth": 1, "beyond": 1, "int32_l": [1, 3], "differ": [1, 4, 5, 8], "poll": [1, 3, 4], "msec": [1, 2, 3, 4, 7], "thread": [1, 3, 4], "non": [1, 5], "mean": [1, 3, 4], "should": [1, 3, 4], "koyo": [1, 2, 3, 5, 7, 8], "etc": [1, 3, 4], "current": [1, 4, 8], "print": [1, 2, 3], "asynreport": [1, 2], "treat": 1, "special": [1, 3, 4, 8], "substr": 1, "see": 1, "how": [1, 2, 5], "interpret": 1, "sign": [1, 5], "unsign": [1, 5], "binari": [1, 5, 8], "bcd": [1, 5], "In": [1, 4, 5], "fact": [1, 4], "mani": [1, 4], "manufactur": [1, 8], "combin": 1, "encod": [1, 8], "32": [1, 2, 3, 5], "integ": [1, 8], "particular": [1, 4], "overrid": [1, 3], "transfer": [1, 2, 3, 8], "epicsuint32": [1, 3], "epicsint32": [1, 3], "epicsint64": [1, 3], "epicsfloat64": [1, 3], "appli": [1, 4], "asynint32": [1, 2, 4, 5, 6], "asynint64": [1, 4, 5, 6], "asynfloat64": [1, 2, 4, 5, 6, 7], "thei": [1, 4], "asynuint32digit": [1, 2, 4, 6], "alwai": 1, "": [1, 8], "complement": 1, "extend": 1, "int16sm": [1, 3], "magnitud": [1, 5], "adc": [1, 7], "bcd_unsign": 1, "consist": [1, 4, 5, 8], "nibbl": 1, "9": [1, 2, 5, 8], "A": [1, 4, 5, 8], "thu": [1, 3], "store": [1, 4], "9999": 1, "bcd_sign": [1, 3], "digit": [1, 3], "hold": [1, 3, 4, 5, 6], "7999": 1, "endian": 1, "signific": 1, "int32_le_b": 1, "within": [1, 4, 8], "int32_b": [1, 3], "big": 1, "int32_be_b": 1, "uint32_l": 1, "uint32_le_b": 1, "uint32_b": 1, "uint32_be_b": 1, "int64_l": 1, "int64_le_b": 1, "int64_b": 1, "int64_be_b": 1, "uint64_l": 1, "uint64_le_b": 1, "uint64_b": 1, "uint64_be_b": 1, "float32_l": [1, 3], "point": [1, 4], "float32_le_b": 1, "float32_b": [1, 3], "float32_be_b": 1, "float64_l": 1, "float64_le_b": 1, "float64_b": 1, "float64_be_b": 1, "string_high": [1, 3], "One": [1, 2, 4, 5], "high": 1, "string_low": [1, 3], "string_high_low": [1, 3], "two": 1, "string_low_high": [1, 3], "zstring_high": [1, 3], "zstring_low": [1, 3], "zstring_high_low": [1, 3], "zstring_low_high": [1, 3], "desir": 1, "transmit": [1, 8], "untransl": 1, "translat": 1, "done": [1, 3, 4], "case": [1, 4], "zstring_": [1, 3], "meant": 1, "ident": 1, "string_": 1, "counterpart": 1, "_be": 1, "order": [1, 3], "ieee": 1, "machin": 1, "_be_b": 1, "_le": 1, "compar": 1, "_le_b": 1, "backward": 1, "compat": 1, "previou": [1, 4], "version": 1, "ad": [1, 4], "ai": [1, 3, 5, 7], "templat": [1, 6], "p": [1, 3], "dtyp": [1, 3], "inp": [1, 3], "offset": [1, 3, 5, 8], "hopr": [1, 3], "lopr": [1, 3], "prec": [1, 3], "scan": [1, 3, 4], "initi": [1, 3, 4], "other": [1, 3, 4, 8], "back": [1, 4], "0x200": 1, "greater": 1, "than": [1, 4, 8], "readback": [1, 3, 7], "sensit": 1, "affect": 1, "user": 1, "separ": [1, 4, 5], "socket": 1, "possibl": [1, 4], "have": [1, 4], "share": 1, "o": [1, 2, 3, 4, 5, 7, 8], "fashion": 1, "transact": [1, 4], "complet": [1, 3], "anoth": [1, 5], "begin": [1, 5], "proce": 1, "parallel": 1, "rather": [1, 4, 8], "could": [1, 4, 5], "improv": [1, 4], "perform": [1, 2, 4, 5, 8], "expens": 1, "more": [1, 2, 6], "cpu": 1, "load": [1, 2, 5], "ioc": [1, 4, 5, 7], "network": [1, 8], "traffic": 1, "import": 1, "out": 1, "few": 1, "inact": 1, "problem": 1, "frequent": 1, "But": 1, "occasion": 1, "henc": [1, 3], "ones": 1, "through": 1, "usual": [1, 4], "avoid": [1, 4], "choic": 1, "per": [1, 3], "empir": 1, "versu": [1, 7], "resourc": 1, "usag": 1, "consider": 1, "gener": [1, 3, 4], "probabl": 1, "good": [1, 4], "idea": 1, "result": [1, 4], "satisfactori": 1, "convent": 1, "iocsh": [1, 2], "vxwork": [1, 2, 4, 5], "shell": [1, 2], "lead": [1, 5], "040400": [1, 2, 5, 8], "obtain": [2, 4], "diagnost": 2, "port": [2, 3, 4, 5, 6, 8], "driver": [2, 3, 5, 6, 7, 8], "dbior": 2, "asynprint": 2, "brief": 2, "report": [2, 8], "includ": [2, 3, 5, 8], "drvasynipport": [2, 4, 6], "drvasynserialport": [2, 4], "partial": 2, "applic": [2, 6, 7, 8], "via": [2, 4], "tcp": [2, 4, 5, 6, 7, 8], "multidevic": 2, "No": 2, "canblock": 2, "ye": 2, "autoconnect": 2, "k1_xn_bit": [2, 5], "enabl": [2, 3, 4, 5], "exceptionact": 2, "7": [2, 8], "k1_xn_word": [2, 5], "To": 2, "detail": 2, "numberconnect": 2, "ndevic": 2, "nqueu": 2, "block": [2, 4], "asynmanagerlock": 2, "synchronouslock": 2, "exceptionus": 2, "exceptionnotifi": 2, "interfacelist": 2, "asyncommon": [2, 3], "pinterfac": 2, "0x4001d180": 2, "drvpvt": 2, "0x8094f78": 2, "asyndrvus": [2, 3], "0x4001d10c": 2, "0x4001d118": 2, "0x4001d134": 2, "0x4001d148": 2, "asynint32arrai": [2, 6], "0x4001d158": 2, "010": [2, 5], "error": [2, 3], "ok": 2, "5728": 2, "polldelai": 2, "100000": 2, "max": 2, "12": [2, 3], "run": [2, 3, 4, 5, 7, 8], "asynsettracemask": [2, 5], "asynsettraceiomask": [2, 5], "show": [2, 5, 7], "traceiohex": 2, "traceerror": 2, "traceiodriv": 2, "2007": 2, "04": 2, "27": 2, "45": 2, "384": 2, "00": [2, 8], "01": 2, "07": 2, "ff": 2, "02": 2, "08": 2, "20": 2, "390": 2, "13": [2, 5, 7], "424": 2, "03": 2, "41": 2, "432": 2, "25": 2, "10": 2, "turn": 2, "off": 2, "k1_yn_in_word": [2, 5], "31": 2, "548": 2, "domodbusio": [2, 4], "read_regist": 2, "09": 2, "656": 2, "770": 2, "878": 2, "987": 2, "disabl": [2, 3], "channel": [2, 5], "medm": [2, 6], "screen": [2, 6], "method": [2, 4], "shot": [2, 7], "control": [2, 3, 4, 5, 7, 8], "y1": 2, "note": [2, 3, 4, 5, 6, 8], "select": [2, 3], "data": [2, 3, 4, 5, 6, 7], "sent": [2, 3, 8], "ifac": [2, 3], "tmod": [2, 3], "ui32out": 2, "implement": [3, 4], "entir": [3, 4], "provid": [3, 4, 7, 8], "itself": [3, 4], "There": [3, 4, 5], "part": [3, 4], "r4": 3, "later": [3, 4], "minor": 3, "enhanc": 3, "made": 3, "featur": [3, 5], "determin": 3, "what": [3, 4], "option": [3, 5], "type": [3, 5, 6, 7], "drvmodbusasynconfigur": [3, 4, 5, 6], "locat": [3, 4, 8], "discret": [3, 4, 6, 7], "coil": [3, 4, 5, 6, 7], "04000": [3, 5, 8], "04002": 3, "x": [3, 4, 5, 8], "x2": 3, "regist": [3, 4, 5, 6, 7], "040600": [3, 5, 8], "040602": 3, "c": [3, 4, 5, 8], "relai": [3, 5, 8], "third": [3, 4], "c40": 3, "c57": 3, "asynmask": 3, "mask": [3, 4], "bi": [3, 5], "mbbi": 3, "mbbidirect": [3, 5], "longin": [3, 5], "interest": [3, 4], "bo": [3, 5], "mbbo": 3, "mbbodirect": [3, 5], "longout": [3, 5], "0xffff": [3, 4], "els": 3, "modifi": [3, 4], "clear": 3, "ani": [3, 4, 5], "na": 3, "enable_histogram": 3, "return": 3, "histogram": [3, 7], "nbit": 3, "syntax": 3, "analog": 3, "number": [3, 5, 6, 7], "know": [3, 4], "cannot": [3, 4], "meaning": 3, "getbound": 3, "unipolar": 3, "4095": 3, "bipolar": [3, 5, 7], "2048": [3, 8], "2047": 3, "atom": [3, 4], "messag": [3, 8], "short": 3, "period": [3, 4], "incorrect": 3, "ao": [3, 5, 7], "modbus_read": 3, "forc": 3, "poller": [3, 4], "immedi": [3, 4], "regardless": 3, "poll_delai": 3, "read_ok": 3, "success": 3, "write_ok": 3, "io_error": 3, "last_io_tim": 3, "max_io_tim": 3, "maximum": 3, "histogram_bin_tim": 3, "bin": [3, 5], "statist": [3, 7], "int64in": [3, 5], "epicsuint64": 3, "int64out": [3, 5], "epicsuint16": 3, "woken": 3, "epicsev": 3, "signal": 3, "happen": 3, "asynint32arrayin": 3, "asynint32arrayout": 3, "arrai": [3, 5], "read_histogram": 3, "sinc": 3, "histogram_time_axi": 3, "axi": 3, "element": 3, "asynoctetread": 3, "number_of_charact": 3, "asynoctetwrit": 3, "250": [3, 8], "stringout": 3, "On": 3, "lesser": 3, "minu": 3, "39": 3, "stringin": 3, "whether": 3, "truncat": 3, "guarante": [3, 4], "correct": [3, 4], "br": 3, "modbusapp": [3, 5, 7], "db": 3, "directori": [3, 5, 7, 8], "These": [3, 4, 5, 7], "macro": 3, "bi_bit": 3, "znam": 3, "onam": 3, "zsv": 3, "osv": 3, "bo_bit": 3, "bi_word": 3, "bo_word": 3, "longinint32": 3, "data_typ": 3, "longoutint32": 3, "linear": 3, "egul": 3, "eguf": 3, "ai_averag": 3, "asynint32averag": 3, "get": 3, "callback": 3, "averag": 3, "intarray_in": 3, "intarray_out": 3, "aifloat64": 3, "aofloat64": 3, "initial_readback": 3, "stringwaveformin": 3, "stringwaveformout": 3, "asynrecord": [3, 6], "trace": [3, 6], "debug": [3, 5, 6], "poll_trigg": 3, "trigger": 3, "explain": 3, "preced": 3, "prefix": 3, "sever": [3, 4, 5], "blank": 3, "allow": [3, 4, 5], "engin": 3, "lower": 3, "upper": 3, "displai": 3, "precis": 3, "mode": [3, 4], "rate": 3, "intr": [3, 4], "caution": 4, "memori": [4, 5, 6], "ladder": [4, 5], "logic": [4, 5, 8], "program": [4, 5, 8], "dumb": 4, "subsystem": 4, "resid": 4, "design": [4, 5], "carefulli": 4, "might": 4, "y": [4, 5, 8], "restrict": 4, "small": 4, "c200": [4, 7], "c240": 4, "monitor": 4, "consid": 4, "them": 4, "act": 4, "upon": 4, "safe": 4, "top": [4, 7], "down": 4, "devic": [4, 5, 6, 8], "purpos": [4, 5], "client": [4, 8], "prior": 4, "class": 4, "inherit": 4, "asynportdriv": 4, "export": 4, "its": 4, "wai": 4, "easi": 4, "addit": [4, 8], "rtu": [4, 5, 6, 8], "ascii": [4, 5, 6, 8], "both": [4, 5], "overli": 4, "ip": [4, 5, 6, 7, 8], "serial": [4, 5, 6, 8], "make": 4, "exist": 4, "facil": 4, "amount": 4, "quit": 4, "fewer": 4, "900": 4, "line": 4, "assign": 4, "contigu": 4, "creat": [4, 5, 6], "x0": [4, 5, 7], "x37": [4, 5, 7], "c0": [4, 5, 7], "c377": [4, 5, 7], "c300": 4, "space": [4, 8], "still": 4, "pass": 4, "arbitrari": 4, "io": 4, "behavior": 4, "spawn": 4, "buffer": 4, "asynchron": 4, "although": 4, "directli": [4, 8], "wait": 4, "mutex": 4, "indic": 4, "whenev": 4, "new": 4, "effici": [4, 8], "paragraph": 4, "where": 4, "caus": 4, "proc": 4, "reason": 4, "tell": 4, "execut": 4, "0x0": 4, "minimum": 4, "modbusinterposeconfig": [4, 5, 6], "wide": 4, "fit": 4, "model": [4, 8], "like": [4, 5], "test": [4, 5], "x86": [4, 5], "x86_64": 4, "ppc32": 4, "win32": 4, "window": 4, "x64": 4, "nativ": 4, "microsoft": 4, "visual": 4, "studio": 4, "compil": 4, "thing": 4, "structur": 4, "pack": 4, "pragma": 4, "direct": [4, 5], "gnu": 4, "appropri": [4, 5], "build": 5, "iocboot": 5, "ioctest": 5, "dl": 5, "seri": 5, "autom": 5, "cmd": [5, 7], "v": [5, 6], "koyo2": [5, 6], "d": 5, "plu": 5, "format": [5, 6], "st": 5, "simpl": 5, "just": 5, "invok": 5, "envpath": 5, "dbloaddatabas": 5, "dbd": 5, "modbusapp_registerrecorddevicedriv": 5, "pdbbase": 5, "const": 5, "char": 5, "disconnectonreadtimeout": 5, "modbuslinktyp": 5, "5000": 5, "we": 5, "nomenclatur": 5, "hex": 5, "dl205": [5, 7], "xn": 5, "4000": 5, "040": 5, "40400": 5, "128": 5, "yn": 5, "y0": [5, 7], "y37": 5, "k1_yn_in_bit": 5, "k1_yn_out_bit": 5, "40500": 5, "040500": [5, 8], "k1_yn_out_word": 5, "cn": 5, "6000": 5, "256": 5, "k1_cn_in_bit": 5, "06000": [5, 8], "0400": 5, "k1_cn_out_bit": 5, "k1_cn_out_bit_arrai": 5, "40600": 5, "k1_cn_in_word": 5, "020": 5, "k1_cn_out_word": 5, "k1_cn_out_word_arrai": 5, "asyn_traceio_hex": 5, "octet": 5, "asyn_trace_error": 5, "asyn_traceio_driv": 5, "255": 5, "dump": 5, "512": [5, 8], "asyntrac": 5, "asynsettraceiotruncates": 5, "dbloadtempl": 5, "substitut": [5, 7], "iocinit": 5, "demonstr": 5, "realist": 5, "practic": 5, "testdatatyp": [5, 7], "file": [5, 6, 7], "modbusf1_a0_128bit": 5, "mb": 5, "modbusf3_a200_80word": 5, "modbusf3_a300_80word": 5, "inexpens": 5, "emul": 5, "simul": [5, 7], "modbusf3_a100_80word": 5, "200": 5, "300": 5, "testclient": 5, "cpp": 5, "instanti": 5, "object": [5, 8], "extern": 5, "pure": 5, "without": [5, 8], "author": 6, "mark": 6, "river": 6, "univers": 6, "chicago": 6, "acknowledg": 6, "overview": 6, "platform": 6, "wago": 6, "adl": 6, "koyo_8input": 6, "koyo_8output": 6, "modbusarrai": 6, "modbusstatist": 6, "koyo_4adc": 6, "asynregist": 6, "op": 7, "agre": 7, "correctli": 7, "x7": 7, "c207": 7, "y7": 7, "event": 7, "cycl": 7, "posit": 8, "osi": 8, "buse": 8, "system": 8, "programm": 8, "232": 8, "422": 8, "485": 8, "crc": 8, "check": 8, "detect": 8, "though": 8, "common": 8, "lrc": 8, "reliabl": 8, "environ": 8, "primari": 8, "comment": 8, "alter": 8, "repli": 8, "vendor": 8, "id": 8, "commonli": 8, "dl05": 8, "06": 8, "240": 8, "260": 8, "430": 8, "440": 8, "450": 8, "sp": 8, "3072": 8, "timer": 8, "contact": 8, "t": 8, "6144": 8, "014000": 8, "counter": 8, "ct": 8, "6400": 8, "014400": 8, "stage": 8, "statu": 8, "012000": 8, "ta": 8, "cta": 8, "01000": 8, "global": 8, "vgx": 8, "16384": 8, "040000": 8, "vgy": 8, "16512": 8, "040200": 8, "vx": 8, "16640": 8, "vy": 8, "16704": 8, "vc": 8, "16768": 8, "16896": 8, "041000": 8, "vt": 8, "16960": 8, "041100": 8, "vct": 8, "16992": 8, "041140": 8, "vsp": 8, "17024": 8, "041200": 8, "400001": 8, "300001": 8, "offici": 8, "web": 8, "modbus_application_protocol_v1_1b": 8, "pdf": 8, "modbus_messaging_implementation_guide_v1_0b": 8, "modbus_over_serial_line_v1_02": 8}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"acknowledg": 0, "creat": 1, "modbu": [1, 4, 6, 8], "port": 1, "driver": [1, 4], "tcp": 1, "ip": 1, "serial": 1, "rtu": 1, "ascii": 1, "modbusinterposeconfig": 1, "drvmodbusasynconfigur": 1, "regist": [1, 8], "data": [1, 8], "type": [1, 8], "note": 1, "wago": 1, "devic": [1, 3], "number": 1, "drvasynipport": 1, "format": 1, "debug": 2, "trace": 2, "asynrecord": 2, "adl": [2, 7], "asynregist": 2, "epic": 3, "support": 3, "asynuint32digit": 3, "asynint32": 3, "asynint64": 3, "asynfloat64": 3, "asynint32arrai": 3, "asynoctet": 3, "templat": 3, "file": 3, "architectur": 4, "read": 4, "function": [4, 8], "write": 4, "platform": 4, "independ": 4, "exampl": 5, "applic": 5, "tabl": 6, "content": 6, "medm": 7, "screen": 7, "modbusdatatyp": 7, "koyo1": 7, "koyo_8input": 7, "koyo_8output": 7, "modbusarrai": 7, "modbusstatist": 7, "koyo2": 7, "koyo_4adc": 7, "overview": 8, "commun": 8, "link": 8, "code": 8, "address": 8, "discret": 8, "input": 8, "coil": 8, "hold": 8, "v": 8, "memori": 8, "length": 8, "limit": 8, "more": 8, "inform": 8}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 60}, "alltitles": {"Acknowledgments": [[0, "acknowledgments"]], "Creating a modbus port driver": [[1, "creating-a-modbus-port-driver"]], "TCP/IP": [[1, "tcp-ip"]], "Serial RTU": [[1, "serial-rtu"]], "Serial ASCII": [[1, "serial-ascii"]], "modbusInterposeConfig": [[1, "modbusinterposeconfig"]], "drvModbusAsynConfigure": [[1, "drvmodbusasynconfigure"]], "Modbus register data types": [[1, "modbus-register-data-types"]], "Note for Wago devices": [[1, "note-for-wago-devices"]], "Number of drvAsynIPPort drivers for TCP": [[1, "number-of-drvasynipport-drivers-for-tcp"]], "Number formats": [[1, "number-formats"]], "Debug tracing": [[2, "debug-tracing"]], "asynRecord.adl": [[2, "asynrecord-adl"]], "asynRegister.adl": [[2, "asynregister-adl"]], "EPICS device support": [[3, "epics-device-support"]], "asynUInt32Digital": [[3, "asynuint32digital"]], "asynInt32": [[3, "asynint32"]], "asynInt64": [[3, "asynint64"]], "asynFloat64": [[3, "asynfloat64"]], "asynInt32Array": [[3, "asynint32array"]], "asynOctet": [[3, "asynoctet"]], "Template files": [[3, "template-files"]], "Driver architecture": [[4, "driver-architecture"]], "Modbus read functions": [[4, "modbus-read-functions"]], "Modbus write functions": [[4, "modbus-write-functions"]], "Modbus write/read functions": [[4, "modbus-write-read-functions"]], "Platform independence": [[4, "platform-independence"]], "Example Applications": [[5, "example-applications"]], "modbus": [[6, "modbus"]], "Table of Contents": [[6, "table-of-contents"]], "medm screens": [[7, "medm-screens"]], "modbusDataTypes.adl": [[7, "modbusdatatypes-adl"]], "Koyo1.adl": [[7, "koyo1-adl"]], "Koyo_8inputs.adl": [[7, "koyo-8inputs-adl"]], "Koyo_8outputs.adl": [[7, "koyo-8outputs-adl"]], "modbusArray.adl": [[7, "modbusarray-adl"]], "modbusStatistics.adl": [[7, "modbusstatistics-adl"]], "Koyo2.adl": [[7, "koyo2-adl"]], "Koyo_4ADC.adl": [[7, "koyo-4adc-adl"]], "Overview of Modbus": [[8, "overview-of-modbus"]], "Modbus communication links": [[8, "modbus-communication-links"]], "Modbus data types": [[8, "modbus-data-types"]], "Modbus communications": [[8, "modbus-communications"]], "Modbus function codes": [[8, "modbus-function-codes"]], "Modbus addresses": [[8, "modbus-addresses"]], "Discrete inputs and coils": [[8, "discrete-inputs-and-coils"]], "Input registers and holding registers (V memory)": [[8, "input-registers-and-holding-registers-v-memory"]], "Modbus data length limitations": [[8, "modbus-data-length-limitations"]], "More information on Modbus": [[8, "more-information-on-modbus"]]}, "indexentries": {}}) \ No newline at end of file