合信論壇

快捷導航
查看: 16614|回複: 2
打印 上一主題 下一主題

怎麼(me)使用Codesys系統自帶的串行口庫?(自由協議)

[複制鏈接]
樓主
跳轉到指定樓層
發(fā)表于 2019-8-22 16:13:54 | 隻看該作者 |隻看大圖 回帖獎勵 |倒序浏覽 |閱讀模式
如果你需要使用C35/C36/C37的RS485口做自由口協議收發(fā)用,可以使用Codesys自帶串口庫,如下是使用的教程。

首先要使用自帶串口庫,有一些參數需要我們在程序中設定,如下是codesys中的英文幫助說明。(沒(méi)有中文的,抱歉哈)


In order to configure the COM port a pointer on an array of COM.PARAMETER is transmitted. The array contains pairs of parameter IDs and associated values corresponding to the configuration parameters.
These constants depend on the platform and the implementation. The following constants are Windows specific in terms of their employment within the implementation of SysCom. The table indicates which member of the Windows structure DCB the parameter is assigned to.
Id
Name  of CAA.Parameter_Constants
corresponds to DCB value
0x00000001
udiPort
Port number(C35、C36、C37串口 應固定爲2)
0x00000002
udiStopBits
StopBits (停止位)
COM.ONESTOPBIT      0   1 stop bit
COM.ONE5STOPBITS     1   1.5 stop bits
COM.TWOSTOPBITS      2   2 stop bits
0x00000003
udiParity
Parity(奇偶校驗位)
COM.EVEN     0   even
COM.ODD      1   odd
COM.NONE     2   none
0x00000004
udiBaudrate
Baudrate  波特率   9600  19200 115200等等
0x00000005
udiTimeout
Timeout
0x00000006
udiBufferSize
Buffersize of the serial interface
0x00000007
udiByteSize
Number of data bits/BYTE, 4-8
0x00000008
udiBinary
binary mode, no EOF check
0x00000009
udiOutxCtsFlow
CTS handshaking on output
0x0000000A
udiOutxDsrFlow
DSR handshaking on output
0x0000000B
udiDtrControl
DTR Flow control
0x0000000C
udiDsrSensitivity
DSR Sensitivity
0x0000000D
udiRtsControl
Rts Flow control
0x0000000E
udiTXContinueOnXoff
XOFF continues Tx
0x0000000F
udiOutX
XON/XOFF out flow control
0x00000010
udiInX
XON/XOFF in flow control
0x00000011
udiXonChar
Tx AND Rx XON character
0x00000012
udiXoffChar
Tx AND Rx XOFF character
0x00000013
udiXonLim
Transmit XON threshold                              
0x00000014
udiXoffLim
Transmit XOFF threshold


爲了配置COM端口,需要用戶去配置com.parameter指針數組中的參數。該數組包含參數ID和對(duì)應于配置參數的關聯值。
這(zhè)些常量依賴于平台實現。以下常量是Windows在syscom實現過(guò)程中的特定用途。該表指示將(jiāng)參數分配給Windows結構DCB成(chéng)員。

首先在程序中,需要先對(duì)串口進(jìn)行參數初始化。

在全局變量中變量
VAR_GLOBAL
        aCom1Params: ARRAY[1..7] OF COM.PARAMETER;
        udiListLength: USINT;
        Frist: BOOL := 1;
END_VAR


進(jìn)行參數初始化賦值
IF Frist THEN
        aCom1Params[1].udiParameterId := COM.CAA_Parameter_Constants.udiPort;
        aCom1Params[1].udiValue := 2;
        aCom1Params[2].udiParameterId := COM.CAA_Parameter_Constants.udiStopBits;
        aCom1Params[2].udiValue := COM.STOPBIT.ONESTOPBIT;//停止位
        aCom1Params[3].udiParameterId := COM.CAA_Parameter_Constants.udiParity;
        aCom1Params[3].udiValue := COM.PARITY.NONE;//檢驗位
        aCom1Params[4].udiParameterId := COM.CAA_Parameter_Constants.udiBaudrate;
        aCom1Params[4].udiValue := 19200;//波特率
        aCom1Params[5].udiParameterId := COM.CAA_Parameter_Constants.udiTimeout;
        aCom1Params[5].udiValue := 0;
        aCom1Params[6].udiParameterId := COM.CAA_Parameter_Constants.udiByteSize;
        aCom1Params[6].udiValue := 8;
        aCom1Params[7].udiParameterId := COM.CAA_Parameter_Constants.udiBinary;
        aCom1Params[7].udiValue := 0;
        udiListLength := SIZEOF(aCom1Params)/SIZEOF(COM.PARAMETER);
        Frist:=0;
END_IF



運行上述程序即完成(chéng)串口初始化,因爲涉及到codesys串口庫,所以在工程中添加Serial_Communication庫。


打開(kāi)串口,生成(chéng)COM連接的句柄。(生成(chéng)的句柄在讀和寫的操作中,需要調用到。)

如下是串口讀寫的操作指令,COM.Open和COM.Write

建立發(fā)送數組和接收緩存數組,將(jiāng)地址指針賦值到讀和寫的輸入端,即可完成(chéng)讀寫操作。
如下是與串口工具的調試過(guò)程截屏:

接收緩存區全是0

串中工具發(fā)送數據。

每隔1秒去讀緩存區,讀到報文後(hòu)讀的庫會顯示收到的報文字節長(cháng)度。

這(zhè)是寫的數組,裡(lǐ)邊存了發(fā)送的值。

以上是串口工具接收到PLC發(fā)的報文。





Serial485.project

159.23 KB, 下載次數: 1939

分享到:

0

主題

1

帖子

18

積分

新手上路

Rank: 1

積分
18
沙發(fā)
發(fā)表于 2020-3-21 23:30:54 | 隻看該作者
今天測試了一下485串口自由口的的調試,用調試軟件分别與PLC和掃碼槍測試都(dōu)正常,可是掃碼槍與PLC測試時發(fā)現數據總是少幾個,這(zhè)個是什麼(me)情況,希望能(néng)得到幫助
回複

使用道(dào)具 舉報

闆凳
 樓主| 發(fā)表于 2020-3-23 09:22:19 | 隻看該作者
szons2019 發(fā)表于 2020-3-21 23:30
今天測試了一下485串口自由口的的調試,用調試軟件分别與PLC和掃碼槍測試都(dōu)正常,可是掃碼槍與PLC測試時發(fā) ...

少的數據是中間的,還(hái)是最後(hòu)幾個?
回複

使用道(dào)具 舉報

您需要登錄後(hòu)才可以回帖 登錄 | 立即注冊

本版積分規則

客服熱線
400-700-4858 周一至周五:09:00 - 18:00
深圳市南山區打石一路深圳國(guó)際創新谷6棟A座9層

深圳市合信自動化技術有限公司(簡稱“合信技術”)成(chéng)立于2003年,高新技術企業,專注于工業自動化産品的研發(fā)、生産、銷售和技術服務,依靠高質量、高性能(néng)的自動化控制産品與方案爲客戶創造最大價值,立志于成(chéng)爲全球領先的工業自動化解決方案供應商。

Archiver|手機版|小黑屋|COTRUST Inc. ( 粵ICP備13051915号 )

GMT+8, 2024-3-30 08:03 , Processed in 0.095144 second(s), 21 queries .

快速回複 返回頂部 返回列表