Jump to content

Saragani

Administrators
  • Posts

    1,194
  • Joined

  • Last visited

  • Days Won

    116

Everything posted by Saragani

  1. Please contact our support.and explain them the problem.
  2. I wrote: (It will not be able to handle 1.8 million rows, but it can open ones that have 400,000 rows without a problem). It loads all the rows to the view, so it takes a lot of memory for large udt files, so it it had paging it would take much less. 1.8 million records is a lot. I'll think of making it have paging.
  3. Hi, the Linux communication driver was based on Mono. The Mono project is sponsored by Xamarin and from knowing the capabilities of the ".net" framework of Xamarin for Android (And I assume it is the same for iOS as well), the communication driver can be 100% or at least 99% be converted to Mono. Parts that will probably won't work are the Logger (that works with .mdb files), but if you don't need it then just remove it. You have the .Net driver sources on the website. Just do it yourself....
  4. Hi, please try the attached application. it is not perfect, but it can open some big udt files. (It will not be able to handle 1.8 million rows, but it can open ones that have 400,000 rows without a problem). It loads all the rows to the view, so it takes a lof of memory for large udt files, so it it had paging it would take much less. I hope it helps. Note: You need .Net framework 4.0 (or 4.5) for it to work Unitronics UDT Viewer.zip
  5. Hi, for compatibility reasons, the SD Card Manager converts it to XLS files only, I just mentioned that Microsoft have improved the total num of rows allows in a file (but either way, 1,836,000 would be too much as well) I'll talk with the support guys to see if they have some examples of using DT Write to SD and some example of giving files in an indirect way. I'm sorry, but a udt file description is not available.
  6. Hi, I remember a problem with remote operator that it fails showing displays on some of the V2xx PLCs. I think that on version 1.0.36 it is already fixed (so try it and tell me if it helps)
  7. Hi, The file name can be indirect in the write data table (Either const file name or it can come from an vector of MIs which represents the ASCII) The SD Write does not decide when to close the file. You can track the number of rows you write and decide to create a new file every X rows or every X hours.
  8. 1,836,000 empty rows is a lot (Am i understanding right that it was sampled in 60 seconds?) I don't think that you should write the data in such frequency. I'm not sure what you write each time (the whole table, or just few rows each time). For what purpose you need to use the udt? what is the purpose of the logging? Are you planing to read from the udt file in ladder or just write to it? Those questions can help you build the ladder code correctly. Maybe you can define sections in the file (different sections should make it split to different file in the SD Card Manager), maybe you need to log only 1 or few rows each time. Please talk to our support guys and explain them your needs.
  9. Hi, I believe that the error you are referring to about it exceeds the maximum number of rows is talking about conversion of the files to Excel (When importing files, it both converts its to *.usd files and also to excel files, so the data can be viewed in excel). Excel (old xls and not xlsx) files have the limit of 65536 rows (while xlsx files have 1048576 if I remember correctly). I think that you should still see the files in the tree on the left side (If you didn't give it an Alias, then you should see it by a tree item with the time and date where it was imported). There you should see the files you imported (Appended files, can be converter/split to several files if they are given section). I'm assuming that in your case you will have a just 1 big file. If you click on the Tree Item on the left that represent the data table file you logged, then you should see on the pane on the center the data that you logged shown in a table. If you still get stuck (for example, it still doesn't work, or no item was added to tree), tell me and I'll see what can be done.
  10. If you are not planing to edit the file but just view its content, then you can use SD Card Manager and import the file (It will be converted to a different file type). SD Card manager is paging the data (1000 rows on each page) while Data Tables Editor tries to show them all... This could result an out of memory exception since it was not originaly designed for the use of appended files but rather on RAM data tables and FDT files (which have a predefined or maximum size).
  11. It should work. I have tested it on a M91 PLC. It is the same command that is being sent which doing your code: Dim plc_request As ReadWriteRequest() = New ReadWriteRequest(0) {} Dim plc_read As ReadOperands = New ReadOperands() plc_read.NumberOfOperands = 1 plc_read.OperandType = OperandTypes.TimerPreset plc_read.StartAddress = 5 plc_read.TimerValueFormat = TimerValueFormat.SecondsFormat plc_request(0) = plc_read plc_con.ReadWrite(plc_request) -- error occurs on this line Dim plc_value As Object() = DirectCast((plc_request(0).ResponseValues), Object())
  12. Hi, it appears that the U90 timers are different from the Vision timers. While the vision timers have the Preset and Current stored in an Int32, the U90 timers are stored in an Int16 where the first 14 bits (LSB) are the value and the 2 MSBs are the resolution. The Communication Driver fails on reading the timers preset/current on the Jazz or M90/91 PLC since it expects 8 characters and gets only 4 (this is why you get the exception of trying to part of strings out of its bounds)... U90/91 and Jazz PLCs also does not support setting Current and Preset values using PCOM (while the Vision PLC does). I'm not sure if this issue will ever get fixed. Since Unitronics share the sources of the communication driver, then you can change the code in order to fix it, or you can use the SendString command in order to sent Read Timer Preset/Curremt commands to the Jazz PLC, and use the reply you got from the PLC in order to get its value. For example: plc_con.SendString("GP000501")
  13. I'm assuming it is a USB to Serial connection, am I right? I should be faster on Ethernet (Make sure that you enter the correct PLC name). The speed on Remote Operator, when accessing an Enhanced Color PLC is depended on the amount of variables on the screen. (More variables = more things to read and more things that can change).
  14. I don't remember anything of reversing the byte order of MIs, or any operand (maybe Float), here is a code from the .Net communication driver that takes the value and convert it to bytes: private IEnumerable<byte> AddWriteData(object[] writeData, byte writeOperandId) { List<byte> results = new List<byte>(); string operandName = writeOperandId.GetOperandNameByValueForFullBinary(); switch (operandName) { case "MB": case "SB": case "XB": case "INPUT": case "Output": case "TimerRunBit": case "CounterRunBit": case "RTC": foreach (object value in writeData) { UInt16 bitValue = BitConverter.ToUInt16(BitConverter.GetBytes(Convert.ToSByte(value)), 0); if (bitValue > 0) results.Add(1); else results.Add(0); if (writeData.Length == 1) results.Add(0); } break; case "MI": case "SI": case "XI": case "CounterCurrent": case "CounterPreset": foreach (object value in writeData) { results.AddRange(BitConverter.GetBytes(Convert.ToInt16(value))); } break; case "ML": case "SL": case "XL": foreach (object value in writeData) { results.AddRange(BitConverter.GetBytes(Convert.ToInt32(value))); } break; case "TimerCurrent": case "TimerPreset": foreach (object value in writeData) { if (value.GetType().Equals(typeof(List<UInt16>))) results.AddRange(BitConverter.GetBytes(Utils.z_GetSecondsValue(value as List<UInt16>))); else results.AddRange(BitConverter.GetBytes(Convert.ToUInt32(value))); } break; case "MF": foreach (object value in writeData) { //Switch to IEEE 754 standard byte[] floatBytes = BitConverter.GetBytes(Convert.ToSingle(value)); Array.Reverse(floatBytes, 0, 4); Array.Reverse(floatBytes, 0, 2); Array.Reverse(floatBytes, 2, 2); results.AddRange(floatBytes); } break; case "DW": case "SDW": case "XDW": foreach (object value in writeData) { results.AddRange(BitConverter.GetBytes(Convert.ToUInt32(value))); } break; } return results; }
  15. You should look for the FullBinaryMixExecuter The command code should be 80 I'm attaching a document I've written few years back about the Full Binary Mix protocol Full Binary Mix.pdf
  16. Remote Operator uses a lot of PCOM Commands. It is too complicated in order to be documented. Unitronics does supply a .Net user control of Remote Operator that can be used in any .Net application (.Net 3.5) combined with the .Net communication driver (Infact, Remote Operator uses the same user control and just supplies a nice IDE)
  17. I suggest you to talk to our support and explain them your needs. Maybe they can help...
  18. It will require a lot of code (and not just commands) for understanding, and compiling the Ladder, HMI, Hardware configuration etc and then going through all the process of communicating with the plc with the right sequence. It is practically building Visilogic from scratch, but in Linux...
  19. The document on our website describes how to read values in Binary Protocol. The documented command is only useful for reading (while writing is still in ASCII). However, few years ago we have added a new command that allows you to read and write using Binary Command (And this command actually allows you have a read and write request on the same command). This command is not documented on our website, but if you know C# then you can take the .Net communication driver sources (which are available on our website) and understand the structure of the command.
  20. No, there isn't. Most of the commands you sniffed are for internal use.
  21. You can get the PCOM document thriough Support-> Downloads .. then scroll to the bottom of the page. You should see: Unitronics PCOM Protocol The link to the document is: http://www.unitronics.com/Data/Uploads/communication/Unitronics%20PCOM%20Protocol.pdf Then go to Appendix 3: PCOM via Ethernet Bytes 0& 1: Transaction identifier. This number is assigned by the user. The number is used by the PCOM master to identify which slave is answering a command request. Byte 2: Select Protocol. Identifies the protocol used for the command request. Enter: 101 (DEC) for ASCCI 102 (DEC) for Binary Byte 3: Reserved. Leave blank. Bytes 4&5: Length of transaction. Enter the number of bytes required for the command request.
  22. You can also store it in either C of F (why store it in 2 different parameters), and display in on the HMI Screen using Numeric variable. You can probably use the Linerarization of the Numeric variable in order to show the result in the desired format.
  23. It is working fine here. What do you mean by mistake?
×
×
  • Create New...