Jump to content
OMRON Forums

daves

Members
  • Posts

    261
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by daves

  1. I have an engineer going out to do an upgrade on a system in the field. I hoped to give him a USB stick to do the automatic download rather than download from the IDE. I downloade the project for release, did a tar backup from the IDE, then extracted the usrflash folder to a PowerPMAC folder on the stick. Powering up with this stick in the card then puts that project back on nicely. However if I have different accessory cards in the rack it does not apply the project. Looking in the IDE I have the HWChangeErr, PwrOnFault and Default set. Looking in PuTTY the project is empty. Does the rack when backing up have to be populated the same as the destination rack? Is there a way to make the project rack-agnostic? I really need this. Maybe I'm doing it totally wrong... Thanks, Dave
  2. daves

    Full reset

    Thanks, I thought that might be the case.
  3. daves

    Full reset

    Is there any way to clear usrflash.1, 2, 3 etc in /opt/ppmac? $$$*** doesn't do this (leaving possibly unencrypted projects there) Thanks Dave
  4. With 1.6 IDE and 1.6.0.0 firmware I am pleased with the way encryption works and protects IP and most other things we need. However I have a couple of issues: You seem to get a "C Language/Include/pp_proj.h" as well as a "C Language/Include/pp_proj.h.gpg" This allows an end user to see entries such as: #define AllowPaidFeature 8192 They could easily alter this as P8192 in gpascii/terminal. Access to "Configurations/pp_save.cfg" is not ideal we store some unique settings here which could be manipulated. Looking in "Database/pp_global.sym" the user can see the following: Global AllowPaidFeature 8192 They could easily alter this as P8192 in gpascii/terminal. I would appreciate any comments or maybe I am missing some settings Thanks Dave
  5. Thanks for all the help. I have written a MACRO PLCC to combine the flags in one 16-bit word and downloaded successfully from a Turbo. Then I set up a node transfer of that word. It all works very nicely now it is set up. I think until the PPMAC IDE can fully support talking to the MACRO card I can use this method. We have plenty of Turbo dev racks around to use. It does however make the PPMAC rather disjointed and I would obviously prefer to be able to set up the MACROs from within the main project. I am currently setting up all the nodes and transfers in PLCs (using 'cmd "MacroSlave0, I21 = $65B810E9C0A4"' etc) and it would be nice to put this stuff there too (or a file in the project, but with targeting to particular stations...). Cheers Dave
  6. daves

    Funny Sys.M[]

    I point m98 at something of interest and report it (two ways): m98->Gate3[0].MacroInA[0][3] m98 M98=-7077888 sys.m[98] Sys.M[98]=-7077888 Then I point m99 at m98 and report it (two ways): m99->sys.m[98] m99 M99=-7077888 sys.m[99] Sys.M[99]=nan Also note Sys.M[99].a=nan. It appears m99 is still working but no longer in the sys.m array, or the sys.m array has been corrupted. Is this as expected? I was experimenting with chaining variable definitions but don't think I will use that now (as I can't subsequently point m100 at sys.m[99] or m99 another way).
  7. I tried writing a MACROPLCC but I failed. Typing in "open macplcc" gave "ERR003". Are there tutorials on this?
  8. Thanks for the quick response. I am probably missing something here but I struggled to get the ASCII mode to work. I assume by in telnet you mean start a gpascii session first. I do this and try the MacroStation command on different station numbers getting: MacroStation1 stdin:4:1: error #50: MACRO COM TIMEOUT: MacroStation1 MacroStation0 MacroStation Closed stdin:5:1: error #0: Msg 0: MacroStation0 I found another post which included the following: MacroStation255 I11=1 (or STN=1) // You should then see MacroStation Closed Error #0. This is normal // Now you can talk to the first Macro Station through MacroStation1 // Using MacroStation1, set MI996=$FC00C, enabling nodes 2 and 3 I have no idea what this is doing but it appeared to work. I could then follow your instructions and got the MM vars to detect the encloss perfectly, thanks! However, I am worried there is a potential problem with this method as I issued the commands to get the readings in the IDE (as one command): MacroSlaveRead0,MM1,p1 MacroSlaveRead0,MM1,p2 MacroSlaveRead0,MM1,p3 MacroSlaveRead0,MM1,p4 MacroSlaveRead0,MM1,p5 MacroSlaveRead0,MM1,p6 MacroSlaveRead0,MM1,p7 MacroSlaveRead0,MM1,p8 MacroSlaveRead0,MM1,p9 MacroSlaveRead0,MM1,p10 MacroSlaveRead0,MM1,p11 MacroSlaveRead0,MM1,p12 MacroSlaveRead0,MM1,p13 MacroSlaveRead0,MM1,p14 MacroSlaveRead0,MM1,p15 MacroSlaveRead0,MM1,p16 Command: MacroSlaveRead0,MM1,p1 MacroSlaveRead0,MM1,p2 MacroSlaveRead0,MM1,p3 MacroSlaveRead0,MM1,p4 MacroSlaveRead0,MM1,p5 MacroSlaveRead0,MM1,p6 MacroSlaveRead0,MM1,p7 MacroSlaveRead0,MM1,p8 MacroSlaveRead0,MM1,p9 MacroSlaveRead0,MM1,p10 MacroSlaveRead0,MM1,p11 MacroSlaveRead0,MM1,p12 MacroSlaveRead0,MM1,p13 MacroSlaveRead0,MM1,p14 MacroSlaveRead0,MM1,p15 MacroSlaveRead0,MM1,p16 Response 0 chars in 17.7664 msec I need to check whether 18ms is acceptable as we use these flags for safety to kill motors (if an encoder feedback channel breaks we have seen a motor fly off out of control, this could injure someone at the wrong place in our machine). I guess I would actually have to poll these at a reduced rate to avoid flooding the comms so I am fairly sure this will be unacceptable. Am I right in thinking (if ASCII comms was working) I could maybe write a MACROPLCC to combine the flags into a word and then define a MACRO transfer (MI21 etc) to transfer the word to a register in an IO node (we have 3 registers spare). I am quite new to MACRO... I will try... Thanks for your assistance Dave
  9. I am converting our 3-PPMAC machine into a single PPMAC CPU/5E3 with accessories in MACRO16 stations. I have motor nodes and IO nodes configured and working and now I am working my way through all the extra bits our code relies on. We currently have the following where the acc24e2x is on the same backplane as the PPMAC. ptr Encoder00OK->u.io:$D00040.13.1; To look directly at the encoder loss bit in the partdata. How do I get this info across the MACRO ring where the encoder is coming back in a motor node? (it doesn't look like it is in the status register)
  10. daves

    while wait

    We rely on a WHILE () WAIT line at the top of a motion program to achieve some synchronisation. What is the equivalent in PPMAC? We may be able to avoid the need for this but I wonder if it has an equivalent if it turns out we must have it. Thanks Dave
  11. That's great. Thank you! I'm sorry I didn't find that myself I normally scan the dtlibs h files for the stuff I'm looking for but must have had a fail in my choice of search terms! Please could I make a request that the RtGpShm.h documentation in the help is expanded. There is what looks like an auto-generated description of the structures but with nothing useful to a developer. The fields are not indexed into the search which contributed to me not finding this answer. Also, is any of the PowerPMACLanguageManual in the Software Reference or User Guide, I couldn't see it. Finally, it seems vital to me that all fields should show up in the Intellisense (I think you are working on this for the next release but I would upvote the fix). For me (and maybe my system is broken) pshm-> only shows Coord[], EncTable[], Macro, Motor[], Plc[], Prog[]. There is much more to SHM... Dave
  12. Thanks for the information. How would you recommend I parse the response safely (and future proof)? Is there a specification for the format of the response? Or can I assume each line will always be "NAME [whitespace] = [whitespace] VALUE" and look for NAME = "User Buffer"? BTW where did your quote come from (it matches the actual response from 1.5.8.0)? The August 10, 2012 Software Reference manual and IDE Help (1.5.0.21) differ in response: There are extra fields and the capitalisation of lookahead is different... Thanks for the help, Dave
  13. Is there any way to get the size of the user buffer in a c program? I just realised my custom communications driver has no issue with something like the following when the buffer is 1MB: unsigned char bData[1]; unsigned char *iMy = (unsigned char *) pushm; memcpy(&iMy[30000000], bData, 1); i.e. writing well past the end of ushm. Not even a segmentation fault which normally happens when I do anything wrong. What critical stuff is this destroying? I would like to trap this.
  14. daves

    ACC-24E2S

    We've got some rev 106 ACC24-E2s boards that will not auto detect (IDE-1.5.0.21. Firmware-1.5.8.0); variables addressed to the card do not report expected values. There is no issue with rev 108 boards. Is this a known problem? Is there a work round? We are hoping to upgrade old systems to PowerPMAC. DaveS
  15. Thanks Atul, that is great news. Please let me know how to get hold of the beta... Dave
  16. As I have changed the IP address of particular cards I download to I have ended up with a large amount of files called 192.168.0.200_INIFile.ini 192.168.0.200_pp_debug.txt 192.168.0.200_ppError.Log 192.168.0.200_ppErrorHist.Log 192.168.0.200_ppProj.Log 192.168.0.200_temppp_proj.h PPMAC_192.168.0.200_INIFile.ini 192.168.0.202_INIFile.ini .... etc for each IP address ever used, all bunged in the project folder. Is it necessary to store whatever these files are like this? I assume I can just delete all but the currently in use ones? What is in them, is it generated on download or is it something which needs to go in my version control system? Cheers Dave
  17. Any security update yet? We are getting closer to more customer releases of PPMAC and this is a great concern. Also I spot some people are testing a 1.6 IDE, any news on a release or the promised beta? we have been through a number of VS IDE shell releases since the 1.5 IDE I am using
  18. How's progress on security? (and a beta release?) We have just released our first PPMAC system to a customer. We are still very concerned about security for the three reasons mentioned last year. I'm generally unhappy with any access and the ability to mess up the project and also specifically: * I am not happy about access to Global Includes pmh files revealing variable definition, and pp_proj.h where a person could see "CustomerHasPaidFeature=100". With this info you could run gpascii and type "M100=1" * Also access to the pp_save.cfg file where we would have saved M100=0 for a customer which they could change. * All of the PMAC Script Language directory is open to abuse. Really the whole file system needs to be encrypted. We hope to soon be releasing systems to other customers (different customers inspire different levels of trust...) Dave
  19. daves

    eth0 and eth1

    Thanks for the reply. This is exactly the solution! In another coincidence I did just this today, as the hardware we wanted to connect to was actually fixed on a different subnet. Luckily the guy training me on the hardware knew something about IP routing and explained how traffic would take the easiest (or metric controlled) route out. So if the destination could be reached through eth0 it would choose that route. Hence my (randomly chosen) similar IPs were not doing what I wanted. I think I followed his explanation and learnt a little about IP routing... [bTW looks like a small typo in your example referencing eth0 in the eth1 section] Cheers Dave
  20. daves

    eth0 and eth1

    Has anyone used the two (physical) ethernet sockets on the board? I have the following interfaces file # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 195.0.0.4 netmask 255.255.255.0 gateway 195.0.0.4 auto eth1 iface eth1 inet static address 195.0.0.14 netmask 255.255.255.0 gateway 195.0.0.14 I see something weird (or expected?) Connecting a PC to eth0 socket I can ping 195.0.0.4 AND 195.0.0.14. Connecting a PC to eth1 socket I cannot ping either. I need to use both sockets (a switch/hub cannot be used). How do I configure the system? Dave
  21. There is an annoying bug in the generation of make files which could lead to some head scratching. I will detail it here to help anyone who gets stumped by the error message, and add a bug entry: Adding a c app where the name starts with an existing c app name corrupts the make file of the existing app. Create a new project. Build. Look at "C Language\Background Programs\capp1\capp1_debug.mak" -Wl,--wrap,munmap \ -Wl,--wrap,select RM = rm -f SRCS = \ capp1.c OBJS = $(SRCS:.c=.o) PROG = "../../../Bin/Debug/capp1.out" export CROSS_COMPILE=ppc_4xxFP- export ARCH=powerpc Add a new Background C Application called capp10. Build. There will be an error "capp1_debug.mak:156: *** target pattern contains no `%'. Stop." Now look again at "C Language\Background Programs\capp1\capp1_debug.mak" -Wl,--wrap,munmap \ -Wl,--wrap,select RM = rm -f SRCS = \ C:/ABD/PowerPMAC/SPMM/PowerPmac3/PowerPmac3/C Language/Background Programs/capp10/capp10.c\ capp1.c OBJS = $(SRCS:.c=.o) PROG = "../../../Bin/Debug/capp1.out" export CROSS_COMPILE=ppc_4xxFP- export ARCH=powerpc
  22. Hi Sina Thanks for the very clear explanation. I can follow the working of the interpreter. I see the logic failure stems from trying to use only as the terminator and not the semi-colon (or the PMAC script endif/endwhile keyword). I understand the difficulty of fixing this as it could be a big breaking change in behaviour. As a first guess could the interpreter use as it currently does, but also take a semi-colon as a command terminator? I haven't thought this through thoroughly (interpreters are not my thing) but initially it would seem to solve the issue for me. Maybe the only safe solution would require the interpreter to force semi-colons to be required (as per full C-syntax). Or reintroduce endif/endwhile (but this would be a step away from C-syntax). These would force old code to be rewritten. Sorry, just thinking aloud here... I am now including curly brackets everywhere and I have started an in-house tips document to remember this. Thanks Dave
  23. Hi Atul Thanks for the reply. That is good news. I would be happy to participate in beta testing. Dave
  24. I am currently thinking about deployment of our PPMAC systems. We do not want users to have access to the project files on the PPMAC for 3 reasons 1) Safety. The code controls machinery and uneducated alterations could make the machinery unsafe. 2) Commercial. The code allows certain features if a particular customer has purchased the features. This could be altered and enabled without payment. 3) Intellectual Property. We do not want to give away any of our IP. I assume we can lock out the IDE from customers by changing the login password. However, I see by simply plugging in a mini/micro USB lead to the mezzanine board you get read-write access to /opt folder and hence the code. I know c programs are compiled files but there is a lot of information in the pmh files and plcs. Also any upgrades we send on Recovery Disk USB sticks is currently unencrypted as far as I can tell. Is it possible to protect our system and upgrade procedure? Thanks Dave
  25. Thanks for the reply Brad. This is an interesting example with the two if statements. Of course I would always yield with a nanosleep in a PPMAC C loop. I was more referring to the ANSI C standard definition for the control statements. Putting the sleep in a PPMAC BGCPLC would necessitate the inclusion of braces which would then stop the problem from exhibiting itself. I look forward to a response from the DT language people. I am currently putting braces everywhere in my PLC code (which I don't like on single line commands due to space wasting), but this would appear to me to be a quite dangerous possibility of lines of code not executing when you might expect them to... Thanks Dave
×
×
  • Create New...