Search the Community

Showing results for tags 'cp1l connected with scanner symbol ds-4308 reading 2d data matrix'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Found 217 results

  1. High Pressure PID Control

    Hello everyone, Not sure if I have the right forum, so please forgive me; but... I have a control loop to tune, and it's the first one that I've ever been in charge of.  My question is about tuning PID.  The loop I have to tune is controlling a pressure reactor to setpoints ~3000psi with a safety valve that blows around 4500 psi.  My question is what procedure you might go through to tune it safely.  I'm quite honestly a bit afraid of the high pressures and I really don't want to make anything "pop".  What also makes it tricky is that the reactor has to heat up to get to full pressure.  Without heat, the reactor will reach ~1000 psi, then it sits there for a long time and eventually the heat kicks in and the pressure can rises up very quickly. I currently have a very small gain value, something like 0.009 and an integral time of ~7sec.  I'm getting pretty good results in that the PID controller will bring the reactor up to pressure without major overshoot, but it oscillates at ~ +-100psi, which seems excessive to me. [The situation is further complicated by the material in the reactor, a slurry, which has variable density often causing pressure spikes and drops as thicker sediments blob through.  Then, valves that we are using to control appear to be only opening ~10% to maintain setpoint, meaning I only get 1/10th the resolution I would be hoping for.  Also, the valve responds quite slowly to command signal changes.  The controller will be attempting to open the valve in 0.1% increments, but it only responds at minimum to 0.4% changes in the control signal, and when it reverses directions it seems to only respond after a ~5% change in control signal.  This alone appears to cause oscillations that I don't know if a PID loop could ever get ahold of.] Anyways, aside from the obvious valve issues, is there any tips for tuning a system with this high pressure?  I need fast response, but slow buildup... (Oh yeah, I'm also having to use connected components workbench for control software.  At least the newest version of CCW seems to have a nice iPID control block; but man, I have never had to ctrl-alt-delete a program more times due to freezing while building or downloading...so frustrating...).
  2. Emerson (GE) memory map data types

     I've always had this Allen-Bradley memory map taped on my wall in my office. It used to be handy to use, until I remembered al of the prefix letters for each data type. Now I am using Emerson (GE) the old proficy software now called PAC ME machine edition. Now I'm finding it's about impossible to find the data type list amongst the thousands of help files, videos, ect... it seems like a simple thing to find, but I'm not having any luck. They use I and Q for regular inputs & Outputs, but there are R files, M files, S files, N files, G files, ect.... this is old-school PLC software that doesn't use tag names.   Is there a steadfast rule for each type, or can they be used for any type of data? Dazed and confused...  
  3. Following my post from yesterday and the fix proposed by @chelton, I went ahead and expanded the solution to multiple PLCs in the shop. Now I'm stumbling on another layer of difficulty : I have to RECV in a CP1L-E (10.1.14.214) from a NJ-301 (10.1.46.118). Both PLC's are physically connected to the same Ethernet Switch in the shop, but the IT guys decided to add a new subnet for PLCs and equipment some time ago. I read Michael Walsh's answer on this post but I couldn't figure out how to set things up properly with 2 subnets that are not consecutive. What do I need to setup in the CP1L-E to be able to RECV properly? There is certainly a routing table setup that I need to add but I cannot figure it out by myself. Here is the current setup : In the NJ, I have a UINT variable mapped At %W0, Network Publish set to "Output" The RECV command in the CP1L-E is as follows: C0 = 0001 (1 word) C1 = 0001 (Port 0, network 1) C2 = 7600 (node 118, unit address 0) C3 = 0203 (port 2, 3 retries) C4 = 0032 (5 sec timeout) The Built-in Ethernet parameters in the CP1L-E are attached Thanks !
  4. Hi All, I need access to a the Safety function blocks within a safety CPU using sysmac studio on a machine we are upgrading.. Is there a generic password available to gain access? Best Regards, Paul  
  5. Hello. What is the best option using TCP/UDP communication to use CP1L-EM40 as SLAVE / IO Expansion? For MASTER I’m using CJ2M-CPU31. Since now I’ve used FINS _CPU010_SendData and _CPU011_ReceiveData function blocks. The problem is, that I’m communicating with 6 slave IO units and to read/write all 6 units it takes up to 1 – 2 seconds. I’ve tried Ethernet/IP protocol but CP1L units doesn’t support this protocol. Is there some kind of different TCP/UDP protocol which is faster than FINS?  In older days you could use PC Link but this protocol is for RS232 / RS485 comm. I know I could use CP1W-EIP61 but I don't have this adapter and I can't afford to buy one Thanks. 
  6. I'm trying to simply send 1 word of data from 1 CP1L-E to another one, on the same subnet. I dont have any CP1W-EIP61 adapters and wish to know if it's possible to do it using only the built-in Ethernet Port on the PLCs. Setup: Sender PLC's IP address is 10.1.14.62 Receiver PLC's IP address is 10.1.14.214 1 word of data needs to be sent from W20 in the sender to W20 in the receiver Both PLC's are connected to the same network switch in the plant My current control word parameters : C = 0001 (1 word of data) C+1 = XX00 (XX = which port number should I use?) (00 = local network) C+2 = D6FA (D6 hex = 214 decimal, which is the node address of the receiver PLC) (FA = Unit address setting for CPEL-E Built in ethernet port) C+3 = 0005 (0 = Response required, 0 = port #0, 05 = 5 retries) C+4 = 0064 (10 sec monitoring time) In the receiver PLC, the W20 word never changes. In the sender PLC, the Error flag (A202.00) always turns on. What am I doing wrong?
  7. Dear reader, I am writing a C# program using the library  ‘EasyModbus’ that needs to communicate with Siemens WinCC via the connection type ‘Modicon modbus’ I have written a version using the ‘float’ data type in WinCC and that works perfectly. Here my code fragment: Method to convert ‘double’ to bytes in C#: public static byte[] DoubleToModbusFloat(double value) {     byte[] bytes = new byte[4];     float floatValue = (float)value;     int intValue = BitConverter.ToInt32(BitConverter.GetBytes(floatValue), 0);     bytes[0] = (byte)(intValue >> 24);     bytes[1] = (byte)(intValue >> 16);     bytes[2] = (byte)(intValue >> 8);     bytes[3] = (byte)intValue;     return bytes; } Call of the method and loading of the modbus registers in EasyModbus: Bytes = PublicCode.DoubleToModbusFloat(TmpDbl); int n = (int)ModbusStartAddress + ((i - 1) * 2); mb.ModServer.holdingRegisters[n + 1] = (short)((Bytes[0] << 8) + Bytes[1]); mb.ModServer.holdingRegisters[n + 2] = (short)((Bytes[2] << 8) + Bytes[3]); So far so good – this works fine. But I also want to be able to use the ‘Double’ data type in WinCC because I sometimes need more precision than the 7 figures of the ‘float’. I thought it would simply be a case of doubling up the code so I wrote: Method to convert ‘double’ to bytes in C#: public static byte[] DoubleToModbusDouble(double value) {     byte[] bytes = new byte[8];     long intValue = BitConverter.ToInt64(BitConverter.GetBytes(value), 0);     bytes[0] = (byte)((intValue >> 56) & 0xff);     bytes[1] = (byte)((intValue >> 48) & 0xff);     bytes[2] = (byte)((intValue >> 40) & 0xff);     bytes[3] = (byte)((intValue >> 32) & 0xff);     bytes[4] = (byte)((intValue >> 24) & 0xff);     bytes[5] = (byte)((intValue >> 16) & 0xff);     bytes[6] = (byte)((intValue >> 8) & 0xff);     bytes[7] = (byte)(intValue & 0xff);     return bytes; } Call of method and loading of the modbus registers in EasyModbus: Bytes = PublicCode.DoubleToModbusDouble(TmpDbl); int n = (int)ModbusStartAddress + ((i - 1) * 4); mb.ModServer.holdingRegisters[n + 1] = (short)((Bytes[0] << 8) + Bytes[1]); mb.ModServer.holdingRegisters[n + 2] = (short)((Bytes[2] << 8) + Bytes[3]); mb.ModServer.holdingRegisters[n + 3] = (short)((Bytes[4] << 8) + Bytes[5]); mb.ModServer.holdingRegisters[n + 4] = (short)((Bytes[6] << 8) + Bytes[7]); However, this code does not work correctly. I have tried all combinations of byte and word reversal, and whatever I do WinCC either displays nonsensical values or ‘####’ showing that it cannot display the value. I have tried reading as much documentation as I can but it still looks to me as if I am doing the right thing. Also, I have downloaded a number of ‘modbus master’ code examples, and they seem to be able to read the ‘Double’ from my program without any issues. In WinCC I also see that there are two types of double – ‘Double’ and ‘+/- Double’ – I am also unsure as to why this is – there is no ‘+/- Float’ data type, which seems inconsistent to me. I am obviously missing something, but cannot seem to discover what exactly. I hope that someone can point me in the right direction as to what I am doing wrong. Please see attached word file for a picture of the configuration of the connection in WinCC.   Thanks in advance for any help !, Dave Long Double trouble.docx
  8. I want to maintain my CCW PLC design in Source Control (Bitbucket) but I want to only check in the files that are needed for the build (the source) and not the build products. Does anyone know what files are the "source" files for a design?
  9. Data register over flow

    Hi, data registers are getting full, because of extremely high speed pulsing is there any way , if the data value in register goes above the capacity of 32 bit register, it automatically attaches itself to next set of data registers so lets say if data was written in D10,D11 Upon reaching the limit, it goes to D10, D11, D12, D13 please share if there is an alternate way to do this
  10. Data register over flow

    Hi, data registers are getting full, because of extremely high speed pulsing is there any way , if the data value in register goes above the capacity of 32 bit register, it automatically attaches itself to next set of data registers so lets say if data was written in D10,D11 Upon reaching the limit, it goes to D10, D11, D12, D13 please share if there is an alternate way to do this
  11. Hi, I'm Jovel, I'm new to learning how to program PLC. Just want to learn how to use Omron Sysmac Studio . I have a question about the Data Type Data Type - Structure ( Offset Type - Offset Byte )  / Union   I Don't Understand this 2 Data types and how going to use them, can anyone teach me and have a sample program? Thank you
  12. Does anyone know how to change the reading on Omron servo motor reading from negative to positive? The encoder is reading negative values when it is moving in the forward direction.  I am using 1S servo on NX1P2 controller on Sysmac studio software.  Please suggest. 
  13. CP1L Serial TXD Data Error

    Hi, I have a problem with serial communication (no protocol) using rs485 module, the received data is error. I'm using CP1L CPU, CP1W-CIF11 module as transmitter, and USB to RS485 converter as receiver. When I check the received data on PC, it's incorrect (bit error?). I just send 2 bytes data, 0x61 ('a') and 0x62 ('b'). My configuration: DIP switch CPU 4 = off, DIP switch CIF11 1 to 6 = on,on,on,off,off,off, 2 wire RS485. (I also attached the program and settings) https://postimg.cc/gallery/pr293Jc   Could you help me to solve this problem? Thanks   Program and Settings:     Result:   
  14. Array A INT[32] Array Index B INT Destination C INT I am trying to move an Array (A) Element (A[2]) using a symbol (B) in ladder into a destination symbol (C) C = A [ B ] Result: ERROR: Array Index of Operand 1 out of range at rung 1 ( 6, 0 ).  The documentation suggests that it is possible, but I am unsure if there is something I am doing incorrectly. Note* Fixed indexing works with no errors Is there another method to accomplish this?   PLC : CJ2M CPU31 CX- Programmer: Verion 9.74 Update 1: If I go online to the PLC It does look like the array look up is working. Is the issue with the mov block? Update 2: I changed the memory locations which has caused a different error to appear. This error is clearer but does not explain the manual excerpt I posted further up ERROR: Only the constant can be specified for the index of the array.  at rung 5 ( 6, 0 ).  Update 3: Solution 1 I managed to hack together a proof of concept using pointers and indirect offsets  Update 4: Solution 2 For some strange reason things work as expected inside of the function blocks so I made one where the array is In-Out and with an input and output respectively. Note* External reference to pointers inside of the function block produced an error. Function block Logic     Update 5: Solution 3 Now I feel like I am going crazy, I tried just the original code again and it works... I have no idea why and if it was not for all the documentation I would be lost as to why it works now... Update 6: Conclusion It seems to have array indexing work the array index must exist in the D Memory Block. The reason it did not work above is because I somehow had a MOVR block when I tested after moving all the variables to the D Memory Block. I hope this journey helps someone else :)
  15. Hi All I am trying to connect Cognex OPC Server with Mircrosoft SQL Server (SMSS). Do you have any idea how to do that? I couldn't find relevant information online.
  16. Serial Port issue

    Sorry its long !! I am recieving text from a GSM modem for text msg Send and receive (SMS) works ok but would be better if I could make use of the start code and end code. This way I could cut down on all the crap that is received when a text arrives. I get this  CMTI: "SM",0 I have it stored into D80 and I have that trigger a TXD that sends AT+CMGRD=0 and that tells the GSM to send the msg (The 0 is the current msg in memory) ------ The problem is that there is Carriage  Return and Line Feeds in the received msg ----      AS below ((AT+CMGRD=0 +CMGRD: "REC UNREAD","+19028991212","","22/10/20,16:57:54-16"  Hello this is the msg  OK)) When the PLC sees the carriage return it stops receiving data. And I have no start code or end code setup. (I am using characters received) The way around this is to set a high  character count in the RXD (More than the actual msg (More than the msg length)   The main issue with that is I get garbage in as the msg gets bigger. Its unreliable. I clear the port after each receive and that helps but still get the odd garbage. (Never get garbage when connected to a terminal prg). Any Ideas???? ps Even the Start Code is unreliable as it will start receiving a few characters late. Rob  
  17. NB HMI Macro

    Hello there. How to transfer data from one memory area to another using macro ?   Data Type - Double Word Length - 4 Format - BIN Integer - 3, Decimal - 1   From Area - D To Area - LW
  18. CP1W TS001

    Hai, I have problem with my CP1W TS001, suddenly reading result always #7FFE.  i use CP1E-N60 and 2 expansion module, AD041 and TS001. I put TS001 after AD041 then my program code as follows : mov #8051 105 mov 7 D20 mov 8 D22 the reasult at D20 & D22 always #7FFE could someone help me to solve this problem?
  19. GOT-Barcode reader

    Dear everyone, I would like connect Bar-code Reader to GOT that read Bar-code to input data on GOT 1575 VNTB Note: Barcode Reader is symbol model & I have use Power electric 5V to nourish And, I would like confirm that have conflict reverse electric  from Bar-code Reader to GOT or not? Thanks so much
  20. Hi All, I have a tiny Chinese controller all in one with 2 line text display. The documentation is not proper. GX Developer supports to program the devise. The devise is compatible to FX2N(C). Have any one in the forum used this type? I am not able to read its analog inputs AD0 and AD1 channels since I do not know which instruction I should use. I tries RD3A instruction but the PLC does not start. I attach a picture of the devise. Request support, Regards PLC-All-in-One-Text-Display-Domestic-Compatible-Mitsubishi-Op320-Industrial-Control-Board-10mt-Programmable-Controller.jpg_Q90.jpg_.webp
  21. Change Subnet On CP1L PLC

    I am trying to change the subnet of this CP1L plc. Currently it is at 192.168.250.*** and I would like to change it to 192.168.54.***. I already tried starting fresh by writing to the controller with ip 0.0.0.0 and then putting my desired ip address after. When I try to write to the controller with a subnet other than .250 for example 192.168.54.13, the controller saves the node address(.13) but keeps the same .250 subnet which results in me being able to ping 192.168.250.13 successfully but get no response from pinging 192.168.54.13. Yes I did change my local network card when pinging different subnets and also did a network reset in CX-P after every ip change. Let me know if there is anything I am missing!! 
  22. need help with programing a cp1w

    hi i am tryning to make a program that takes 4-20ma signals from a  pressure sensor and converting it to show ML on a hmi screan. im using a CP1L with a CP1W-Ad041. but i cant figurout how to set up the setings in cx programer correctly. any tips?
  23. Please Help me, I want to connect aczet brand weighing machine CG203L to PLC CP1L-M. But several times I tried it didn't work, I've tried repeatedly in the settings section to adjust the baud rate and mode and have tried one by one but to no avail. Can any of your friends help? thank you
  24. SLMP Failures

    Hello all,  I am new to using Mitsubishi and I am having issues communicating with my Cognex Camera. I have the camera configured in Datamn Setup Tool. I have the Ethernet card configured and validated. I am able to ping both devices and get a response on the network. However, I received an SLMP failure in Dataman and there's no communication between my camera and the controller.  Please see the attached photos to view how I have the camera and PLC configured.
  25. Hey Guys, Hope you are doing well!  Need all your experience support, to recover my existing project. As I'm at power plant project, we had PLC system with Vijeo Citect 7.3 licensed. As I'm newbie into this automation, doing my best to complete the project. AS I need you support to get resolved my project and my query. Query 1)Unable to get meter reading through plc to scada. Query 2)PLC gets and err blink and its not communicating as two plc available, one working perfect and other gives err blink after reset. Kindly help me out