SolidRio

MrPLC Member
  • Content count

    61
  • Joined

  • Last visited

Posts posted by SolidRio


  1. 20 hours ago, kaare_t said:

    You are using a total of 7 IVCK and 1 IVDR. I see that you have noe sequence control over them, I'm not sure if this will work since all of them will be triggered at the "exact same time", but since you are testing it right now it obviously works. I'm not sure how Mitsubishi has implemented the two instructions in the CPU, but since you got it working it seems OK. In Modbus you will have to make a sequence that runs through each telegram one by one, and not all at the same time.

    But if we look at what you've got working now, I suspect you only send the IVDR once, and the 7 IVCK are sent all the time. You've got 4 inverters in your best case and 7 IVCK per inverter. That's a total of 28 telegrams for a cycle. Now, if we divide 1 second cycle time by 4 inverters we got 250ms per inverter. Then, divide 250 by 7 and you've got 35,71ms per instruction. I would say it's within the normal range.

    Now, your problem here isn't directly connected to the serial bus speed. It's more the number of transmissions per inverter. Even with Gbit TCP/IP you would have a problem if you sequenced 28 transmissions due to the time it takes to initiate, communicate and break down the link. What I'm saying is that the problem here is Mitsubishi's implementation of the IVCK instruction and that you can only handle one data at a time. Since you want to read out 7 different values, you should look at ModbusRTU and read all those 7 values in one single telegram. Let's say that the seven values are located at 30001, 30010, 30011, 30012, 30017, 30020, 30030. They are spread out, but what you do is to initiate i single read multiple inputs, with starting address 30001 and a count of 30. Then you will receive all the values between 30001 and 30030 and you simply only MOV the values that are interesting.

    Of course, sometimes we need to use multiple telegrams because the data we want to read are spread across large areas, but the whole point here is to avoid many small telegrams. It's better to transmit one large block of data than many small. IF it's possible to read out the values you need in one ModbusRTU telegram, then I would guess that you can lower the complete cycle time from 1s to about 150ms or so (this is only a guess).

    I really misscounted number of telegrams (forgot about PU/EXT/NET and Special monitor, and in last version i deleted Voltage part).

    There is now need to make sequence over them, they are working one after another. Like this - https://prnt.sc/mcrlp1

    But i get your point, there is still to many telegram (even if they working) to inverters. With the one or two inverters its works really well, but if its 2+ inverters....

    So i will tryout Modbus and will write results here. 

    Thanks for your response.


  2. 17 hours ago, kaare_t said:

    Per inverter: How many instructions do you execute in sequence? For example: 3 IVCK and one IVDR per inverter? Or other?

    What I believe is happening is the following sequence (based on 3/1):

    1. IVCK1 (frequency)
    2. IVCK2 (current)
    3. IVCK3 (voltage)
    4. IVDR1 (setfrequency)

    The problem here is most likely the number of transmissions or transactions. Each of them takes processing time, and many small is worse than one large most often. I would suggest you to consider changing to ModbusRTU which I believe all your units supports by default (alternatively if you're not sure then list all your equipment with full names). By using ModbusRTU you can probably read a complete block of data (e.g. above, you can put all 3 IVCK in one transaction).

    Can you specify a bit more regarding what your reading (all parameters/values)? You only have one IVDR, what is it for?

    I will share FB that i using in this project in this post. I dont need control in this application, only monitoring. 

    I will try ModbusRTU next week. 

    List of equipment: nine FR-A840 inverters and FX5U with 2 485 channels.

    I am using IVDR for writing special monitor parameter type. I want to monitor Temperature in inverter (HF3 - 96).

    Thanks for your response.

    FR_BLOCK.gx3


  3. 14 hours ago, Veganic said:

    Are you using the Mitsubishi function blocks and if so which ones?

     

    I am using IVCK (multiple times) and IVDR (once for special monitor parameter).

    8 hours ago, kaare_t said:

    Are you sending one telegram for send/receive data, or multiple telegrams for sending/receiving data? Normally the best option is to have one telegram per send/receive for multiple areas even if it means a total of more devices than actually needed if there are gaps in between the data you want to receive or send. To put it simple: If possible, create one telegram for send and one for receive per inverter, nothing more!

    Sorry but i dont fully understand you. As i said, I am using multiple IVCK (read) for each inverter and one IVDR (send). Can you describe it with example? 


  4. Hello everyone.

    When i was working with FX3U and did Inverter communication (Mitsubishi) by 485 (485-BD and 485-ADP) i've faced really slow connection when there was many Inverters (2-3+). Then i was thinking its because low speed of connection 19200 or 38400. Right now i am making project with 9 Inverters and FX5U. Speed 115,200. And still connection really slow (about 2-3 seconds on refresh data from FR). I divided inverters on 2 groups (5 on CPU's-485 and 4 on 485-ADP) - connection improved, but still about 1 sec. In the program i am only taking data (FREQ/CURRENT/VOLTAGE and DIGITAL OUTPUTS) so there is not so many operators that load connection.

    I need your advice. Can i improve speed of taking data? 


  5. Hello everyone. 

     I found a cheap encoder S48-8-1000ZT (1000 pulses) and connect him to FX5U's X0 and X1 (2 phase - 1 edge mode, if i can trust manual - it allows me detect all pulses below 200 kHZ frequency). Changed input response time to 10micro-s. I created a program that simply look at this counting and make some math. If i am rotating encoder with fingers slowly - all works great (my mark matches at encoder and 1000 pulses in program), but if i turn it by 1 sharp fast move and then again and again - marks move by half turn at for example at 10000 pulses. 

    So i need your experience. Whats going wrong? Is plc dont have enough response speed? Or something wrong with encoder? Or with my configuration?

    I need to use FX5U and encoder at 1500 r/min motor (with another encoder), so i need to test it before going on object.


  6. 14 hours ago, Veganic said:

    Set the parameters in GXWorks2.

    Download but check parameters only  - do not download the program etc.

    It isnt a bad way, but it would be better to keep all in one project (setting and prog).

    14 hours ago, collinsd70 said:

    Okay. So you have the final revision of IEC Developer.

    I normally prefer working in IEC Developer but in this case it might be worthwhile to upgrade to GXWorks2, you wouldnt need to 'rewrite' your code, simply just convert between the 2. 

    If you want me to take a look at this- send me a PM- otherwise I see no alternative unfortunatley.

    I've checked convert future, never heard about it before, seems interesting.

    And backing to the start of the story - there is no way to make setting by sequence program for invertor communication? Its is not working even for 19200 baud (but working when im making setting download). I did it before for RS2 instruction and it works well.


  7. 27 minutes ago, collinsd70 said:

    Is there anyone reason why you cant use GXWorks2 for this project?

    What version of IEC Developer are you using? 

    Yes, because its old big working project. It isnt worth time to rewrite project on GX Works 2. 

    v7.04.


  8. Hello everyone. 

    I am trying to cheat GX IEC Developer and set up 38400 baud communication between FX3U and FR-F700 via Inverter communication. In GX IEC Developer you can only set 19200 as max, but 485 communication in FX3U can be set up on 38400 and that works perfectly in GX Works 2. So, i unchecked setting in PLC parameters and using M8002 to write communication setting in D8120 (using CH1 485-BD) but that doesnt work. I tried many ways before writing this and i need some help. 

     


  9. 15 hours ago, dunc said:

    in GX works; is there any way around reading a structured project from a Q series CPU if the symbolic data (which takes up loads of room) isn't downloaded to the CPU initially?

    If symbolic data havent been downloaded - you cant. 

    But if this is small project (but i doubt because you are using Q series PLC, so it seems not the small project) you can simply recreate program by youself in Structured LD by reading MELSEC IL or if this PLC supports GX Works 2 - Simple LD. I did it once (when i have a little free time). Its simple to understand which addresses GX IEC Developer/Gx Works using for local  variables. So it isnt hard, only depends how much time you have.

    13 hours ago, collinsd70 said:

    I always thought you could read from the PLC's internal memory- but the code is always presented in MELSEC Instruction List.

    Mostly i am working with FX series. In GX IEC you cant download symbolic data in FX PLC and as a result you can upload only in Melsec IL. In GX Works 2 - you can download Symbolic Data and then upload Structured LD porject (or if didnt download - upload in simple LD). But i believe you can download Symbolic Data only in newer version of PLC (for example for FX3U it must be 3.10+ version of PLC), but maybe i am wrong.

    15 hours ago, dunc said:

    siemens and allen bradley can manage this without having a huge CPU for a relatively small program, why cant mitsubishi?

    I always thought it something for protection data from uploading. You must have Structured Project if you working with this PLC or you should write your own project.


  10. On 30.08.2018 at 1:51 PM, JanHrust said:

    Hi SolidRio

    When you specify your connection string in the Alarm Management agent, which data link provider did you use?

    Hi JanHrust. 

    Sorry for late answer.

    Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=AMDATA;Data Source=PC_NAME\SQLEXPRESS


  11. 11 hours ago, JanHrust said:

    Hi SolidRio
    You did add the AM agent to your defaultAlarmAgent output setting?

    If it is not there, then it will not send the alarms to SQL. 

    Hi JanHrust

    On 28.08.2018 at 3:39 PM, SolidRio said:

    In output AM agent added.

     


  12. Hello everyone. 

    Was trying to reproduce process of creating History Alarm Log via SQL. And have failed.

    I've already mentioned that process before in this thread.

    I am using  SQL Server Express 2014 x64  and  SQL Server 2014 Management Studio. 

    What i do:

    1. Create SQL Database (for example) "123" with no changes in settings, all by default.

    2. Create Alarm Management agent "AM". Box History mode, and Start have checked. In connection SQL database 123 added and connection test ok.

    3. Create Alarm for bit M 0 in PLC on ON and OFF conditions. Route 2. In output AM agent added.

    4. In SQL Server 2014 Management Studio i already see that MAPS have already added tables in database, "Adr_AM_CurrentIncidents" for example.

    5. Create a project. Add AdroitHistoticalAlarmViewer(connect to SQL Database 123), AlarmViewer and button that toogles bit M 0.

    Alarm is working fine (i can see it in AlarmViewer and even acknowledge) but there are nothing in SQL database and as result in AdroitHistoticalAlarmViewer. Only thing is adding in SQL database table "Adr_AM_Incidents" - 

    Idx    CategoryId    Name    Agent    AgentType    AlarmType    AliasName    Document    Delay    Condition    ReasonRequired    NotesRequired    AssociatedTags
    0               0             M_0.On    M_0    Digital                On                     M_0.On      NULL                0          NULL                   0                               0                          NULL

     

    I tried everything. Only think i found its in Agent Adroit.AlarmManagement.AM.lastQueryError - error 80040e07 Conversion failed when converting the varchar value to data type datetime. 

    The thing is - I have created working History Alarm in SQL with MAPS before (which i mentioned in earlier posts here) and was doing same things, but month after - i cant. I need your help. Maybe i missed something. 


  13. On 16.08.2018 at 5:49 PM, JanHrust said:

    Hi SolidRio.

    With MAPS you can make a direct connection to the PLC. 

    In your ENET Configurator you need to specify Initial Timing as Always wait for Open, IP address is the module IP address, Send frame setting is Ethernet, Enable Online Change and TCP Existence is Use the KeepAlive. 

    Then in Open Settings you need to open/add up a (Protocol) TCP, (Open System) Unpassive, (Fixed Buffer) Send, (Fixed Buffer Communication) Procedure Exist, (Pairing Open) Disable, (Existence Confirmation) Confirm and (Host Station Port No) the port number you need. 

    In the MAPS side you just need to specify the module IP address and the port number. 

    For the Citect side, I am not sure. Sorry. 

    Hi JanHrust.

    I did all the setting you have said. But without Fixed Buffer Communication: Procedure Exist (MC) it doesn't work (Connections are blinking and SCADA doesnt have connection to the PLC).  But in my efforts i've found that SCADA (MAPS and CITECT) only need 1 connection: TCP Unpassive Send OR Receive  Procedure Exist (MC) Disable Confirm and port. Before that i have been thinking SEND - for SCADA writing in PLC, and Receive for PLC giving data to SCADA. So i was wrong. If only 1 connection need - there is no need to go 2 SCADAs via same connection. Thank you for your advice.


  14. Alarm management i've already described in my first and second posts in this topic. Why i want "like GT Designer"? Cause all the factory working on the HMIs and if i want to implement MAPS here first words about new alarm system will be: We want the same way like its working on HMIs. Real time with all of alarms in one list on one screen.

    Alarm management got 1 minute refresh time. And this is not what i am looking for.

    I am still looking maybe i can it do with EventViewer.


  15. Ok. I'm adding AlarmViewer and choosing  defaultAlarmAgent  as alarm agent. 

    Now i will show you example of difference with one digital bit in MAPS and HMI (GT Designer).

    HMI (Screen is refreshing in real time) :

    1. Digital = 0. - No messages on Alarm Screen.

    2. Digital = 1 - (Occurrence) 16/08/18 09.02.32      Some comment             (Restored) --/--/-- --.--.--

    3 Digital = 0 - (Occurrence) 16/08/18 09.02.32      Some comment             (Restored) 16/08/18 09.03.32

    4. Digital = 1 - (Occurrence) 16/08/18 10.02.32      Some comment             (Restored) --/--/-- --.--.--

                             (Occurrence) 16/08/18 09.02.32      Some comment             (Restored) 16/08/18 09.03.32                            <-------Old message of same bit alarm is still on screen. 

    MAPS (Without Global Acknowledgement function) : 

    1. Digital = 0. - No messages on Alarm Screen.

    2. Digital = 1 - (Alarm Time) 16/08/18 09.02.32      Some comment             *Red background* 

    3 Digital = 0 - No messages on Alarm Screen.

    4. Digital = 1 - (Alarm Time) 16/08/18 10.02.32      Some comment             *Red background*                <-------No old message of same bit alarm is on screen. 

     

    With Global Acknowledgement function will be only one another phase when will be *Green Background*

    I hope you will get my idea. 


  16. Yes. Added 1 digital signal in Alarming. Alarm agent: defaultAlarmAgent. Added Alarmlist in route 0 and in the Event Logs: LOCAL. Alarm types: ON (i want to see when this bit is on and when its gone in one message). Route 0.  


  17. 23 hours ago, Gambit said:

    Ok lets just start from the beginning. Have you set up your agents tags digital analog etc which you want to alarm?

    Hello. Yeah, i already have done it. They are changing values in real PLC.


  18. 21 hours ago, kaare_t said:

    Hi, sorry for the late reply.

    1. Set IP to 255.255.255.255 (accepts all incoming IP's), and port to 65535 (accepts all incoming remote ports)
    2. I'm not sure how the SCADA setup looks like as I don't have MAPS or Citect... Can you find out if it's possible? Should be set to UDP and IP of the ENET module...

    Hi, no problem, better late than never.

    First question i already figured out from some of the manual. 

    Main problem with second question i hadnt find UDP driver in MAPS (4) and in Citect (7.10) as well. 


  19. Hello everyone. 

    I finally had some time for MAPS. So i've tried what JanHrust said. Dropped the the Eventviewer and add the datasourse from the Events list - "Adroit". This show all the events from MAPS (i still didnt figure out how to show only needed events) and only with manual update or 30s auto refresh time. And this is still not that thing i want from it.

    I want to create same alarmview like in GT Designer. Real time simple alarm list that got in itself Occurrence/Restored time and comment with showing only alarms/operator actions i added. 

    Maybe im doing something wrong and i will try to do a research on achieving my desired alarmview list in free time, but maybe someone will advice me something.


  20. I have so many questions on using UDP (never used before):

    1. FX-ENET configuration - when you are changing TCP for UDP there will open 2 more setting: Target device IP and port. I have SCADA on 2 different PC (with different IPs) so which one i should write? And where i can check port that are SCADA using (Didnt see in MAPS or Citect this parameter)?

    2. Drivers on SCADA side. At this moment i have FX TCP Driver in MAPS and MELSECNET1 in Citect. Should i change this cause i am using UDP now? 


  21. Hello everyone. 

    I've faced problem with the FX3U-ENET configuration. Enet module only have 4 MC connection at once. So i already have 2 Melsoft connection (GOT Panels) and 2 MC unpassive(read/send) for SCADA (Citect). Right now i need to add MAPS to this, but via connection that had given for Citect isnt working (Only one of them working at once). So is there any chance to connect 2 SCADA (Citect/Maps) via 1 connection (with read/send)?