noorloai

MrPLC Member
  • Content count

    60
  • Joined

  • Last visited

Community Reputation

0 Neutral

About noorloai

  • Rank
    Sparky

Profile Information

  • Country Canada

Recent Profile Visitors

1131 profile views
  1. RedLion CR300010 Raw TCP/IP Communication

    Hi,  Well , I still have the old HMI with crimson 2 and it works totally fine. however for some reason same program in crimsion 3.1 with Cr300010 not working as expected. CR300010 only support crimson 3.1 software. So i didn't test 3.0 version on machine. how can I use that "Have you been able to verify the connection is operational using a modbus emulator? " Iam not sure how to use that can you advice me?  The issue that I am facing is writing to pc over Raw TCP/IP protocol. Redlion CR300010 can receive data from pc however can not send data back.  I have debugged my code using web server and Windows online tools and found my code is executing, however i couldn't see what i am sending to pc. i couldn't find a way to monitor the string data type that i am send.   what could be the issue? its same code exactly in crimson 2.0. same Ip address and subnet mask. is there any suggestion that i should do to help me discover the root cause of this issue ??    thanks
  2. Hi All, Recently, we have upgraded G3 RedLion HMI to CR300010 and migrated the G3 database crimson 2.0 to Crimson 3.1 Currently I am testing CR300010 and I am facing an issue with communicating CR300010 with the third party through RAW TCP/IP  I have two ports one set as Raw TCP/IP Active and the second one set to RAW TCP/IP Passive please see the attachment Currently, the HMI Received data fine from the third-part ( server Pc) however, when trying to send message to the third party, the third-party doesn't seem it receive anything. The same program works fine with G3 HMI.  Are there any differences between portprint() command in crimson 2.0 and crimson 3.1? Can someone guide me through how can I confirm that both systems are communicating? how can I investigate this issue further?. I could ping the IP address for both systems from my pc which is connecting to the same network switch.  Appreciate your support in advance      
  3. writing from HMI to Array SINT [24] in PLC

    I have the following: Array of SINT[24] call it Sorted[24] has a sorted vehicles based on its position If there is less than 24 vehicles on track, I need operator to insert gaps which will shift the first Array elements based on the location that operator select I want operator to select from HMI whether this location is full or empty which write to another Array of SINT[24] call it Gap[24], 0 means full, 99 mean empty   Example: Sorted[21]= [6,7,8,9,…..,10] Operator can add up to 3 gaps, Based on operation selection Gap[24]= [0,99,99,99,0….0] Output Array = [6,99,99,99,7,8,9,…..10] So what I am thinking is to map 24 buttons on HMI to Bool[32] on PLC only 24 used, Then if operator select that bit it will write 99 to Array SINT[24] Else it will write 0 Then I can compare my sorted array with my gap array and find the output array. If you have a better solution/idea would be appreciated.  
  4. writing from HMI to Array SINT [24] in PLC

    “Do the array elements match up? In other words, will pressing BOOL[7] write 99 to SINT[7]?" ·         Yes It does match Why 48 rungs with only 32 buttons? Do you have an example of what you've done so far that does what you want for one button?” ·         As I have two condition 0 and 99 , and I have 24 elements
  5. What is the easiest way that HMI writes to Array of SINT[24] ? Like I am thinking to have a maintain buttons that points to a BOOl[32] elements in PLC when button press on HMI the bit in BOO[32] will be active high and then can write 99 a member in to SITN[24] , else will write 0. But that required 48 rungs . Is there any other efficient suggestion ? Thanks  
  6. Thanks for your response. I also found a tech note that explain that using this  MyArray[(MyIndex AND NOT 31) / 32 ] . [MyIndex AND 31]  
  7. Hi All,   I have a question on if its possible to do indirect addressing of individual bits of a tag of datatype dint in studio5000 ladder logic? I am writing a routine that should  loop through the individual bits of the tag of data type dint and do processing . Like instead of using OTE instruction ConfirmRequest[rvIndexSafety] where confirm Request is BOOL[32] elements  if condition true and rvIndexSafety =1 => it will set confirmRequest[1]  I need to use DINT and set DINTDataType.1  How can i approach this?   Thanks,  
  8. Using TON within Loop in Ladder logic

    there is no condition on JSR, BUT I am using conditional MCR to execute those codes . Is there any other solution ? 
  9. Hi All, I have an issue and hoping you can help me with the solution.  I am not sure how can I use TON within loop in ladder logic? I have made a loop using JSR and LBL to execute Sub, in this subroutine I need to use timer or delay before turning the output on, as I am facing an ON/Off condition which turn the output on. Is there any suggestion ? Appreciate your response in advance. Thanks,
  10. array in studio5000

    Thanks a lot, That was very helpful, I did it same way and it works as I wanted.  Thanks again
  11. Hi Guys, Is there a way to logic AND array element in ladder logic studio5000 ? I have Array[BOOL 64], and I want to make sure all the elements are 1 to activate an LED.  I was thinking to use FAL instruction however this instruction does not accept BOOL. is there any suggestion ? Thanks,  
  12. Masking array in ladder logic

    Hi Guys, I have an Array of BOOL [52].I want to mask this array based on size (SINT) . like if my array size is 12, I want to pass the first 12 elements of Array of Bool and block the rest. I am not sure how to use MVM. Can someone help me with that ? Thanks 
  13. array in studio5000

    well, the value in array 1 changes dynamically, but in array 2 is not. and its ascending order. I want to check the array 1 element value with array 2 values and get the closest bigger  number in array 2 so I can update my target to the closest number  and repeat that for each element in array 1 example: target position =0  current array[1] = 20000, compare with the constant array 2 , which is between 18000 and 25000 values then take the closest bigger number and move it to the target position   
  14. array in studio5000

    Hi All, I have two DINT array for example array1 [200] = [ 0, 1.........199], array2[100] = [ 20,40,60 ...180]  array1[30] = 30 need to compare it with array2[100]  and find the closest range. in my example array1[30] is between array2[0] and array2[1] how can I do that in studio5000? I haven't worked with array before and therefore your support is appreciated  Thanks  
  15. I figured out Thanks anyway