Jump to content


Privileged Member
  • Posts

  • Joined

  • Last visited

  • Days Won


Everything posted by Isakovic

  1. True. I wasn't paying attention. I can confirm that Modbus functions can be called one after another without delay (with "Modbus in progress" bit as condition) and it works without problems. As soon as one function is called "Modbus in progress" bit is set in the next rung blocking second function from being called before first one is finished. Maybe if you called subroutine with CAN write functions after each of those rungs in the picture you first posted, it could work without timers. Although, I don't know if it would make any difference.
  2. It seems to me that this happened: Rung 6 gets executed because stage index in 3, at the end of the rung index is incremented to 4 so the next rung 7 also gets executed. When you say some messages are ignored, is it that only the last message gets through?
  3. Does anyone know what is the purpose of register SI280? What "minutes" is it counting? I can't find it in help file. I ain't using it, just curious.
  4. I missed the webinar.



    1. Cara Bereck Levy
    2. Cara Bereck Levy

      Cara Bereck Levy

      And  if you miss this one as well - well my friend, we've got you covered. You should get a mail with a link to  a recording  ofthe webinar you missed in a couple of days--assuming you  signed up m the mail is sent automatically.

    3. Isakovic


      Thanks, Cara. I'll get this one.


  5. No problem Johschr, glad to help. You could see what is stored in MI900 and following registers by opening block "SD Utility Delimited Line". There you will see data that is written. It will be couple of rows of what is to be written into CSV file, each row in this block will be data in consecutive columns. Ex. #1 Indirect text - ML 15 (Because you have a function block that turns date into ascii in line 1 of your code) #2 Indirect text - ML 10 (Because you have a function block that turns time into ascii in line 1 of your code) #2 Numeric field - MI0 (Maybe a process value, pressure) So block "SD Utility Delimited Line" will take all those fields, add delimiters on the end and store all that into one line of ascii characters starting from MI900. That's how to see what is in MI900, basically one row of your CSV file. It could be that MI900 quickly changes value when function is called because it first holds titles of columns until they are written in line, and then gets overwritten with process data. Can't really say what is causing PLC to freeze. Looks like up arrow on keyboard is used to reset status bits from one write function to allow the next one to be called, from what I can see in the pictures. Does data get written into CSV after pressing it? Maybe there is some sort of conflict if you are accessing and SD card while PLC is writing to it. Just guessing now, troubleshooting someone else's work can be difficult.
  6. MI900 is the beginning register of a line that will be written into CSV file by block "Write -> SD". So MI900 and couple of registers after it (MI901, MI902...) will contain ASCII stuff to be written, each register is 16 bits, so it will hold two 8-bit characters, it's difficult to interpret what those registers contain just by looking at them. Help file is useful, open every block and click help to see what it does. How big is that file that you are writing into? Maybe there is a limit to how large it can be. If you are writing every minute it can get big over time.
  7. Can you use other "strange" function codes? I've seen that code 35: works for ML, DW and timer registers.
  8. I don't know why you use Drums, maybe just try rapid fire like in the picture, it could go faster. It works for me, but I always use 9600 though. Good luck.
  9. VisiLogic lets you put coils in series and get the same result as putting them one atop of another, like your step 20. Code gets more compact when you have a lot of coils. Thanks for the feedback, it's good to see results.
  10. Maybe you mean input impedance for 4-20 mA? You see how many ohms your transmitter can supply, and this should be less or equal to sum of all analog inputs impedances through which current signal is running. You should worry about this only if you have more than one analog input on a single 4-20 transmitter.
  11. For Unitronics side you need Modbus config block and scan block in your ladder. And also Modbus address space to find what you want to read, you can find all of this in help files and examples. You can also use system operands for Ethernet (SB, SI and SDW) for troubleshoting, To see if Fatek's messages are getting through.
  12. Laptop I use has strange behaving com ports depending on whether the charger is plugged or not. Grounding issues I guess. Sometimes it takes several tries to get it communicating with the PLC.
  13. I used one V350 that logs CSV file on SD cards and then sends it by email on local network. Maybe this can be one option.
  14. I remember being confused with these terms at the beginning, also with different types of download.
  15. Also, you don't need linearization. RTD inputs measure temperature directly, register will have a value of temperature x10 (102 C is 10.2 C).
  16. You set up encoder in "Hardware configuration". There you select for high speed inputs "shaft encoder" x2 or x4 and assign memory location to it (use ML or DW instead of MI because it has bigger range). Note that if you select x2 you will have a value of 200 for full turn, and if you select x4 you will have a value of 400 per turn. It will also increment in one and decrement in other direction. All other logic you will have to work out in ladder. How many impulses per mm, presets... All the best,
  17. I can't think of a way of making a dynamic piechart. Maybe you could make 8 bargraphs for the same result of visually comparing relative values because they allow dynamic min/max (0 - minimim, sum of all variables - maximum).
  18. I almost had a chat with a guest while chat room was still available.
  19. It looks correct (you even have a response for every command you sent to slave), but value to force is 0. Force coil command is reading status of MB6 (0 or 1) and writing it to slave when command is called. If this command is always writing 1 use SB1 (always on) for "Value to Force". You can write just 6 in destination address.
  20. You should definitely try breaking it into several nets, it looks like it should work from STL though. I wish you could set parameters for serial communication on Vision in MIs. I think you need RS485 card for Sambas, it's standard for Visions.
  21. They look like circuit boards from inside old consoles cartridges.
  22. I couldn't find any reset coil elements for timers in ladder. Are you resetting it by not calling a subroutine? Someone correct me if I'm wrong, but I think that nets in subroutines won't get updated if subroutine is not called (so bits that were 1 when program last time passed through subroutine will remain 1). I find this not intuitive so I usually run through all routines from main and use bits as conditions. Maybe your program will work if you used reset coil for timer.
  23. I tried reading UTC from PLC and got the same one day lag with that formula, but PLC has correct date data. Must be leap year missing a day every 400 years or something like that, there must be a code for conversion somewhere. Why don't you put date into data table as integer or string? (I regretted it every time when I put it as a string)
  24. I had a quick look, maybe I could give a few suggestions. - Use Scan_Ex block and separate all those functions into separate blocks (one net for config, one for scan etc.) - You are calling connect block after every Modbus operation, maybe try calling it via transition contact only when Socket that you use is not connected. Tell us back how it goes.
  • Create New...