AdvancedHMI Software
General Category => Support Questions => Topic started by: aquilmustafa on January 05, 2017, 07:25:49 AM
-
Hi All,
Happy New Year every one.
Recently i'm trying to get connected to Omron CP1-E PLC using Serial Host-Link with AdvanceHMI V3.99S. Problem is whenever i try to get connected it throws Error "No response from PLC. Ensure baudrate is correct".
The parameters on OmronSerailHostLinkCom1 is 9600,7,E,2 with node address 0, unit address 0 the same is in PLC
I've tried using serial cable with connection as 2-3-9 on PLC side with looping 4-5 and on PC side 3-2-9 as it works with HMI but with same result as displayed above
Then i got another cable connection details saying 2-3-9 with looping 4-5 and on PLC side and on PC side 2-3-5 with looping 4-6 and 7-8 tried that too but with same result
I'm confused as to weather its as problem of serial communication cable or the PLC protocol settings are wrong.
Please guide me.
-
Is your programming software on the same PC? If so, is it completely shut down to allow AdvancedHMI to get access to the COM port?
-
Hi Archie,
No my Programming software is on a different Computer.
-
This is the RS232 cable I use for testing on the CP1H:
PC ------PLC
2---------2
3---------3
5---------9
9 pin female on PC side and 9 pin male on PLC side
No jumpers
To verify my COM settings, I use the Auto-Online of CX-Programmer to let it find the correct settings to put in AdvancedHMI
-
Hey Archie,
Thanks for the speedy response. I'll try using Auto-Online of CX-Programmer to let it find the correct settings to put in AdvancedHMI and let you know the output.
-
Hey Archie,
I've got the serial port parameters. They are Data Bit = 7,Parity = Even,Stop Bit = 2.
These parameters are same as I've set them previously.
-
When you did the Auto-Online with CX-Programmer, was it the same PC as you are trying to run AdvancedHMI on?
-
yes...
-
Hey Archie,
Sorry my serial cable was cross and your diagram shows a straight one. Let me please try it out.
-
Hi Archie,
I got to test the CP1-E with Serial Host Link protocol today. I've checked and double checked the cable with the diagram you specified. But I'm getting same "Check Baud Rate" error. Kindly advise.
-
Hey Archie,
Thanks for the support. I finally got connected. I changed the serial wire connection
Loop in 4 & 5 on PLC side and looping 4 & 6 and 7 & 8 from pc side.
-
Hey guys,
Just wanted to know how to read W0.0 and C000 i,e. Register to read and write and counter
It pops an error of header.
-
What code do you have on line 191? I checked the latest version and line 191 wouldn't be able to throw that exception.
Do you have TreatAsHex property set to True?
-
Hey Archie,
Yes i have enabled "TreatDataAsHex = TRUE".
The HostLinkBaseCom.vb of AdvanceHMI3.99s has a function:
Public Overrides Function BeginWrite(ByVal address As MfgControl.AdvancedHMI.Drivers.Omron.OmronPlcAddress, ByVal dataToWrite() As String) As Integer
where you will fnd the below code:
If address.BitsPerElement = 16 Then
Dim x(1) As Byte
For i As Integer = 0 To dataToWrite.Length - 1
If m_TreatDataAsHex Then
Dim data As Integer
Try
data = Convert.ToUInt16(dataToWrite(i), 16)
Catch ex As Exception
Throw New MfgControl.AdvancedHMI.Drivers.Common.PLCDriverException("Invalid hexadecimal value " & dataToWrite(i))
End Try
x(0) = CByte(data And 255)
x(1) = CByte(data >> 8)
Else
x = BitConverter.GetBytes(CUShort(dataToWrite(i)))
If address.IsBCD Then
'* Convert to BCD
x(1) = CByte(CUShort(Math.Floor(CDbl(dataToWrite(i)) / 100)))
x(0) = MfgControl.AdvancedHMI.Drivers.Common.CalculationsAndConversions.HexToByte(Convert.ToString(CUShort(dataToWrite(i)) - (x(1) * 100)))
x(1) = MfgControl.AdvancedHMI.Drivers.Common.CalculationsAndConversions.HexToByte(Convert.ToString(x(1)))
End If
End If
'* Bitconverter uses LittleEndian
'* Omron uses BigEndian, so reverse
dataPacket.Add(x(1))
dataPacket.Add(x(0))
Next
Else
The line in red colour is the error thrown whenever i try to write the String Values to CP1-E PLC
Apart from that i'm even unable to convert the String values read from PLC from hex to string readable format. I've written the code as below:
Public Sub convertToString()
Label4.Text = "" 'Label4.Text shows converted value read from PLC
Try
Dim st As String = Label1.Text 'Label1.Text has the hexa value read from PLC
Dim com As String = ""
For x = 0 To st.Length - 1 Step 2
Dim k As String = st.Substring(x, 2)
com &= System.Convert.ToChar(System.Convert.ToInt32(k, 16)).ToString
Next
'Label4.Text = Trim(com)
Dim s(12) As Char
s = com.ToCharArray()
For i = 0 To s.Length - 1
TextBox2.Text += com
Next
Catch ex As Exception
'MsgBox(ex.Message)
'Label4.Text = ex.Message
End Try
End Sub
The values comes to s but then i'm unable to show them in Textbox or label.
Apart from that I've buttons whose register values are W25.01, W25.02 and etc. I've tried them with buttons control of AHMI, I've tried writing them in code on button click event. But it always pops a error msg of some Header mismatch should be 2 char or something like that. I've tried using WP also instead of W but with no result.
Please Help me resolve these Problems..
-
What is the complete error, you are getting? I can't find where you posted it previously. It should be something like this:
Invalid hexadecimal value xyz
-
Try adding this code to OmronBaseCom and using them:
Public Function ReadAsString(ByVal startAddress As String, ByVal numberOfElements As Integer) As String
Dim values() As String = Read(startAddress, numberOfElements)
Return MfgControl.AdvancedHMI.Drivers.Common.CalculationsAndConversions.WordsToString(values)
End Function
Public Sub WriteAsString(ByVal startAddress As String, ByVal stringToWrite As String)
If Not String.IsNullOrEmpty(stringToWrite) Then
Dim Values() As Integer = MfgControl.AdvancedHMI.Drivers.Common.CalculationsAndConversions.StringToWords(stringToWrite)
Dim ValuesAsString(Values.Length - 1) As String
For i = 0 To ValuesAsString.Length - 1
ValuesAsString(i) = CStr(Values(i))
Next
Write(startAddress, ValuesAsString)
End If
End Sub
-
Hey Archie,
Thanks for the solution. I'll be able to test that tomorrow.
Do you have any work around solution for reading and writing W0.00 also.
Many thanks for the prompt solution.