2/21/2013 10:02 AM | |
Joined: 12/1/2009 Last visit: 9/5/2024 Posts: 672 Rating: (147) |
Hi jagan.k, your CP340 does not support Modbus by native. For Modbus you require CP341 with Modbus license (loadable driver). You were saying that youalready have a backup of the software. Was that ever working before? You can also try myModbus RTU Master driver for CP340. If I find the blocks Iwill send you themlater. I used them in many projects and they are working like a charm. The driver issoftware based anddoes not requirethe need of CP341 orhardware dongle. Need to go now and come back later to you. . |
Give us your feedback and show us your respect! |
|
2/22/2013 3:29 PM | |
Joined: 12/1/2009 Last visit: 9/5/2024 Posts: 672 Rating: (147) |
Dear jagan.k NEW DOWNLOAD SITE |
Last edited by: TIBI68 at: 7/5/2014 6:31 PMLINK ADDED Give us your feedback and show us your respect! |
|
This contribution was helpful to1 thankful Users |
2/25/2013 12:14 PM | |
Joined: 12/1/2009 Last visit: 9/5/2024 Posts: 672 Rating: (147) |
Dear jagan.k, did you downloaded the file and tested it? If you have any difficulties contact me. I can give you a guideforimplementation and support for trouble shooting. |
Give us your feedback and show us your respect! |
|
2/26/2013 12:07 PM | |
Joined: 12/1/2009 Last visit: 9/5/2024 Posts: 672 Rating: (147) |
Dear jagan.k , Your friend needs to check in the HW-Configthe correct type of CP module andthe interface parameter (Baud rate/Parity). The OB1 should containone network only and look like this: CALL "MBMAREQ" , "MBMAREQ NO.1" // MODBUS MASTER REQUEST FUNCTION BLOCK LINK :="LINK_340" // I-LINK WORD (CONNECT TO MBMA340 FUNCTION BLOCK!) RW :=FALSE // I-FUNCTION = READ SLAVE :=1 // I-SLAVE NUMBER START :=L#43001 // I-START ADDRESS (43001) END :=L#43001 // I-END ADDRESS (43001) WRMODE:=FALSE // I-WRITE MODE = AUTO S7ADDR:="MBDB READ OUTPUT REGS".DATA_BYTE[0] // I-S7 ADDRESS FORMAT:=0 // I-NONE DONE :="DONE_340" // Q-DONE ERROR :="ERROR_340" // Q-ERROR STATUS:="STATUS_340" // Q-STATUS WORD At the S7ADDR you specify the first byte in theSIMATIC where the 43001 data will be stored. In this case the data will be stored at DB13 from Data byte 0 (DB13.DBB0). Modbus address 43001 (2 bytes) will be stored into DB13.DBB0 + DB13.DBB1. If you need to swap between the high and the low byte just set"FORMAT:=1". |
Give us your feedback and show us your respect! |
|
2/27/2013 10:01 AM | |
Joined: 12/1/2009 Last visit: 9/5/2024 Posts: 672 Rating: (147) |
Dear jagan.k, Regarding HW-Config: Open the HW-Config Replace theCP model withyouractual one if required. Double click on the CP to open its Properties. Click on the Parameter taband a pop up window will open. Set the Protocol to ASCII and click on the "Protocol envelope" in the middle of the screen. Thereyouset yourinterface parameters accordingly. Register 43001 to 43350 You cannot read "350" 16Bit-Registers with one modbus request, you need to distibute the number of registers to more individual modbus requests with different "START" and "END".But fora first shottry toreadthis 43001register only. Trouble shooting will be easier later on. |
Give us your feedback and show us your respect! |
|
3/3/2013 6:41 AM | |
Joined: 12/1/2009 Last visit: 9/5/2024 Posts: 672 Rating: (147) |
Great jagan.k , I am happy for you guys. You just saved another CP and a Modbus license! |
Give us your feedback and show us your respect! |
|
This contribution was helpful to1 thankful Users |
7/12/2013 8:52 AM | |
Joined: 4/24/2009 Last visit: 8/20/2024 Posts: 2682 Rating: (135) |
Follow-up-question splitted to communicate with a Masibus Temparature Scanner (85xx series, communication protocall RS 485) Best regards O_Moderator |
8/22/2013 11:38 AM | |
Joined: 4/24/2009 Last visit: 8/20/2024 Posts: 2682 Rating: (135) |
New question was splitted to connect honeywell DCS with CP340 on modbus protocol & to get the data of cpu 313c-2dp. Best regards O_Moderator |
12/16/2013 3:29 PM | |
Joined: 9/1/2005 Last visit: 9/18/2024 Posts: 4104 Rating: (195) |
follow up question published byMahesh Nis split to a seperate thread with the subject CP340 MODBUS RTU-Communication - Questions to a specific solution Best regards CS Moderator |
My Forum is the place to personalize your profile, |
|
12/25/2013 11:24 AM | |
Joined: 12/1/2009 Last visit: 9/5/2024 Posts: 672 Rating: (147) |
Dear LKMNVRS, PTP stands for Point-to-Point and isa type of connection betweenthe CP and one field device.In order to connect to more than one fielddevices you need to use a multi-drop type connection. That's a kind of a networkconnection. MODBUS RTU is a protocol, you can simply see it as a"language" the devices can talk/communicate with each other. Soyou need to know about the physical interface on your VMS and the supported protocol(s). These Informationneed to match with theCP340 in order to establish the communication. The CP340 supports the below protocols: - 3964(R) - ASCII - Printer driver Modbus is nativly not supported by the CP340 but I have developed a software driver for it. That driver doessupportthe MODBUS MASTER RTU standard protocol and can be downloaded in this thread from one of myprevious posts (MBMA340.ZIP). Merry X-Mas to you and everybody. Best Regards. |
Last edited by: TIBI68 at: 12/25/2013 11:25 AMGive us your feedback and show us your respect! |
|
12/26/2013 7:12 AM | |
Joined: 12/1/2009 Last visit: 9/5/2024 Posts: 672 Rating: (147) |
Dear LKMNVRS, if your devices will act as aModbus RTU slave, yes my software will work. Just for clarification, the driver does not support Modbus ASCII (that's a different thing), only Modbus RTU. It uses the ASCII frame fortransmission, don't get confused. Best Regards. |
Give us your feedback and show us your respect! |
|
12/27/2013 8:15 AM | |
Joined: 12/1/2009 Last visit: 9/5/2024 Posts: 672 Rating: (147) |
Dear LKMNVRS , you are doing fine, you just need to call the MBMAREQ block with different slave address number. The LINK is the connection between the MBMAREQ and the MBMA340 block. So in your case you need to keep it the same. I would first connect one slave to the CP only and try to read one available register, Troubleshooting is a lot easier this way. Make sure the communication parameters match with all devices. If it's still not working, check the cableing. Good Luck! Best Regards. |
Last edited by: TIBI68 at: 12/27/2013 8:18 AMGive us your feedback and show us your respect! |
|
12/27/2013 12:14 PM | |
Joined: 12/1/2009 Last visit: 9/5/2024 Posts: 672 Rating: (147) |
Dear LKMNVRS, the LADDR := 256 is for the communication between the CPU and the CP through the standard SEND/RECEIVE blocks which are called internal from the MBMA340 block. Therefore the LADDR has to match witch the address configured for the CP340 in the HW-Config. That's it. This address does not specify where to store thedata from the slave. That you need to tell with the S7ADDR. Example for reading data from two slaves: CALL "MBMAREQ" , "MBMAREQ NO.1" // MODBUS MASTER REQUEST FUNCTION BLOCK LINK :="LINK_340" // I-LINK WORD (CONNECT TO MBMA340 FUNCTION BLOCK!) RW :=FALSE // I-FUNCTION = READ SLAVE :=1 // I-SLAVE NUMBER START :=L#43001 // I-START ADDRESS (43001) END :=L#43001 // I-END ADDRESS (43001) WRMODE:=FALSE // I-WRITE MODE = AUTO S7ADDR:="MBDB READ OUTPUT REGS".DATA_BYTE[0] // I-S7 ADDRESS FORMAT:=0 // I-NONE DONE :="DONE_340" // Q-DONE ERROR :="ERROR_340" // Q-ERROR STATUS:="STATUS_340" // Q-STATUS WORD CALL "MBMAREQ" , "MBMAREQ NO.2" // MODBUS MASTER REQUEST FUNCTION BLOCK LINK :="LINK_340" // I-LINK WORD (CONNECT TO MBMA340 FUNCTION BLOCK!) RW :=FALSE // I-FUNCTION = READ SLAVE :=2 // I-SLAVE NUMBER START :=L#43001 // I-START ADDRESS (43001) END :=L#43001 // I-END ADDRESS (43001) WRMODE:=FALSE // I-WRITE MODE = AUTO S7ADDR:="MBDB READ OUTPUT REGS".DATA_BYTE[100]// I-S7 ADDRESS FORMAT:=0 // I-NONE DONE :="DONE_340" // Q-DONE ERROR :="ERROR_340" // Q-ERROR STATUS:="STATUS_340" // Q-STATUS WORD The first request will store the data fromSLAVE 1from DATA BYTE 0onwards, and the second request will storethe data from SLAVE 2 fromDATA BYTE 100 onwards in the "MBDB READ OUTPUT REGS"data block. Sorry for the "sheep" in the post, but stands for 100. Itchanges automatically into a sheep whenI upload thispost. Best Regards. |
Give us your feedback and show us your respect! |
|
12/27/2013 3:28 PM | |
Joined: 12/1/2009 Last visit: 9/5/2024 Posts: 672 Rating: (147) |
Dear LKMNVRS, you are absolutly correct and understood the concept of the driver without any documentation. I beleive it is easy to use, even for somebody who does not understand much about modbus. Anyhow, the CRC generation/verification is taken care by the MBMA340 function block internally, so you don't have to worry about it. Let me know if it RUN's Best Regards. |
Give us your feedback and show us your respect! |
|
1/9/2014 10:35 AM | |
Joined: 12/1/2009 Last visit: 9/5/2024 Posts: 672 Rating: (147) |
Hi LKMNVRS, most probably you made a configuration/parameter mistake somewhere in your software. Here are some basic rules: - Each MBMAREQ block needs to have his own and unique instance data block. - The CP address at the MBMA340 block has tomatch with the address set in the HW-Config - The LINKfrom the MBMAREQ and MBMA340 has to be the same. If you still cannot find the erroryou canuploadthe software and I can have a quick look at it. Best Regards. . |
Give us your feedback and show us your respect! |
|
1/9/2014 5:52 PM | |
Joined: 12/1/2009 Last visit: 9/5/2024 Posts: 672 Rating: (147) |
Hi LKMNVRS, You moved the MBMA340 communication block from the interrupt OB intothe startup OB. How it will now communicate I don't know while it does not get executed after startup. The TX LED MUST FLASH at least! You can do one thing, move the MBMA340 block and put it after the MBMAREQ block in OB1. Does the CPU still goes intoSTOP mode? Did you copied all FB's from the example program? Try to make the example program running withyour CPU. You canuploador send me your program. I will send you my contact details in PM. Best Regards. |
Last edited by: TIBI68 at: 1/9/2014 6:05 PMGive us your feedback and show us your respect! |
|
1/10/2014 7:59 AM | |
Joined: 12/1/2009 Last visit: 9/5/2024 Posts: 672 Rating: (147) |
Hi LKMNVRS, so at least it is communicating now and we know about the causestopping the CPU. In order to modify the block calls I will need to edit end recompiletheSCL source. I beleive you cannot do anything unless movingyour driver blocks. Best Regards. |
Give us your feedback and show us your respect! |
|
1/10/2014 7:04 PM | |
Joined: 12/1/2009 Last visit: 9/5/2024 Posts: 672 Rating: (147) |
Dear LKMNVRS, you are welcome. If the softwaredoes thejob for you"RATE" it! I like to work with professionals Have a good time. Best Regards. |
Give us your feedback and show us your respect! |
|
This contribution was helpful to1 thankful Users |
6/17/2014 8:21 AM | |
Joined: 12/1/2009 Last visit: 9/5/2024 Posts: 672 Rating: (147) |
Hello LKMNVRSand welcome back! Regarding FB-Numbers I will make an exception for you and send you the program with other function block numbers. I kindly request you to send me a private message withan emailto which I can send the software. Regarding Modbus Function codes I believe that it it easier for a user just to handle with modbus addresses rather than function codes, especially for beginners.The MBMAREQ (FB10) will generate the corresponding modbus function code internally, sothe user does not needto keep themin mind. Number of Registers The number of registers is getting automatically calculated by the MBMAREQ function block as well. (END address register) minus (START address register) + 1 What now? I would request your slave supplier to provide you with a modbus address list. Then you just simply enter these addresses atthe MBMAREQ block which willdo the rest for you (generating the respective modbus function code and number of registers). Modbus cannot be easier. Maybe you can send me the address list and I will have a look at it. Best Regards. Conversion of the first two Modbus requests as per Data MAP (DB201) DB201 Slave Address: 3 Function Code: 2 Start Register: 0 No. of Registers: 200 = MBMAREQ (FB10) RW:=FALSE // I-FUNCTION = READ SLAVE :=3 // I-SLAVE NUMBER
START:=L#10001// I-START ADDRESS (10001) END :=L#10200// I-END ADDRESS (10200) DB201 Slave Address: 3 Function Code: 4 Start Register: 0 No. of Registers: 87 = MBMAREQ (FB10) RW:=FALSE // I-FUNCTION = READ SLAVE :=3 // I-SLAVE NUMBER START:=L#30001// I-START ADDRESS (30001) END :=L#30087// I-END ADDRESS (30087) Best Regards. |
Last edited by: TIBI68 at: 6/17/2014 11:39 AMLast edited by: TIBI68 at: 6/17/2014 11:38 AMData MAP conversion added Give us your feedback and show us your respect! |
|
Follow us on