MrPLC Member
  • Content count

  • Joined

  • Last visited

Community Reputation

1 Neutral

About HanaH

  • Rank
    Hi, I am New!

Profile Information

  • Country Netherlands
  1. Yes. The hardware I got from Ebay was broken. With new hardware it worked. What is your problem?
  2. 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.
  3. 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;