HanaH

MrPLC Member
  • Content count

    2
  • Joined

  • Last visited

Community Reputation

0 Neutral

About HanaH

  • Rank
    Hi, I am New!

Profile Information

  • Country Netherlands
  1. Beckhoff twincat forcing output

    If you want to force an output try it directly on your I/O-terminal, there you can online force each channel.
  2. Hi all, New to the forum. I've been pretty much able to do the things I wanted with Beckhoff, but now I'm finally running into a problem I can't seem to solve alone. I'm trying to set-up Modbus RTU RS485 communication in Twincat3, using an EL6021. I've implemented a sample program from the Beckhoff website, but can't get it to work. I've got the feeling I need to properly set up the EL6021 but most information on the Beckhoff website is about the KL-series IO. Does anybody have experience with this? The strange thing is that, when I enable the function to read some slave's registers, BUSY is set and remains set. No timeout is triggered. I don't have a slave connected yet but I would at least expect to see something on the output of the terminal, and then a timeout. I've bridged TxD+ and RxD+, and TxD- and RxD- and set 8000:06 of the EL6021 TRUE, half duplex mode enabled). A scope connected to TxD+ and TxD- shows nothing. Code added below. I've added a GVL called 'Variable_Configuration' with the following: VAR_CONFIG     Main.MB.InData AT %IB0 : MB_KL6inData5B;     Main.MB.OutData AT %QB0 : MB_KL6outData5B; END_VAR And then the MAIN: PROGRAM MAIN VAR     bIoSyncMaster AT %I* : BOOL;     MB : ModbusRTUmaster_KL6x5B;     MBLedDriver : ARRAY[1..10] OF WORD;     tmpExecute : BOOL;     bError : BOOL;     bBusy : BOOL;     iErrorId: MODBUS_ERRORS;     iNoDatByteRead: UINT;     count: INT;     freebyte: INT;     TxError: INT;     TxBlocked: BOOL; END_VAR MB(     UnitID:= 41,     Quantity:= 4,     MBAddr:= 16#0020,     cbLength:= SIZEOF(MBLedDriver),     pMemoryAddr:= ADR(MBLedDriver),     Execute:= tmpExecute,     Timeout:= T#5S ,     BUSY=> bBusy,     Error=> bError,     ErrorId=> iErrorId,     cbRead=> iNoDatByteRead);      MB.ReadRegs(); count := MB.MBMaster.com.Buffer.Tx.count; freebyte := MB.MBMaster.com.Buffer.Tx.FreeByte; TxError := MB.MBMaster.com.Buffer.Tx.Error; TxBlocked := MB.MBMaster.com.Buffer.Tx.Blocked; tmpExecute:=FALSE;