大家好,
我有一个倾斜仪,它使用十六进制字符进行轮询和后续响应。我在试图找出如何用正确的“”轮询传感器时遇到了一些问题;字符串“;从CR1000输出。传感器有三个轴,我对轴2感兴趣,它是7F 01 83的轮询命令。7F是传感器地址,01是以字节为单位的消息长度,减去地址和长度,83是用于发送轴2数据的命令。我可以将传感器连接到我的电脑,使用ProComm中的元密钥编程,我可以发送十六进制命令并查看响应,这样我就知道传感器工作正常。我试过很多不同的“;字符串”;到目前为止无法获得正确的组合。任何帮助都将不胜感激。
谢谢
岛民
嗨,岛,
我一直在做一个类似的项目。我需要通过CR1000调整Omega过程控制器的设定点值。该控制器还使用十六进制字符串发送和接收数据。我设法编写了一个可以读写设定点的软件,尽管我看到了一些需要解决的编码问题。
我使用MD485多点连接到控制器隔离的RS485接口。
如果你想看看我疯狂的方法,这里有一个控制器通信手册的链接。http://www.omega.com/manuals/manualpdf/M3397.pdf
请记住,这段代码只是一个开始,它需要更多的工作,但确实可以读取和写入设置点,到目前为止是一个良好的开始。
史蒂夫
‘Omega控制器至MD485接线
'Rx至MD485端子B
'发送至MD485端子A
'Rtn到MD485接地。
'
公共DecString
公开表达
公用SetPoint_psig为长
Public SetPressure_Flag As Long(公用设置压力滞后为长)如果设置了标志,则设置压力。
Public ReadSetPoint_Flag As Long(公共读取设置点延迟为长时间)如果设置了Flag(标记),则读取当前设置点。
公共错误_延迟为长
'
公共十六进制字符串为字符串*10
公共输出字符串为字符串*10
公共InString作为字符串*10
公共组合为字符串*10
'
Public SetInjPres_psig As Long(公共设置InjPres_prig为长值)用于设置喷射压力。
常数CR=CHR(13)
'==================================================================================================================
子读数设定值
串行冲洗(ComSDC8)
InString=“";
输出字符串=“*01R01“+铬
串行输出(ComSDC8,OutString,“”,0100)
串行输入(InString,ComSDC810,13100)
DecString=十六进制到十二进制(InString)
SetPoint_psig=十进制字符串-1048576
EndSub公司
'===读取和写入Omega控制器设置点的子程序=====================================================
子写入设定点
串行冲洗(ComSDC8)
组合=“*01W01“+六进制字符串+CR
串行输出(ComSDC8,组合,“”,0100)
延迟(1100毫秒)
组合=“*01Z02“+铬
SerialOut(ComSDC8,Combined,“”,0100)'发出控制器复位命令。
EndSub公司
'===括号允许的范围为100到1500+======================================================================
子转换器InjPres
错误_滞后=0
如果SetInjPres_psig>;99与设置InjPres_psig<;1501然后
表达式=1048576+设置InjPres_psig
HexString=十六进制(表达式)
其他的
错误_滞后=1
结束如果
EndSub公司
'==================================================================================================================
'==================================================================================================================
开始进度
SerialOpen(ComSDC8,-9600,0100,50)'为MD485打开通信端口>>;欧米茄控制器。
扫描(5,秒,0,0)'每5秒测量一次。
'--检查读写标志-----------------------------------------------------------------------------------
如果设置压力滞后=1,则
转换器输入压力
如果Error_Flag=0,则
写入设定点
读取设定值
结束如果
设定压力滞后=0
结束如果
如果ReadSetPoint_Flag=1,则
读取设定值:ReadSetPoint_Flag=0
结束如果
下一次扫描'转到扫描。
'------------------------------------------------------------------------------------------------------------------
EndProg'结束程序。