緣分2013
級別: 探索解密
|
RT,小弟由于剛接觸VB不久,用VB6.0與FX2N通訊,向PLC的D寫入值老是不對,不知道是不是格式不對,我是利用MSComm控件通訊的。。。outstring = Chr(&O2) + "1" + CStr(qiuhe) + "02" + CStr(xieru) + Chr(&O3) + hejiaoyan |
---|---|
|
zsm9614501
級別: 略有小成
|
VB6.0與FX2N通訊連接,可以用三凌MX-COMPONENT中的通訊控件,很容易連接的 |
|
---|---|---|
|
tk758
級別: 略有小成
|
Private Sub Command1_Click() '寫入D0=0 Dim Address As String Dim SenData As String MSComm1.Settings = "9600,E,7,1" MSComm1.InputMode = comInputModeText Address = "1" + "1000" + "02" + "0000" + Chr(3) SenData = Chr(2) & Address & SumChk(Address) MSComm1.PortOpen = True MSComm1.Output = SenData End Sub Private Function SumChk(Dats$) As String 'CheckSum Dim i& Dim CHK& For i = 1 To Len(Dats) CHK = CHK + Asc(Mid(Dats, i, 1)) Next i SumChk = Right(Hex$(CHK), 2) End Function |
---|---|
|
緣分2013
級別: 探索解密
|
回復3樓,為什么我把"0000"改成0001實際寫進去的數據是256,改成0002寫進去的數據是512,0000是需要寫進去的數據的16進制數據還是其他的關系? |
---|---|
|
tk758
級別: 略有小成
|
寫入的數據16進制數據, 是先寫低字節, .再寫高字節. 因此如寫"1"進去PLC, 應寫成"0100", 寫"255"進去PLC, 應寫成"FF00" |
---|---|
|
緣分2013
級別: 探索解密
|
謝謝你呀,昨天通過你這個代碼和我自己的結合找出了這個規律,現在還有個問題請教下,怎樣把動態的text.text賦給一個變量,意思就是通過一個函數比如說date(P),p是text的下標,然后把textp。text賦給一個變量,能實現嗎? |
---|---|
|
tk758
級別: 略有小成
|
‘可用數組變量 Dim strText(10) As String Private Sub Form_Load() For i = 0 To 10 strText(i) = Text1.Text & i List1.AddItem strText(i) Next i End Sub |
---|---|
|
緣分2013
級別: 探索解密
|
嗯,真的非常感謝你呀,還有個問題困擾了我好久了 Private Sub Timer2_Timer() MSComm1.InBufferCount = 0 '設置讀緩沖區為空 MSComm1.OutBufferCount = 0 '設置寫緩沖區為空 outstring1 = Chr(&O2) + "0" + "0080" + "02" + Chr(&O3) + SUM_check1("0080", "02") MSComm1.Output = outstring1 Do DoEvents Loop Until MSComm1.InBufferCount >= 8 End Sub 把這個放在timer事件里面進行掃描,但是我用其他按鈕的單擊事件比如說 MSComm1.Output = Chr(&O2) + "7" + "0008" + Chr(&O3) + SUM_check2(7, "0008") 經常出現timer事件卡死,不知道是不是在使用單擊事件的時候跟 Do DoEvents Loop Until MSComm1.InBufferCount >= 8 產生死循環,但是沒有這個釋放控制權的又無法正常掃描狀態,指導下。。。 |
---|---|
|