Re: [Beremiz-devel] Beremiz-devel Digest, Vol 110, Issue 2

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Re: [Beremiz-devel] Beremiz-devel Digest, Vol 110, Issue 2

thiagoralves
Hi Florian,

Do you mind posting your error on the OpenPLC forum https://openplc.discussion.community

That’s the right place to discuss errors related to OpenPLC.


Thanks,

Thiago Alves

Sent from my iPhone

On Apr 28, 2020, at 1:27 PM, [hidden email] wrote:

Send Beremiz-devel mailing list submissions to
   [hidden email]

To subscribe or unsubscribe via the World Wide Web, visit
   https://lists.sourceforge.net/lists/listinfo/beremiz-devel
or, via email, send a message with subject or body 'help' to
   [hidden email]

You can reach the person managing the list at
   [hidden email]

When replying, please edit your Subject line so it is more specific
than "Re: Contents of Beremiz-devel digest..."


Today's Topics:

  1. exceptions.TypeError (Florian)


----------------------------------------------------------------------

Message: 1
Date: Tue, 28 Apr 2020 19:21:21 +0200
From: Florian <[hidden email]>
To: [hidden email]
Subject: [Beremiz-devel] exceptions.TypeError
Message-ID: <[hidden email]>
Content-Type: text/plain; charset="utf-8"; Format="flowed"

Hello,

I contact you as it's mention on thewindow bug below from OpenPLC Editor
1.0. Since this morning i can't generate my program, OpenPLC immediately
stop. I've try under Windows and this is the same.


I join you the bug report file, i hope you can help.

Good luck

Florian From France

-------------- next part --------------
An HTML attachment was scrubbed...
-------------- next part --------------
A non-text attachment was scrubbed...
Name: kacdafmjihploijj.png
Type: image/png
Size: 55181 bytes
Desc: not available
-------------- next part --------------
app-title:
beremiz

app-version:
1.0

cwd:
/home/florian/T?l?chargements/OpenPLC_Editor/editor

date:
Tue Apr 28 18:49:18 2020

e-type:
<type 'exceptions.TypeError'>

e-value:
sequence item 3826: expected string or Unicode, NoneType found

locals:
   item: ('END_CONFIGURATION\n', ())
   self: <ProjectController.ProjectController object at 0x7f3dc73dad10>
   errors: []
   filepath: '/home/florian/CloudStation/Projets/Programmes/ArrosageAuto/build/generated_plc.st'
   warnings: []

platform:
Linux-4.15.0-96-generic-x86_64-with-Ubuntu-18.04-bionic

python-version:
2.7.17

