登录
首页
串口通信
串口通信
回帖
发帖
正文
主题:威纶触摸屏编写发送modbus协议程序
点击:5365 回复:16
10楼
编辑
引用
管理
18362893419
对 自有协议,但你需要要编写发送和接受指令,里面用到了crc校验程序,不是很会编写
16-10-02 11:03
11楼
编辑
引用
管理
18362893419
有事例没编程
16-10-02 11:04
12楼
编辑
引用
管理
18362893419
用触摸屏通过驱动器控制电机正反转
16-10-02 11:05
13楼
编辑
引用
管理
guanyumou
引用
18362893419
在 2016/10/2 11:05:05 发言
【内容省略】
你的问题还没有解决吗?!
16-10-12 18:26
14楼
编辑
引用
管理
lmc4791
我做过威纶和STM32单片机通信,威纶PLC直接选择MODBUS RTU就可以了。
16-10-20 20:05
15楼
编辑
引用
管理
hj2881
crc指令宏指令那里可以直接调用的 不麻烦 话说都这么久了应该已经解决了吧~~~
16-10-29 11:19
16楼
编辑
引用
管理
lmc4791
//串口初始化9600,8,N,1
void uart_init(u32 pclk2,u32 bound)
{
float temp;
u16 mantissa;
u16 fraction;
temp=(float)(pclk2*1000000)/(bound*16);
mantissa=temp;
fraction=(temp-mantissa)*16;
mantissa<<=4;
mantissa+=fraction;
RCC->APB2ENR|=1<<2;
RCC->APB2ENR|=1<<14;
GPIOA->CRH&=0XFFFFF00F;
GPIOA->CRH|=0X000008B0;
RCC->APB2RSTR|=1<<14;
RCC->APB2RSTR&=~(1<<14);
USART1->BRR=mantissa;
USART1->CR1|=0X200C;
USART1->CR1|=1<<8;
USART1->CR1|=1<<5;
MY_NVIC_Init(3,3,USART1_IRQn,2);
}
void init_time3(u16 arr,u16 psc)
{
RCC->APB1ENR|=1<<1;
TIM3->ARR=arr; //éè?¨??êy?÷×??ˉ??×°?μ//??o?1ms
TIM3->PSC=psc; //?¤·??μ?÷72,μ?μ?1Mhzμ???êyê±?ó
TIM3->CR1|=1<<4; //?ò????êy
TIM3->DIER|=1<<0;
TIM3->DIER|=1<<6;
MY_NVIC_Init(1,3,TIM3_IRQn,2);//?à??1£?×óó??è??3£?×é2
}
void beginSend(u8* sendPosi,u8 sendCount)
{
//IO1CLR=q2;
TX_EN; //éè?a·¢?í
while(sendCount>0)
{
sendCount--;
USART1_TX(*(sendPosi++));
}
RX_EN;
receCount=0;
}
void readRegisters(void )
{
u8 sendCount;
u16 tempAddr;
u16 crcData;
u16 byteCount;
u8 i;
tempAddr=(receBuf[2]<<8|receBuf[3])*2;
byteCount=(receBuf[4]<<8|receBuf[5])* 2;
sendBuf[0] = localAddr;
sendBuf[1] = 3;
sendBuf[2] = (u8)byteCount;
for(i=0;i
{
sendBuf[i+3] = syscanshu[tempAddr];
}
byteCount += 3;
crcData = crc16(sendBuf,byteCount);
sendBuf[byteCount] = crcData >> 8;
byteCount++;
sendBuf[byteCount] = crcData & 0xff;
sendCount = byteCount + 1;
beginSend(sendBuf,sendCount); //
}
void presetMultipleRegisters(void)
{
u8 sendCount;
u16 tempAddr;
u8 byteCount;
u16 crcData;
u8 i;
tempAddr = (receBuf[2]<<8|receBuf[3])*2;//ìáè???′??÷??êy
sendBuf[0] = localAddr;
sendBuf[1] = 16;
sendBuf[2] = receBuf[2];
sendBuf[3] = receBuf[3];
sendBuf[4] = receBuf[4];
sendBuf[5] = receBuf[5];
byteCount = receBuf[6];
for(i=0;i
{
syscanshu[tempAddr]=receBuf[i+7];
}
crcData = crc16(sendBuf,6);
sendBuf[6] = crcData >> 8;
sendBuf[7] = crcData & 0xff;
sendCount = 8;
beginSend(sendBuf,sendCount);
}
/*******************************************************
* ?? 3?£osetRegisterVal()
* 1| ?ü£oéè??μ¥????′??÷
* è??ú2?êy£o?T
* 3??ú2?êy£o?T
********************************************************/
void setRegisterVal(void)
{
u8 sendCount;
u16 tempAddr;
u16 crcData;
tempAddr = (receBuf[2]<<8|receBuf[3])*2;
syscanshu[tempAddr]=receBuf[4];
syscanshu[tempAddr+1]=receBuf[5];
sendBuf[0] = localAddr;
sendBuf[1] = 6;
sendBuf[2] = receBuf[2];
sendBuf[3] = receBuf[3];
sendBuf[4] = receBuf[4];
sendBuf[5] = receBuf[5];
crcData = crc16(sendBuf,6);
sendBuf[6] = crcData >> 8;
sendBuf[7] = crcData & 0xff;
sendCount = 8;
beginSend(sendBuf,sendCount);
}
/*******************************************************
* ?? 3?£ocheckComm0Modbus()
* 1| ?ü£o?ì2a′??úêy?Y
* è??ú2?êy£o?T
* 3??ú2?êy£o?T
********************************************************/
void checkComm0Modbus(void)
{
u16 crcData;
u16 tempData;
if(receBuf[0]==localAddr)
{
if(receBuf[1]==3||receBuf[1]==6)
{
crcData = crc16(receBuf,6);
if(crcData == receBuf[7]+(receBuf[6]<<8))
{//D£?é?yè·
switch(receBuf[1])
{
case 3:LED3=0;readRegisters();break;//?áè?±£3???′??÷(ò????ò?à??)//?áè?±£3???′??÷(ò????ò?à??)
case 6:LED3=1;setRegisterVal();break;//éè??μ¥????′??÷
}
}
}
if(receBuf[1]==16)
{
tempData = (receBuf[4]<<8) + receBuf[5];
tempData = tempData * 2; //êy?Y??êy
tempData += 9;
if(receCount >= tempData)
{// IO1CLR=q2;
crcData = crc16(receBuf,tempData-2);
if(crcData == (receBuf[tempData-2]<<8)+ receBuf[tempData-1])
{
presetMultipleRegisters();
}
}
}
}
}
20-07-16 19:38
上一页
上一页
工控新闻
「壳」动新智,聚势而行:AVEVA与中海壳牌举办高层会谈,共谋行业发展新动能
优必选Walker S2全球首个实现自主换电,7*24小时打工的人形机器人要来了
新时达完成董事会选举换届 并聘任刘长文为总经理
GTF 聚焦展直击:EVIDENT 工业内窥镜系列为燃气轮机安全护航
零碳园区成为新风口,创维光伏引领从0到1创新实践
工业智能体究竟价值几何?
中控技术亮相"化工届奥林匹克",创始人褚健发表《人工智能发展加速流程工业智能化》演讲
“国产PLC+工控鸿蒙”亮相第二十一届“工业自动化与标准化”研讨会
更多新闻资讯