Lwyrn Inserito: 3 dicembre 2019 Segnala Share Inserito: 3 dicembre 2019 (modificato) Salve a tutti, Voglio far comunicare un Controllino Mega ed un PLC Wago tramite RS485 RTU. Sto usando un Wago PFC200 750-8212 con un modulo 750-653/003-000. Lascio qui un link con il manuale del modulohttps://www.wago.com/medias/m07500653-00000000-0en.pdf?context=bWFzdGVyfGRvd25sb2Fkc3w0NDEwODF8YXBwbGljYXRpb24vcGRmfGRvd25sb2Fkcy9oNGMvaDkzLzk4NjY5NzI0MzAzNjYucGRmfDRhZWZiOWI3NjI5M2U2ZGYzYmQwMTRkODlmY2FlYzQyM2M4ZmEyODcwMTU2MjA4OWZlZGQ5ZDMwNTgzOTJlODY&attachment=true Sto usando il diagramma di collegamento che c'è alla pagina 13 (Bus Connection). Ho collegato il TX+ and RX+ del modulo al terminale RS485+ del controllino e TX- e RX- al terminale RS485 - . Alimentando il controllino a 24v ed usando il Serial Monitor trmaite la porta USB. Sto usando la demo del Controllino per la lettura itialize serial port for debug messages. */ Serial.begin(9600); /* Initialize CONTROLLINO RS485 direction control DE/RE pins and Serial3 */ Controllino_RS485Init(9600); Controllino_RS485RxEnable(); Serial.println("Recieving RS485... 1"); } void loop() { // send data only when you receive data: if (Serial3.available() > 0) { // read the incoming byte from RS485 incomingByte = Serial3.read(); // say what you got: Serial.print("I received (DEC): "); Serial.println(incomingByte, DEC); // and send it back to RS485 Controllino_RS485TxEnable(); Serial3.write(incomingByte); Serial3.flush(); // wait until the trasmission is complete Controllino_RS485RxEnable(); } } E la demo della libreria WagoAppPlcModBus per la comunicazione come master PROGRAM PLC_PRG VAR test1 : BYTE; test2 : BYTE; mySerialMaster : FbMbMasterSerial := ( xConnect := TRUE, udiBaudrate := 9600, usiDataBits := 8, eParity := eTTYParity.None, eStopBits := eTTYHandshake.None, ePhysical := eTTYPhysicalLayer.RS485_Halfduplex, eFrameType := eMbFrameType.RTU, tTimeOut := T#50MS ); utQuery : typMbQuery := ( bUnitId := 1, bFunctionCode := 16#04, uiReadAddress := 0, uiReadQuantity := 10, uiWriteAddress := 0, uiWriteQuantity := 8, awWriteData := [1,1,1,1,1,1,1,1,1] ); xTxTrigger : BOOL; utResponse : typMbResponse; tonDelay : TON := (PT := T#20MS); END_VAR IoConfig_Globals_Mapping.an1 := 27648; tonDelay( IN := (NOT tonDelay.Q) AND (NOT xTxTrigger)); xTxTrigger S= tonDelay.Q; mySerialMaster( I_Port := IoConfig_Globals.RS485_Interface_Adjust, utQuery := utQuery, xTrigger := xTxTrigger, utResponse := utResponse ); Però non sembra arrivare assolutamente nulla al Controllino. Cosa sto sbagliando? Grazie Modificato: 3 dicembre 2019 da Lwyrn Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora