更新下,COM写数据测试OK。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PROGRAM COM1_W
VAR
//实例化
como1 : COM.Open;
comc1 : COM.Close;
comw1 : COM.Write;
//com参数,COM1,9600,8 N 1,超时5,000,000us 5S?)
aParamsB9600 : ARRAY [1..7] OF COM.PARAMETER:=[
(udiParameterId := COM.CAA_Parameter_Constants.udiPort, udiValue := 1),
(udiParameterId := COM.CAA_Parameter_Constants.udiBaudrate, udiValue := 9600),
(udiParameterId := COM.CAA_Parameter_Constants.udiParity, udiValue := COM.PARITY.NONE),
(udiParameterId := COM.CAA_Parameter_Constants.udiStopBits, udiValue := COM.STOPBIT.ONESTOPBIT),
(udiParameterId := COM.CAA_Parameter_Constants.udiTimeout, udiValue := 5000000),
(udiParameterId := COM.CAA_Parameter_Constants.udiByteSize, udiValue := 8),
(udiParameterId := COM.CAA_Parameter_Constants.udiBinary, udiValue := 1)
];
//打开COM口
COM1_OPEN: BOOL;
//写COM
COM1_W:BOOL;
sWrite : STRING := '123456789ABCDEF AA';
COMW1_SZDATA: UINT := 10;
//读COM
sRead : STRING(25);
szRead : CAA.SIZE;
END_VAR
程序部分:
//打开COM口,
como1(usiListLength := SIZEOF(aparamsb9600)/SIZEOF(COM.PARAMETER), pParameterList := ADR(aparamsb9600), xExecute := COM1_OPEN,);
//写COM
comw1(hCom := como1.hCom,pBuffer := ADR(sWrite),szSize := COMW1_SZDATA,xExecute := como1.xDone);
//写正常自己关闭串口
comc1(hCom := como1.hCom,xExecute := comw1.xDone);
//关闭完成以后,清除各种标志
IF comc1.xDone THEN
COM1_OPEN:=FALSE;
END_IF
读还不知道如何下手呢,PLC我知道的是,串口发送数据到PLC,PLC有个数据准备好标志,PLC程序处理转换就OK了。。CODESYS没有头绪,F1然并卵