self:
   POUVariablesCollector: <plcopen.POUVariablesCollector.POUVariablesCollector object at 0x7f3dc73f6850>
   debug_status: 'Stopped'
   BaseParams: <Element BaseParams at 0x7f3dc6126350>
   DefaultBuildPath: '/home/florian/CloudStation/Projets/Programmes/ArrosageAuto/build'
   InstancesPathCollector: <plcopen.InstancesPathCollector.InstancesPathCollector object at 0x7f3dc788b450>
   _VariablesList: None
   StatusTimer: <wx._misc.Timer; proxy of <Swig Object of type 'wxPyTimer *' at 0x55e985590c70> >
   Libraries: [<POULibrary.SimplePOULibrary object at 0x7f3dc6050290>, <py_ext.py_ext.PythonLibrary object at 0x7f3dc6031cd0>]
   CTNParams: (u'BeremizRoot', <Element BeremizRoot at 0x7f3dc608dfb0>)
   ProjectBuffer: <PLCControler.UndoBuffer object at 0x7f3dc60f9410>
   AppFrame: <BeremizIDE.Beremiz; proxy of <Swig Object of type 'wxFrame *' at 0x55e984d0c470> >
   InstanceTagnameCollector: <plcopen.InstanceTagnameCollector.InstanceTagnameCollector object at 0x7f3dc73f6b50>
   DebugTicks: []
   DebugValuesBuffers: []
   TotalTypes: [{'list': [{'comment': 'The SR bistable is a latch where the Set dominates.', 'inputs': [('S1', u'BOOL', 'none'), ('R', u'BOOL', 'none')], 'name': 'SR', 'outputs': [('Q1', u'BOOL', 'none')], 'extensible': False, 'usage': u'\n (BOOL:S1, BOOL:R) => (BOOL:Q1)', 'type': 'functionBlock'}, {'comment': 'The RS bistable is a latch where the Reset dominates.', 'inputs': [('S', u'BOOL', 'none'), ('R1', u'BOOL', 'none')], 'name': 'RS', 'outputs': [('Q1', u'BOOL', 'none')], 'extensible': False, 'usage': u'\n (BOOL:S, BOOL:R1) => (BOOL:Q1)', 'type': 'functionBlock'}, {'comment': 'The semaphore provides a mechanism to allow software elements mutually exclusive access to certain resources.', 'inputs': [('CLAIM', u'BOOL', 'none'), ('RELEASE', u'BOOL', 'none')], 'name': 'SEMA', 'outputs': [('BUSY', u'BOOL', 'none')], 'extensible': False, 'usage': u'\n (BOOL:CLAIM, BOOL:RELEASE) => (BOOL:BUSY)', 'type': 'functionBlock'}, {'comment': 'The output produces a single pulse when a rising edge is detected.', 'inputs': [('CLK', u'BOOL', 'none')], 'name': 'R_TRIG', 'outputs': [('Q', u'BOOL', 'none')], 'extensible': False, 'usage': u'\n (BOOL:CLK) => (BOOL:Q)', 'type': 'functionBlock'}, {'comment': 'The output produces a single pulse when a falling edge is detected.', 'inputs': [('CLK', u'BOOL', 'none')], 'name': 'F_TRIG', 'outputs': [('Q', u'BOOL', 'none')], 'extensible': False, 'usage': u'\n (BOOL:CLK) => (BOOL:Q)', 'type': 'functionBlock'}, {'comment': 'The up-counter can be used to signal when a count has reached a maximum value.', 'inputs': [('CU', u'BOOL', 'rising'), ('R', u'BOOL', 'none'), ('PV', u'INT', 'none')], 'name': 'CTU', 'outputs': [('Q', u'BOOL', 'none'), ('CV', u'INT', 'none')], 'extensible': False, 'usage': u'\n (BOOL:CU, BOOL:R, INT:PV) => (BOOL:Q, INT:CV)', 'type': 'functionBlock'}, {'comment': 'The up-counter can be used to signal when a count has reached a maximum value.', 'inputs': [('CU', u'BOOL', 'rising'), ('R', u'BOOL', 'none'), ('PV', u'DINT', 'none')], 'name': 'CTU_DINT', 'outputs': [('Q', u'BOOL', 'none'), ('CV', u'DINT', 'none')], 'extensible': False, 'usage': u'\n (BOOL:CU, BOOL:R, DINT:PV) => (BOOL:Q, DINT:CV)', 'type': 'functionBlock'}, {'comment': 'The up-counter can be used to signal when a count has reached a maximum value.', 'inputs': [('CU', u'BOOL', 'rising'), ('R', u'BOOL', 'none'), ('PV', u'LINT', 'none')], 'name': 'CTU_LINT', 'outputs': [('Q', u'BOOL', 'none'), ('CV', u'LINT', 'none')], 'extensible': False, 'usage': u'\n (BOOL:CU, BOOL:R, LINT:PV) => (BOOL:Q, LINT:CV)', 'type': 'functionBlock'}, {'comment': 'The up-counter can be used to signal when a count has reached a maximum value.', 'inputs': [('CU', u'BOOL', 'rising'), ('R', u'BOOL', 'none'), ('PV', u'UDINT', 'none')], 'name': 'CTU_UDINT', 'outputs': [('Q', u'BOOL', 'none'), ('CV', u'UDINT', 'none')], 'extensible': False, 'usage': u'\n (BOOL:CU, BOOL:R, UDINT:PV) => (BOOL:Q, UDINT:CV)', 'type': 'functionBlock'}, {'comment': 'The up-counter can be used to signal when a count has reached a maximum value.', 'inputs': [('CU', u'BOOL', 'rising'), ('R', u'BOOL', 'none'), ('PV', u'ULINT', 'none')], 'name': 'CTU_ULINT', 'outputs': [('Q', u'BOOL', 'none'), ('CV', u'ULINT', 'none')], 'extensible': False, 'usage': u'\n (BOOL:CU, BOOL:R, ULINT:PV) => (BOOL:Q, ULINT:CV)', 'type': 'functionBlock'}, {'comment': 'The down-counter can be used to signal when a count has reached zero, on counting down from a preset value.', 'inputs': [('CD', u'BOOL', 'rising'), ('LD', u'BOOL', 'none'), ('PV', u'INT', 'none')], 'name': 'CTD', 'outputs': [('Q', u'BOOL', 'none'), ('CV', u'INT', 'none')], 'extensible': False, 'usage': u'\n (BOOL:CD, BOOL:LD, INT:PV) => (BOOL:Q, INT:CV)', 'type': 'functionBlock'}, {'comment': 'The down-counter can be used to signal when a count has reached zero, on counting down from a preset value.', 'inputs': [('CD', u'BOOL', 'rising'), ('LD', u'BOOL', 'none'), ('PV', u'DINT', 'none')], 'name': 'CTD_DINT', 'outputs': [('Q', u'BOOL', 'none'), ('CV', u'DINT', 'none')], 'extensible': False, 'usage': u'\n (BOOL:CD, BOOL:LD, DINT:PV) => (BOOL:Q, DINT:CV)', 'type': 'functionBlock'}, {'comment': 'The down-counter can be used to signal when a count has reached zero, on counting down from a preset value.', 'inputs': [('CD', u'BOOL', 'rising'), ('LD', u'BOOL', 'none'), ('PV', u'LINT', 'none')], 'name': 'CTD_LINT', 'outputs': [('Q', u'BOOL', 'none'), ('CV', u'LINT', 'none')], 'extensible': False, 'usage': u'\n (BOOL:CD, BOOL:LD, LINT:PV) => (BOOL:Q, LINT:CV)', 'type': 'functionBlock'}, {'comment': 'The down-counter can be used to signal when a count has reached zero, on counting down from a preset value.', 'inputs': [('CD', u'BOOL', 'rising'), ('LD', u'BOOL', 'none'), ('PV', u'UDINT', 'none')], 'name': 'CTD_UDINT', 'outputs': [('Q', u'BOOL', 'none'), ('CV', u'UDINT', 'none')], 'extensible': False, 'usage': u'\n (BOOL:CD, BOOL:LD, UDINT:PV) => (BOOL:Q, UDINT:CV)', 'type': 'functionBlock'}, {'comment': 'The down-counter can be used to signal when a count has reached zero, on counting down from a preset value.', 'inputs': [('CD', u'BOOL', 'rising'), ('LD', u'BOOL', 'none'), ('PV', u'ULINT', 'none')], 'name': 'CTD_ULINT', 'outputs': [('Q', u'BOOL', 'none'), ('CV', u'ULINT', 'none')], 'extensible': False, 'usage': u'\n (BOOL:CD, BOOL:LD, ULINT:PV) => (BOOL:Q, ULINT:CV)', 'type': 'functionBlock'}, {'comment': 'The up-down counter has two inputs CU and CD. It can be used to both count up on one input and down on the other.', 'inputs': [('CU', u'BOOL', 'rising'), ('CD', u'BOOL', 'rising'), ('R', u'BOOL', 'none'), ('LD', u'BOOL', 'none'), ('PV', u'INT', 'none')], 'name': 'CTUD', 'outputs': [('QU', u'BOOL', 'none'), ('QD', u'BOOL', 'none'), ('CV', u'INT', 'none'), ('CD_T', 'R_TRIG', 'none'), ('CU_T', 'R_TRIG', 'none')], 'extensible': False, 'usage': u'\n (BOOL:CU, BOOL:CD, BOOL:R, BOOL:LD, INT:PV) => (BOOL:QU, BOOL:QD, INT:CV, R_TRIG:CD_T, R_TRIG:CU_T)', 'type': 'functionBlock'}, {'comment': 'The up-down counter has two inputs CU and CD. It can be used to both count up on one input and down on the other.', 'inputs': [('CU', u'BOOL', 'rising'), ('CD', u'BOOL', 'rising'), ('R', u'BOOL', 'none'), ('LD', u'BOOL', 'none'), ('PV', u'DINT', 'none')], 'name': 'CTUD_DINT', 'outputs': [('QU', u'BOOL', 'none'), ('QD', u'BOOL', 'none'), ('CV', u'DINT', 'none'), ('CD_T', 'R_TRIG', 'none'), ('CU_T', 'R_TRIG', 'none')], 'extensible': False, 'usage': u'\n (BOOL:CU, BOOL:CD, BOOL:R, BOOL:LD, DINT:PV) => (BOOL:QU, BOOL:QD, DINT:CV, R_TRIG:CD_T, R_TRIG:CU_T)', 'type': 'functionBlock'}, {'comment': 'The up-down counter has two inputs CU and CD. It can be used to both count up on one input and down on the other.', 'inputs': [('CU', u'BOOL', 'rising'), ('CD', u'BOOL', 'rising'), ('R', u'BOOL', 'none'), ('LD', u'BOOL', 'none'), ('PV', u'LINT', 'none')], 'name': 'CTUD_LINT', 'outputs': [('QU', u'BOOL', 'none'), ('QD', u'BOOL', 'none'), ('CV', u'LINT', 'none'), ('CD_T', 'R_TRIG', 'none'), ('CU_T', 'R_TRIG', 'none')], 'extensible': False, 'usage': u'\n (BOOL:CU, BOOL:CD, BOOL:R, BOOL:LD, LINT:PV) => (BOOL:QU, BOOL:QD, LINT:CV, R_TRIG:CD_T, R_TRIG:CU_T)', 'type': 'functionBlock'}, {'comment': 'The up-down counter has two inputs CU and CD. It can be used to both count up on one input and down on the other.', 'inputs': [('CU', u'BOOL', 'rising'), ('CD', u'BOOL', 'rising'), ('R', u'BOOL', 'none'), ('LD', u'BOOL', 'none'), ('PV', u'UDINT', 'none')], 'name': 'CTUD_UDINT', 'outputs': [('QU', u'BOOL', 'none'), ('QD', u'BOOL', 'none'), ('CV', u'UDINT', 'none'), ('CD_T', 'R_TRIG', 'none'), ('CU_T', 'R_TRIG', 'none')], 'extensible': False, 'usage': u'\n (BOOL:CU, BOOL:CD, BOOL:R, BOOL:LD, UDINT:PV) => (BOOL:QU, BOOL:QD, UDINT:CV, R_TRIG:CD_T, R_TRIG:CU_T)', 'type': 'functionBlock'}, {'comment': 'The up-down counter has two inputs CU and CD. It can be used to both count up on one input and down on the other.', 'inputs': [('CU', u'BOOL', 'rising'), ('CD', u'BOOL', 'rising'), ('R', u'BOOL', 'none'), ('LD', u'BOOL', 'none'), ('PV', u'ULINT', 'none')], 'name': 'CTUD_ULINT', 'outputs': [('QU', u'BOOL', 'none'), ('QD', u'BOOL', 'none'), ('CV', u'ULINT', 'none'), ('CD_T', 'R_TRIG', 'none'), ('CU_T', 'R_TRIG', 'none')], 'extensible': False, 'usage': u'\n (BOOL:CU, BOOL:CD, BOOL:R, BOOL:LD, ULINT:PV) => (BOOL:QU, BOOL:QD, ULINT:CV, R_TRIG:CD_T, R_TRIG:CU_T)', 'type': 'functionBlock'}, {'comment': 'The pulse timer can be used to generate output pulses of a given time duration.', 'inputs': [('IN', u'BOOL', 'none'), ('PT', u'TIME', 'none')], 'name': 'TP', 'outputs': [('Q', u'BOOL', 'none'), ('ET', u'TIME', 'none')], 'extensible': False, 'usage': u'\n (BOOL:IN, TIME:PT) => (BOOL:Q, TIME:ET)', 'type': 'functionBlock'}, {'comment': 'The on-delay timer can be used to delay setting an output true, for fixed period after an input becomes true.', 'inputs': [('IN', u'BOOL', 'none'), ('PT', u'TIME', 'none')], 'name': 'TON', 'outputs': [('Q', u'BOOL', 'none'), ('ET', u'TIME', 'none')], 'extensible': False, 'usage': u'\n (BOOL:IN, TIME:PT) => (BOOL:Q, TIME:ET)', 'type': 'functionBlock'}, {'comment': 'The off-delay timer can be used to delay setting an output false, for fixed period after input goes false.', 'inputs': [('IN', u'BOOL', 'none'), ('PT', u'TIME', 'none')], 'name': 'TOF', 'outputs': [('Q', u'BOOL', 'none'), ('ET', u'TIME', 'none')], 'extensible': False, 'usage': u'\n (BOOL:IN, TIME:PT) => (BOOL:Q, TIME:ET)', 'type': 'functionBlock'}], 'name': 'Standard function blocks'}, {'list': [{'comment': 'The real time clock has many uses including time stamping, setting dates and times of day in batch reports, in alarm messages and so on.', 'inputs': [('IN', u'BOOL', 'none'), ('PDT', u'DT', 'none')], 'name': 'RTC', 'outputs': [('Q', u'BOOL', 'none'), ('CDT', u'DT', 'none')], 'extensible': False, 'usage': u'\n (BOOL:IN, DT:PDT) => (BOOL:Q, DT:CDT)', 'type': 'functionBlock'}, {'comment': 'The integral function block integrates the value of input XIN over time.', 'inputs': [('RUN', u'BOOL', 'none'), ('R1', u'BOOL', 'none'), ('
   MandatoryParams: None
   ChangesToSave: False
   DebugToken: None
   ProgramOffset: 0
   CTNParent: None
   _connector: None
   _Ticktime: 0
   TracedIECTypes: []
   BlockInstanceCollector: <plcopen.BlockInstanceCollector.BlockInstanceCollector object at 0x7f3dc73f6fd0>
   logger: <BeremizIDE.LogPseudoFile object at 0x7f3dc73e4a90>
   Buffering: False
   BeremizRoot: <Element BeremizRoot at 0x7f3dc608dfb0>
   ProjectSaved: True
   StatusMethods: [{'shown': False, 'bitmap': 'Build', 'method': '_Build', 'tooltip': u'Compiler le projet dans le r\xe9pertoire ce compilation', 'name': u'Compiler'}, {'shown': False, 'name': u'Nettoyer', 'enabled': False, 'method': '_Clean', 'tooltip': u'Nettoyer le r\xe9pertoire de compilation', 'bitmap': 'Clean'}, {'shown': True, 'name': u'Ex\xe9cuter', 'enabled': False, 'tooltip': u'Start PLC Simulation', 'bitmap': 'Run', 'method': '_Run'}, {'shown': False, 'bitmap': 'Stop', 'method': '_Stop', 'tooltip': u'Stop PLC Simulation', 'name': u'Arr\xeater'}, {'shown': False, 'bitmap': 'Connect', 'method': '_Connect', 'tooltip': u"Connecter \xe0 l'automate cible", 'name': u'Connecter'}, {'shown': False, 'bitmap': 'Transfer', 'method': '_Transfer', 'tooltip': u"Transf\xe9rer l'automate", 'name': u'Transf\xe9rer'}, {'shown': False, 'bitmap': 'Disconnect', 'method': '_Disconnect', 'tooltip': u"D\xe9connecter l'automate", 'name': u'D\xe9connecter'}, {'shown': False, 'bitmap': 'IDManager', 'method': '_showIDManager', 'tooltip': u'Manage secure connection identities', 'name': u'ID Manager'}, {'shown': False, 'bitmap': 'ShowIECcode', 'method': '_showIECcode', 'tooltip': u'Afficher le code IEC g\xe9n\xe9r\xe9 par PLCGenerator', 'name': u'Afficher le code'}, {'shown': True, 'bitmap': 'down', 'method': '_generateOpenPLC', 'tooltip': u'Generate program for OpenPLC Runtime', 'name': u'G\xe9n\xe9rer le program'}]
   BuildPath: None
   _View: None
   Parser: <xmlclass.xmlclass.XMLClassParser object at 0x7f3dc740c3c0>
   ConfNodeTypes: [{'name': 'Native', 'types': <Element {http://www.plcopen.org/xml/tc6_0201}project at 0x7f3dc5febd70>}, {'name': 'Python', 'types': <Element {http://www.plcopen.org/xml/tc6_0201}project at 0x7f3dc5feb170>}]
   IECdebug_datas: {'__tick__': [<WeakKeyDictionary at 139903292010400>, [], 'Registered', None, True]}
   TracedIECPath: []
   ProgramChunks: [('FUNCTION_BLOCK ', ()), ('INT_TO_BIT', ('P::INT_TO_BIT', 'name')), ('\n', ()), ('  VAR_INPUT', ()), ('\n', ()), ('    ', ()), ('mot_entree', ('P::INT_TO_BIT', 'var_input', 0, 'name')), (' ', ()), (': ', ()), (u'INT', ('P::INT_TO_BIT', 'var_input', 0, 'type')), (';\n', ()), ('  END_VAR\n', ()), ('  VAR_OUTPUT', ()), ('\n', ()), ('    ', ()), ('bit0', ('P::INT_TO_BIT', 'var_output', 1, 'name')), (' ', ()), (': ', ()), (u'BOOL', ('P::INT_TO_BIT', 'var_output', 1, 'type')), (';\n', ()), ('    ', ()), ('bit1', ('P::INT_TO_BIT', 'var_output', 2, 'name')), (' ', ()), (': ', ()), (u'BOOL', ('P::INT_TO_BIT', 'var_output', 2, 'type')), (';\n', ()), ('    ', ()), ('bit2', ('P::INT_TO_BIT', 'var_output', 3, 'name')), (' ', ()), (': ', ()), (u'BOOL', ('P::INT_TO_BIT', 'var_output', 3, 'type')), (';\n', ()), ('    ', ()), ('bit3', ('P::INT_TO_BIT', 'var_output', 4, 'name')), (' ', ()), (': ', ()), (u'BOOL', ('P::INT_TO_BIT', 'var_output', 4, 'type')), (';\n', ()), ('  END_VAR\n', ()), ('  VAR', ()), ('\n', ()), ('    ', ()), ('EQ84_OUT', ('P::INT_TO_BIT', 'var_local', 5, 'name')), (' ', ()), (': ', ()), ('BOOL', ('P::INT_TO_BIT', 'var_local', 5, 'type')), (';\n', ()), ('    ', ()), ('EQ92_OUT', ('P::INT_TO_BIT', 'var_local', 6, 'name')), (' ', ()), (': ', ()), ('BOOL', ('P::INT_TO_BIT', 'var_local', 6, 'type')), (';\n', ()), ('    ', ()), ('EQ6_OUT', ('P::INT_TO_BIT', 'var_local', 7, 'name')), (' ', ()), (': ', ()), ('BOOL', ('P::INT_TO_BIT', 'var_local', 7, 'type')), (';\n', ()), ('    ', ()), ('EQ12_OUT', ('P::INT_TO_BIT', 'var_local', 8, 'name')), (' ', ()), (': ', ()), ('BOOL', ('P::INT_TO_BIT', 'var_local', 8, 'type')), (';\n', ()), ('    ', ()), ('EQ88_OUT', ('P::INT_TO_BIT', 'var_local', 9, 'name')), (' ', ()), (': ', ()), ('BOOL', ('P::INT_TO_BIT', 'var_local', 9, 'type')), (';\n', ()), ('    ', ()), ('EQ9_OUT', ('P::INT_TO_BIT', 'var_local', 10, 'name')), (' ', ()), (': ', ()), ('BOOL', ('P::INT_TO_BIT', 'var_local', 10, 'type')), (';\n', ()), ('    ', ()), ('EQ2_OUT', ('P::INT_TO_BIT', 'var_local', 11, 'name')), (' ', ()), (': ', ()), ('BOOL', ('P::INT_TO_BIT', 'var_local', 11, 'type')), (';\n', ()), ('    ', ()), ('EQ15_OUT', ('P::INT_TO_BIT', 'var_local', 12, 'name')), (' ', ()), (': ', ()), ('BOOL', ('P::INT_TO_BIT', 'var_local', 12, 'type')), (';\n', ()), ('  END_VAR\n', ()), ('\n', ()), ('  ', ()), ('EQ84_OUT', ('P::INT_TO_BIT', 'block', 84, 'output', 0)), (' := ', ()), ('EQ', ('P::INT_TO_BIT', 'block', 84, 'type')), ('(', ()), ('mot_entree', ('P::INT_TO_BIT', 'io_variable', 83, 'expression')), (', ', ()), ('1', ('P::INT_TO_BIT', 'io_variable', 85, 'expression')), (');\n', ()), ('  ', ()), ('EQ92_OUT', ('P::INT_TO_BIT', 'block', 92, 'output', 0)), (' := ', ()), ('EQ', ('P::INT_TO_BIT', 'block', 92, 'type')), ('(', ()), ('mot_entree', ('P::INT_TO_BIT', 'io_variable', 91, 'expression')), (', ', ()), ('3', ('P::INT_TO_BIT', 'io_variable', 93, 'expression')), (');\n', ()), ('  ', ()), ('EQ6_OUT', ('P::INT_TO_BIT', 'block', 6, 'output', 0)), (' := ', ()), ('EQ', ('P::INT_TO_BIT', 'block', 6, 'type')), ('(', ()), ('mot_entree', ('P::INT_TO_BIT', 'io_variable', 5, 'expression')), (', ', ()), ('5', ('P::INT_TO_BIT', 'io_variable', 8, 'expression')), (');\n', ()), ('  ', ()), ('EQ12_OUT', ('P::INT_TO_BIT', 'block', 12, 'output', 0)), (' := ', ()), ('EQ', ('P::INT_TO_BIT', 'block', 12, 'type')), ('(', ()), ('mot_entree', ('P::INT_TO_BIT', 'io_variable', 11, 'expression')), (', ', ()), ('7', ('P::INT_TO_BIT', 'io_variable', 13, 'expression')), (');\n', ()), ('  ', ()), ('bit0', ('P::INT_TO_BIT', 'coil', 87, 'reference')), (' := ', ()), ('EQ12_OUT', ('P::INT_TO_BIT', 'block', 12, 'output', 0)), (' OR ', ()), ('EQ6_OUT', ('P::INT_TO_BIT', 'block', 6, 'output', 0)), (' OR ', ()), ('EQ84_OUT', ('P::INT_TO_BIT', 'block', 84, 'output', 0)), (' OR ', ()), ('EQ92_OUT', ('P::INT_TO_BIT', 'block', 92, 'output', 0)), (';\n', ()), ('  ', ()), ('EQ88_OUT', ('P::INT_TO_BIT', 'block', 88, 'output', 0)), (' := ', ()), ('EQ', ('P::INT_TO_BIT', 'block', 88, 'type')), ('(', ()), ('mot_entree', ('P::INT_TO_BIT', 'io_variable', 86, 'expression')), (', ', ()), ('2', ('P::INT_TO_BIT', 'io_variable', 89, 'expression')), (');\n', ()), ('  ', ()), ('EQ9_OUT', ('P::INT_TO_BIT', 'block', 9, 'output', 0)), (' := ', ()), ('EQ', ('P::INT_TO_BIT', 'block', 9, 'type')), ('(', ()), ('mot_entree', ('P::INT_TO_BIT', 'io_variable', 7, 'expression')), (', ', ()), ('6', ('P::INT_TO_BIT', 'io_variable', 10, 'expression')), (');\n', ()), ('  ', ()), ('bit1', ('P::INT_TO_BIT', 'coil', 90, 'reference')), (' := ', ()), ('EQ12_OUT', ('P::INT_TO_BIT', 'block', 12, 'output', 0)), (' OR ', ()), ('EQ88_OUT', ('P::INT_TO_BIT', 'block', 88, 'output', 0)), (' OR ', ()), ('EQ92_OUT', ('P::INT_TO_BIT', 'block', 92, 'output', 0)), (' OR ', ()), ('EQ9_OUT', ('P::INT_TO_BIT', 'block', 9, 'output', 0)), (';\n', ()), ('  ', ()), ('EQ2_OUT', ('P::INT_TO_BIT', 'block', 2, 'output', 0)), (' := ', ()), ('EQ', ('P::INT_TO_BIT', 'block', 2, 'type')), ('(', ()), ('mot_entree', ('P::INT_TO_BIT', 'io_variable', 1, 'expression')), (', ', ()), ('4', ('P::INT_TO_BIT', 'io_variable', 3, 'expression')), (');\n', ()), ('  ', ()), ('bit2', ('P::INT_TO_BIT', 'coil', 4, 'reference')), (' := ', ()), ('EQ12_OUT', ('P::INT_TO_BIT', 'block', 12, 'output', 0)), (' OR ', ()), ('EQ2_OUT', ('P::INT_TO_BIT', 'block', 2, 'output', 0)), (' OR ', ()), ('EQ6_OUT', ('P::INT_TO_BIT', 'block', 6, 'output', 0)), (' OR ', ()), ('EQ9_OUT', ('P::INT_TO_BIT', 'block', 9, 'output', 0)), (';\n', ()), ('  ', ()), ('EQ15_OUT', ('P::INT_TO_BIT', 'block', 15, 'output', 0)), (' := ', ()), ('EQ', ('P::INT_TO_BIT', 'block', 15, 'type')), ('(', ()), ('mot_entree', ('P::INT_TO_BIT', 'io_variable', 14, 'expression')), (', ', ()), ('8', ('P::INT_TO_BIT', 'io_variable', 16, 'expression')), (');\n', ()), ('  ', ()), ('bit3', ('P::INT_TO_BIT', 'coil', 17, 'reference')), (' := ', ()), ('EQ15_OUT', ('P::INT_TO_BIT', 'block', 15, 'output', 0)), (';\n', ()), ('END_FUNCTION_BLOCK\n\n', ()), ('PROGRAM ', ()), ('Cuve', ('P::Cuve', 'name')), ('\n', ()), ('  VAR_EXTERNAL', ()), ('\n', ()), ('    ', ()), ('BIT_0', ('P::Cuve', 'var_local', 0, 'name')), (' ', ()), (': ', ()), (u'BOOL', ('P::Cuve', 'var_local', 0, 'type')), (';\n', ()), ('    ', ()), ('BIT_NHC', ('P::Cuve', 'var_local', 1, 'name')), (' ', ()), (': ', ()), (u'BOOL', ('P::Cuve', 'var_local', 1, 'type')), (';\n', ()), ('    ', ()), ('BIT_PLUIE', ('P::Cuve', 'var_local', 2, 'name')), (' ', ()), (': ', ()), (u'BOOL', ('P::Cuve', 'var_local', 2, 'type')), (';\n', ()), ('    ', ()), ('BIT_ARRET', ('P::Cuve', 'var_local', 3, 'name')), (' ', ()), (': ', ()), (u'BOOL', ('P::Cuve', 'var_local', 3, 'type')), (';\n', ()), ('    ', ()), ('CAPACITE_CUVE', ('P::Cuve', 'var_local', 4, 'name')), (' ', ()), (': ', ()), (u'INT', ('P::Cuve', 'var_local', 4, 'type')), (';\n', ()), ('    ', ()), ('QUANTITE_CUVE', ('P::Cuve', 'var_local', 5, 'name')), (' ', ()), (': ', ()), (u'INT', ('P::Cuve', 'var_local', 5, 'type')), (';\n', ()), ('    ', ()), ('QUANTITE_EAU', ('P::Cuve', 'var_local', 6, 'name')), (' ', ()), (': ', ()), (u'INT', ('P::Cuve', 'var_local', 6, 'type')), (';\n', ()), ('    ', ()), ('DUREE_PLUIE', ('P::Cuve', 'var_local', 7, 'name')), (' ', ()), (': ', ()), (u'DINT', ('P::Cuve', 'var_local', 7, 'type')), (';\n', ()), ('    ', ()), ('VAL_TERRAIN_HUMIDE', ('P::Cuve', 'var_local', 8, 'name')), (' ', ()), (': ', ()), (u'DINT', ('P::Cuve', 'var_local', 8, 'type')), (';\n', ()), ('    ', ()), ('VAL_TERRAIN_TREMPE', ('P::Cuve', 'var_local', 9, 'name')), (' ', ()), (': ', ()), (u'DINT', ('P::Cuve', 'var_local', 9, 'type')), (';\n', ()), ('    ', ()), ('VAL_MASQ_TER_HUM', ('P::Cuve', 'var_local', 10, 'name')), (' ', ()), (': ', ()), (u'DINT', ('P::Cuve', 'var_local', 10, 'type')), (';\n', ()), ('    ', ()), ('VAL_MASQ_TER_TREMP', ('P::Cuve', 'var_local', 11, 'name')), (' ', ()), (': ', ()), (u'DINT', ('P::Cuve', 'var_local', 11, 'type')), (';\n', ()), ('    ', ()), ('TEMPO_MASQ_TER_HUM', ('P::Cuve', 'var_local', 12, 'name')), (' ', ()), (': ', ()), (u'DINT', ('P::Cuve', 'var_local', 12, 'type')), (';\n', ()), ('    ', ()), ('TEMPO_MASQ_TER_TREMP', ('P::Cuve', 'var_local', 13, 'name')), (' ', ()), (': ', ()), (u'DINT', ('P::Cuve', 'var_local', 13, 'type')), (';\n', ()), ('    ', ()), ('FIN_ARROSAGE', ('P::Cuve', 'var_local', 14, 'name')), (' ', ()), (': ', ()), (u'BOOL', ('P::Cuve', 'var_local', 14, 'type')), (';\n', ()), ('    ', ()), ('Pulse_1s', ('P::Cuve', 'var_local', 15, 'name')), (' ', ()), (': ', ()), (u'BOOL', ('P::Cuve', 'var_local', 15, 'type')), (';\n', ()), ('    ', ()), ('TERRAIN_HUM', ('P::Cuve', 'var_local', 16, 'name')), (' ', ()), (': ', ()), (u'BOOL', ('P::Cuve', 'var_local', 16, 'type')), (';\n', ()), ('    ', ()), ('MASQ_TER_HUM', ('P::Cuve', 'var_local', 17, 'name')), (' ', ()), (': ', ()), (u'BOOL', ('P::Cuve', 'var_local', 17, 'type')), (';\n', ()), ('    ', ()), ('MASQ_TER_TREMP', ('P::Cuve', 'var_local', 18, 'name')), (' ', ()), (': ', ()), (u'BOOL', ('P::Cuve', 'var_local', 18, 'type')), (';\n', ()), ('    ', ()), ('TERRAIN_TREMP', ('P::Cuve', 'var_local', 19, 'name')), (' ', ()), (': ', ()), (u'BOOL', ('P::Cuve', 'var_local', 19, 'type')), (';\n', ()), ('    ', ()), ('CUVE_NON_VIDE', ('P::Cuve', 'var_local', 20, 'name')), (' ', ()), (': ', ()), (u'BOOL', ('P::Cuve', 'var_local', 20, 'type')), (';\n', ()), ('  END_VAR\n', ()), ('  VAR', ()), ('\n', ()), ('    ', ()), ('SR0', ('P::Cuve', 'var_local', 21, 'name')), (' ', ()), (': ', ()), ('SR', ('P::Cuve', 'var_local', 21, 'type')), (';\n', ()), ('    ', ()), ('SR1', ('P::Cuve', 'var_local', 22, 'name')), (' ', ()), (': ', ()), ('SR', ('P::Cuve', 'var_local', 22, 'type')), (';\n', ()), ('    ', ()), ('R_TRIG1', ('P::Cuve', 'var_local', 23, 'name')), (' ', ()), (': ', ()), ('R_TRIG', ('P::Cuve', 'var_local', 23, 'type')), (';\n', ()), ('    ', ()), ('NE26_ENO', ('P::Cuve', 'var_local', 24, 'name')), (' ', ()), (': ', ()), ('BOOL', ('P::Cuve', 'var_local', 24, 'type')), (';\n', ()), ('    ', ()), ('NE26_OUT', ('P::Cuve',
   Project: <Element {http://www.plcopen.org/xml/tc6_0201}project at 0x7f3dc60cde90>
   ConfNodeMethods: [{'bitmap': 'editIECrawcode', 'method': '_editIECrawcode', 'tooltip': u'Editer le code IEC ajout\xe9 au code g\xe9n\xe9r\xe9 par PLCGenerator', 'name': u'Ajout code IEC'}, {'bitmap': 'ManageFolder', 'method': '_OpenProjectFiles', 'tooltip': u'Ouvrir un explorateur de fichier pour g\xe9rer les fichiers de projet', 'name': u'Fichiers de projet'}]
   debug_break: False
   CurrentElementEditing: None
   _DbgVariablesList: None
   NextCompiledProject: <Element {http://www.plcopen.org/xml/tc6_0201}project at 0x7f3dc5f35650>
   CurrentCompiledProject: None
   _ProgramList: None
   FilePath: '/home/florian/CloudStation/Projets/Programmes/ArrosageAuto/plc.xml'
   DispatchDebugValuesTimer: <wx._misc.Timer; proxy of <Swig Object of type 'wxPyTimer *' at 0x55e985590d00> >
   ProjectPath: '/home/florian/CloudStation/Projets/Programmes/ArrosageAuto'
   TotalTypesDict: OrderedDict([('SR', [('Standard function blocks', {'comment': 'The SR bistable is a latch where the Set dominates.', 'inputs': [('S1', u'BOOL', 'none'), ('R', u'BOOL', 'none')], 'name': 'SR', 'outputs': [('Q1', u'BOOL', 'none')], 'extensible': False, 'usage': u'\n (BOOL:S1, BOOL:R) => (BOOL:Q1)', 'type': 'functionBlock'})]), ('RS', [('Standard function blocks', {'comment': 'The RS bistable is a latch where the Reset dominates.', 'inputs': [('S', u'BOOL', 'none'), ('R1', u'BOOL', 'none')], 'name': 'RS', 'outputs': [('Q1', u'BOOL', 'none')], 'extensible': False, 'usage': u'\n (BOOL:S, BOOL:R1) => (BOOL:Q1)', 'type': 'functionBlock'})]), ('SEMA', [('Standard function blocks', {'comment': 'The semaphore provides a mechanism to allow software elements mutually exclusive access to certain resources.', 'inputs': [('CLAIM', u'BOOL', 'none'), ('RELEASE', u'BOOL', 'none')], 'name': 'SEMA', 'outputs': [('BUSY', u'BOOL', 'none')], 'extensible': False, 'usage': u'\n (BOOL:CLAIM, BOOL:RELEASE) => (BOOL:BUSY)', 'type': 'functionBlock'})]), ('R_TRIG', [('Standard function blocks', {'comment': 'The output produces a single pulse when a rising edge is detected.', 'inputs': [('CLK', u'BOOL', 'none')], 'name': 'R_TRIG', 'outputs': [('Q', u'BOOL', 'none')], 'extensible': False, 'usage': u'\n (BOOL:CLK) => (BOOL:Q)', 'type': 'functionBlock'})]), ('F_TRIG', [('Standard function blocks', {'comment': 'The output produces a single pulse when a falling edge is detected.', 'inputs': [('CLK', u'BOOL', 'none')], 'name': 'F_TRIG', 'outputs': [('Q', u'BOOL', 'none')], 'extensible': False, 'usage': u'\n (BOOL:CLK) => (BOOL:Q)', 'type': 'functionBlock'})]), ('CTU', [('Standard function blocks', {'comment': 'The up-counter can be used to signal when a count has reached a maximum value.', 'inputs': [('CU', u'BOOL', 'rising'), ('R', u'BOOL', 'none'), ('PV', u'INT', 'none')], 'name': 'CTU', 'outputs': [('Q', u'BOOL', 'none'), ('CV', u'INT', 'none')], 'extensible': False, 'usage': u'\n (BOOL:CU, BOOL:R, INT:PV) => (BOOL:Q, INT:CV)', 'type': 'functionBlock'})]), ('CTU_DINT', [('Standard function blocks', {'comment': 'The up-counter can be used to signal when a count has reached a maximum value.', 'inputs': [('CU', u'BOOL', 'rising'), ('R', u'BOOL', 'none'), ('PV', u'DINT', 'none')], 'name': 'CTU_DINT', 'outputs': [('Q', u'BOOL', 'none'), ('CV', u'DINT', 'none')], 'extensible': False, 'usage': u'\n (BOOL:CU, BOOL:R, DINT:PV) => (BOOL:Q, DINT:CV)', 'type': 'functionBlock'})]), ('CTU_LINT', [('Standard function blocks', {'comment': 'The up-counter can be used to signal when a count has reached a maximum value.', 'inputs': [('CU', u'BOOL', 'rising'), ('R', u'BOOL', 'none'), ('PV', u'LINT', 'none')], 'name': 'CTU_LINT', 'outputs': [('Q', u'BOOL', 'none'), ('CV', u'LINT', 'none')], 'extensible': False, 'usage': u'\n (BOOL:CU, BOOL:R, LINT:PV) => (BOOL:Q, LINT:CV)', 'type': 'functionBlock'})]), ('CTU_UDINT', [('Standard function blocks', {'comment': 'The up-counter can be used to signal when a count has reached a maximum value.', 'inputs': [('CU', u'BOOL', 'rising'), ('R', u'BOOL', 'none'), ('PV', u'UDINT', 'none')], 'name': 'CTU_UDINT', 'outputs': [('Q', u'BOOL', 'none'), ('CV', u'UDINT', 'none')], 'extensible': False, 'usage': u'\n (BOOL:CU, BOOL:R, UDINT:PV) => (BOOL:Q, UDINT:CV)', 'type': 'functionBlock'})]), ('CTU_ULINT', [('Standard function blocks', {'comment': 'The up-counter can be used to signal when a count has reached a maximum value.', 'inputs': [('CU', u'BOOL', 'rising'), ('R', u'BOOL', 'none'), ('PV', u'ULINT', 'none')], 'name': 'CTU_ULINT', 'outputs': [('Q', u'BOOL', 'none'), ('CV', u'ULINT', 'none')], 'extensible': False, 'usage': u'\n (BOOL:CU, BOOL:R, ULINT:PV) => (BOOL:Q, ULINT:CV)', 'type': 'functionBlock'})]), ('CTD', [('Standard function blocks', {'comment': 'The down-counter can be used to signal when a count has reached zero, on counting down from a preset value.', 'inputs': [('CD', u'BOOL', 'rising'), ('LD', u'BOOL', 'none'), ('PV', u'INT', 'none')], 'name': 'CTD', 'outputs': [('Q', u'BOOL', 'none'), ('CV', u'INT', 'none')], 'extensible': False, 'usage': u'\n (BOOL:CD, BOOL:LD, INT:PV) => (BOOL:Q, INT:CV)', 'type': 'functionBlock'})]), ('CTD_DINT', [('Standard function blocks', {'comment': 'The down-counter can be used to signal when a count has reached zero, on counting down from a preset value.', 'inputs': [('CD', u'BOOL', 'rising'), ('LD', u'BOOL', 'none'), ('PV', u'DINT', 'none')], 'name': 'CTD_DINT', 'outputs': [('Q', u'BOOL', 'none'), ('CV', u'DINT', 'none')], 'extensible': False, 'usage': u'\n (BOOL:CD, BOOL:LD, DINT:PV) => (BOOL:Q, DINT:CV)', 'type': 'functionBlock'})]), ('CTD_LINT', [('Standard function blocks', {'comment': 'The down-counter can be used to signal when a count has reached zero, on counting down from a preset value.', 'inputs': [('CD', u'BOOL', 'rising'), ('LD', u'BOOL', 'none'), ('PV', u'LINT', 'none')], 'name': 'CTD_LINT', 'outputs': [('Q', u'BOOL', 'none'), ('CV', u'LINT', 'none')], 'extensible': False, 'usage': u'\n (BOOL:CD, BOOL:LD, LINT:PV) => (BOOL:Q, LINT:CV)', 'type': 'functionBlock'})]), ('CTD_UDINT', [('Standard function blocks', {'comment': 'The down-counter can be used to signal when a count has reached zero, on counting down from a preset value.', 'inputs': [('CD', u'BOOL', 'rising'), ('LD', u'BOOL', 'none'), ('PV', u'UDINT', 'none')], 'name': 'CTD_UDINT', 'outputs': [('Q', u'BOOL', 'none'), ('CV', u'UDINT', 'none')], 'extensible': False, 'usage': u'\n (BOOL:CD, BOOL:LD, UDINT:PV) => (BOOL:Q, UDINT:CV)', 'type': 'functionBlock'})]), ('CTD_ULINT', [('Standard function blocks', {'comment': 'The down-counter can be used to signal when a count has reached zero, on counting down from a preset value.', 'inputs': [('CD', u'BOOL', 'rising'), ('LD', u'BOOL', 'none'), ('PV', u'ULINT', 'none')], 'name': 'CTD_ULINT', 'outputs': [('Q', u'BOOL', 'none'), ('CV', u'ULINT', 'none')], 'extensible': False, 'usage': u'\n (BOOL:CD, BOOL:LD, ULINT:PV) => (BOOL:Q, ULINT:CV)', 'type': 'functionBlock'})]), ('CTUD', [('Standard function blocks', {'comment': 'The up-down counter has two inputs CU and CD. It can be used to both count up on one input and down on the other.', 'inputs': [('CU', u'BOOL', 'rising'), ('CD', u'BOOL', 'rising'), ('R', u'BOOL', 'none'), ('LD', u'BOOL', 'none'), ('PV', u'INT', 'none')], 'name': 'CTUD', 'outputs': [('QU', u'BOOL', 'none'), ('QD', u'BOOL', 'none'), ('CV', u'INT', 'none'), ('CD_T', 'R_TRIG', 'none'), ('CU_T', 'R_TRIG', 'none')], 'extensible': False, 'usage': u'\n (BOOL:CU, BOOL:CD, BOOL:R, BOOL:LD, INT:PV) => (BOOL:QU, BOOL:QD, INT:CV, R_TRIG:CD_T, R_TRIG:CU_T)', 'type': 'functionBlock'})]), ('CTUD_DINT', [('Standard function blocks', {'comment': 'The up-down counter has two inputs CU and CD. It can be used to both count up on one input and down on the other.', 'inputs': [('CU', u'BOOL', 'rising'), ('CD', u'BOOL', 'rising'), ('R', u'BOOL', 'none'), ('LD', u'BOOL', 'none'), ('PV', u'DINT', 'none')], 'name': 'CTUD_DINT', 'outputs': [('QU', u'BOOL', 'none'), ('QD', u'BOOL', 'none'), ('CV', u'DINT', 'none'), ('CD_T', 'R_TRIG', 'none'), ('CU_T', 'R_TRIG', 'none')], 'extensible': False, 'usage': u'\n (BOOL:CU, BOOL:CD, BOOL:R, BOOL:LD, DINT:PV) => (BOOL:QU, BOOL:QD, DINT:CV, R_TRIG:CD_T, R_TRIG:CU_T)', 'type': 'functionBlock'})]), ('CTUD_LINT', [('Standard function blocks', {'comment': 'The up-down counter has two inputs CU and CD. It can be used to both count up on one input and down on the other.', 'inputs': [('CU', u'BOOL', 'rising'), ('CD', u'BOOL', 'rising'), ('R', u'BOOL', 'none'), ('LD', u'BOOL', 'none'), ('PV', u'LINT', 'none')], 'name': 'CTUD_LINT', 'outputs': [('QU', u'BOOL', 'none'), ('QD', u'BOOL', 'none'), ('CV', u'LINT', 'none'), ('CD_T', 'R_TRIG', 'none'), ('CU_T', 'R_TRIG', 'none')], 'extensible': False, 'usage': u'\n (BOOL:CU, BOOL:CD, BOOL:R, BOOL:LD, LINT:PV) => (BOOL:QU, BOOL:QD, LINT:CV, R_TRIG:CD_T, R_TRIG:CU_T)', 'type': 'functionBlock'})]), ('CTUD_UDINT', [('Standard function blocks', {'comment': 'The up-down counter has two inputs CU and CD. It can be used to both count up on one input and down on the other.', 'inputs': [('CU', u'BOOL', 'rising'), ('CD', u'BOOL', 'rising'), ('R', u'BOOL', 'none'), ('LD', u'BOOL', 'none'), ('PV', u'UDINT', 'none')], 'name': 'CTUD_UDINT', 'outputs': [('QU', u'BOOL', 'none'), ('QD', u'BOOL', 'none'), ('CV', u'UDINT', 'none'), ('CD_T', 'R_TRIG', 'none'), ('CU_T', 'R_TRIG', 'none')], 'extensible': False, 'usage': u'\n (BOOL:CU, BOOL:CD, BOOL:R, BOOL:LD, UDINT:PV) => (BOOL:QU, BOOL:QD, UDINT:CV, R_TRIG:CD_T, R_TRIG:CU_T)', 'type': 'functionBlock'})]), ('CTUD_ULINT', [('Standard function blocks', {'comment': 'The up-down counter has two inputs CU and CD. It can be used to both count up on one input and down on the other.', 'inputs': [('CU', u'BOOL', 'rising'), ('CD', u'BOOL', 'rising'), ('R', u'BOOL', 'none'), ('LD', u'BOOL', 'none'), ('PV', u'ULINT', 'none')], 'name': 'CTUD_ULINT', 'outputs': [('QU', u'BOOL', 'none'), ('QD', u'BOOL', 'none'), ('CV', u'ULINT', 'none'), ('CD_T', 'R_TRIG', 'none'), ('CU_T', 'R_TRIG', 'none')], 'extensible': False, 'usage': u'\n (BOOL:CU, BOOL:CD, BOOL:R, BOOL:LD, ULINT:PV) => (BOOL:QU, BOOL:QD, ULINT:CV, R_TRIG:CD_T, R_TRIG:CU_T)', 'type': 'functionBlock'})]), ('TP', [('Standard function blocks', {'comment': 'The pulse timer can be used to generate output pulses of a given time duration.', 'inputs': [('IN', u'BOOL', 'none'), ('PT', u'TIME', 'none')], 'name': 'TP', 'outputs': [('Q', u'BOOL', 'none'), ('ET', u'TIME', 'none')], 'extensible': False, 'usage': u'\n (BOOL:IN, TIME:PT) => (BOOL:Q, TIME:ET)', 'type': 'functionBlock'})]), ('TON', [('Standard function blocks', {'comment': 'The on-delay timer can be used to delay setting an output true, for fixed period after an input becomes true.', 'inputs': [('IN', u'BOOL', 'none'), ('PT', u'TIME', 'none')], 'name': 'TON', 'outputs': [('Q', u'BOOL', 'none'), ('ET', u'TIME', 'none')], 'extensible': False, 'usage': u'\n (BOOL:IN, TIME:PT) => (BOOL:Q, TIME:ET)', 'typ
   ProgramFilePath: ''
   previous_plcstate: 'Disconnected'
   FileName: u'plc'
   _builder: None
   _IECPathToIdx: {}
   CTNType: 'Beremiz'
   ProjectBufferEnabled: True
   VariableInfoCollector: <plcopen.VariableInfoCollector.VariableInfoCollector object at 0x7f3dc6124510>
   LastNewIndex: 0
   Children: {}
   DebugTimer: None

traceback:
 File "/home/florian/T?l?chargements/OpenPLC_Editor/editor/BeremizIDE.py", line 802, in OnMenu
   getattr(self.CTR, method)()
 File "/home/florian/T?l?chargements/OpenPLC_Editor/editor/ProjectController.py", line 1772, in _Run
   if (self._Build() is False):
 File "/home/florian/T?l?chargements/OpenPLC_Editor/editor/ProjectController.py", line 1143, in _Build
   IECGenRes = self._Generate_SoftPLC()
 File "/home/florian/T?l?chargements/OpenPLC_Editor/editor/ProjectController.py", line 756, in _Generate_SoftPLC
   if self._Generate_PLC_ST():
 File "/home/florian/T?l?chargements/OpenPLC_Editor/editor/ProjectController.py", line 785, in _Generate_PLC_ST
   self._getIECgeneratedcodepath())
 File "/home/florian/T?l?chargements/OpenPLC_Editor/editor/PLCControler.py", line 458, in GenerateProgram
   program_text = "".join([item[0] for item in self.ProgramChunks])
<type 'exceptions.TypeError'>: sequence item 3826: expected string or Unicode, NoneType found

wx-platform:
__WXGTK__

wx-version:
3.0.2.0


------------------------------



------------------------------

Subject: Digest Footer

_______________________________________________
Beremiz-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/beremiz-devel


------------------------------

End of Beremiz-devel Digest, Vol 110, Issue 2
*********************************************


_______________________________________________
Beremiz-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/beremiz-devel